web-dev-qa-db-ja.com

デフォルトでAdminに投稿の抜粋を表示する方法

管理者のデフォルトでは、抜粋は非表示です。下記参照。

By default in the admin the Excerpt is hidden 

デフォルトで表示させたいのですが。

3

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
}
2
David

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 );
2
Dedering

ユーザーメタは未チェックのメタボックスを配列として格納しますが、ユーザーが元のデフォルトを変更していない場合は何も格納せず、代わりに空白の文字列を返します。説明されていない場合、これはログイン時にエラーになりますので、私はすべての拠点をカバーするために追加の関数とフックを追加しました。何も返されなかった場合でもエラーにならないように、チェックされていない変数を条件付きでラップしました。 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 );
0
Chris B