投稿記事を書く時、通常の運用では集中執筆モードがデフォルトでオンになっており、表示オプションで集中執筆モードのチェックを外してオフにしても次にログインするとオンに戻ってしまう。
これをデフォルトではオフの状態にする方法。
functions.php
その1(こちらの方が記述がシンプル)
このコードは、エディターの自動拡張を無効にします。
function disable_editor_expand() {
if ( is_admin() ) {
wp_add_inline_script(
'wp-blocks',
'wp.data.dispatch("core/edit-post").removeEditorPanel("editor-post-publish-panel");'
);
}
}
add_action('admin_enqueue_scripts', 'disable_editor_expand');
その2(ログインするたびにオフにする記述)
/* ---------------------------------------------------------------------------------------
◆◆◆ 集中執筆モードをデフォルトでOFFにする ###########################################
------------------------------------------------------------------------------------------*/
function do_disable_editor_expand( $user_id ) {
global $wpdb;
$meta_key = $wpdb->prefix . 'user-settings';
$_prev_user_settings = get_user_meta( $user_id, $meta_key, true );
$_user_settings = explode( '&', $_prev_user_settings );
$_is_override = false;
foreach( $_user_settings as $_i => $_buff ) {
list( $_key, $_val ) = explode( '=', $_buff );
if ( 'editor_expand' === $_key ) {
$_val = 'off';
$_is_override = true;
}
$_user_settings[$_i] = $_key . '=' . $_val;
}
if ( ! $_is_override ) {
$_user_settings[] = 'editor_expand=off';
}
update_user_meta( $user_id, $meta_key, implode( '&', $_user_settings ), $_prev_user_settings );
}
function custom_login_redirect( $redirect_to, $requested_redirect_to, $user ) {
if ( ! is_wp_error( $user ) ) {
global $user;
if ( isset( $user->ID ) ) {
do_disable_editor_expand( $user->ID );
}
}
return $redirect_to;
}
add_filter( 'login_redirect', 'custom_login_redirect', 10, 3 );
function custom_user_register( $user_id ) {
do_disable_editor_expand( $user_id );
}
add_action( 'user_register', 'custom_user_register' );