默认情况下如何在管理中显示帖子摘录?

时间:2017-08-06 作者:Stephen Sabatini

默认情况下,在管理中,摘录是隐藏的。见下文。

By default in the admin the Excerpt is hidden

我想让它默认显示。

4 个回复
最合适的回答,由SO网友:Frank P. Walentynowicz 整理而成

中未选中框的名称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 未选中框名称数组中的名称。

Note: 为了避免丢失更改,请创建一个子主题并将代码放入functions.php.

SO网友:Dedering

分享对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 );

SO网友:David

这两种解决方案都不适用于我,但这种“管道胶带”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
}

SO网友:Chris B

虽然user meta将未选中的元框存储为数组,但如果用户没有修改原始默认值,它不会存储任何内容,而是返回一个空白字符串。这会导致登录时出错(如果不考虑),因此我添加了一个额外的函数&;钩住所有底座。我还用一个条件包装了未检查的变量,以确保在没有返回任何内容时不会出错。幸亏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 );

结束