Screen Options
画面のEdit Post
のチェックされていないボックスの名前は、個々のユーザーごとに、ユーザーのメタに配列として格納されます。テーマのfunctions.php
に次のコードを挿入します。
function wpse_edit_post_show_excerpt( $user_login, $user ) {
$unchecked = get_user_meta( $user->ID, 'metaboxhidden_post', true );
$key = array_search( 'postexcerpt', $unchecked );
if ( FALSE !== $key ) {
array_splice( $unchecked, $key, 1 );
update_user_meta( $user->ID, 'metaboxhidden_post', $unchecked );
}
}
add_action( 'wp_login', 'wpse_edit_post_show_excerpt', 10, 2 );
これはチェックされていないボックス名の配列からpostexcerpt
名を削除することによって(ログイン成功後に)ユーザーのメタを更新します。
注 :変更を失わないようにするには、子テーマを作成してコードをfunctions.php
に入れます。
どちらの解決策も私にはうまくいきませんでした - しかし、この "ダクトテープ" CSS修正は私にはうまくいきました:
/* always show excerpt .. hide display options */
add_action('admin_head', 'myplugin_modify_admin_header');
function myplugin_modify_admin_header() {
?>
<style type='text/css'>
#postexcerpt { display: block !important; }
label[for=postexcerpt-hide] { display: none !important; }
</style>
<?php
}
Franksの解決策を少し修正したものを共有します。私の場合は、ユーザーに抜粋を隠してほしくないので、関数をadmin_init
ではなくwp_login
にフックしました。
Frankの機能は、ユーザーがサイトにログインしたときに実行されます。つまり、ユーザーがログインすると、再びそのサイトを隠すことができます。この解決策は管理者ページがロードされるたびに起動し、ユーザーがフィールドを隠すことは不可能になります。
function wpse_edit_post_show_excerpt() {
$user = wp_get_current_user();
$unchecked = get_user_meta( $user->ID, 'metaboxhidden_post', true );
$key = array_search( 'postexcerpt', $unchecked );
if ( FALSE !== $key ) {
array_splice( $unchecked, $key, 1 );
update_user_meta( $user->ID, 'metaboxhidden_post', $unchecked );
}
}
add_action( 'admin_init', 'wpse_edit_post_show_excerpt', 10 );
ユーザーメタは未チェックのメタボックスを配列として格納しますが、ユーザーが元のデフォルトを変更していない場合は何も格納せず、代わりに空白の文字列を返します。説明されていない場合、これはログイン時にエラーになりますので、私はすべての拠点をカバーするために追加の関数とフックを追加しました。何も返されなかった場合でもエラーにならないように、チェックされていない変数を条件付きでラップしました。 Role-Editor 追加機能のおかげで/に感謝します。
function wpse_edit_post_show_excerpt() {
$user = wp_get_current_user();
$unchecked = get_user_meta( $user->ID, 'metaboxhidden_post', true );
if(!empty($unchecked)){
$key = array_search( 'postexcerpt', $unchecked );
if ( FALSE !== $key ) {
array_splice( $unchecked, $key, 1 );
update_user_meta( $user->ID, 'metaboxhidden_post', $unchecked );
}
}
}
add_action( 'admin_init', 'wpse_edit_post_show_excerpt', 10 );
function show_excerpt_meta_box($hidden, $screen) {
if ( 'post' == $screen->base ) {
foreach($hidden as $key=>$value) {
if ('postexcerpt' == $value) {
unset($hidden[$key]);
break;
}
}
}
return $hidden;
}
add_filter( 'default_hidden_meta_boxes', 'show_excerpt_meta_box', 10, 2 );