创建/编辑自定义的“后期状态”

时间:2018-11-03 作者:RozzA

我希望能够轻松创建/编辑我自己的自定义“帖子状态”,以便在页面后端显示。

我只希望此文本出现在页面名称之后,而不希望出现在状态下拉列表或其他任何位置。

WooCommerce、Elementor&;许多其他插件为自己内部创建的页面执行此操作,如果存在预先存在的状态,它们甚至会连接起来,例如:
post-state example<然而,我似乎找不到任何地方可以轻松编辑此文本或添加我自己的文本。

This question 是我能找到的唯一一个post-state 虽然提供的答案可能有效,但它们依赖于我的编辑功能。每次我想添加/更改文本,甚至页面id更改时,我都会处理php和代码。

我更喜欢一些更简单的东西:列表中的每个页面都有一个“编辑帖子状态”按钮,它只会带来一个文本框,我可以为我想要的任何页面输入新的或更改现有的文本。

到目前为止,在wordpress上搜索插件失败。org(只有结果用于突出显示WP内置状态,如“草稿”,添加预设状态,如“存档”,或创建整个新状态Post Status 显示在下拉列表中的;其他地方。)

如果有其他类型的插件/代码可以提供相同的功能,这也是可以接受的-基本上我希望能够添加一个简短的管理员专用描述,以便区分不起眼的页面名称*,而不必更改实际的页面名称本身。

*例如,当我尝试使用几个不同的插件生成相同的页面名称时,例如。My Account, 或者,如果我想要一个沙盒页面,但仍然将其命名为与我的正确页面相同的名称

1 个回复
SO网友:مجدى طه

_post\\U状态(WP\\U post$post)

参数#参数

$岗位(WP\\U岗位)(必填)

Code Reference from wordpress.org (https://developer.wordpress.org/reference/functions/_post_states/)

function _post_states($post) {
$post_states = array();
if ( isset( $_REQUEST[\'post_status\'] ) )
    $post_status = $_REQUEST[\'post_status\'];
else
    $post_status = \'\';

if ( !empty($post->post_password) )
    $post_states[\'protected\'] = __(\'Password protected\');
if ( \'private\' == $post->post_status && \'private\' != $post_status )
    $post_states[\'private\'] = __(\'Private\');
if ( \'draft\' === $post->post_status ) {
    if ( get_post_meta( $post->ID, \'_customize_changeset_uuid\', true ) ) {
        $post_states[] = __( \'Customization Draft\' );
    } elseif ( \'draft\' !== $post_status ) {
        $post_states[\'draft\'] = __( \'Draft\' );
    }
} elseif ( \'trash\' === $post->post_status && get_post_meta( $post->ID, \'_customize_changeset_uuid\', true ) ) {
    $post_states[] = __( \'Customization Draft\' );
}
if ( \'pending\' == $post->post_status && \'pending\' != $post_status )
    $post_states[\'pending\'] = _x(\'Pending\', \'post status\');
if ( is_sticky($post->ID) )
    $post_states[\'sticky\'] = __(\'Sticky\');

if ( \'future\' === $post->post_status ) {
    $post_states[\'scheduled\'] = __( \'Scheduled\' );
}

if ( \'page\' === get_option( \'show_on_front\' ) ) {
    if ( intval( get_option( \'page_on_front\' ) ) === $post->ID ) {
        $post_states[\'page_on_front\'] = __( \'Front Page\' );
    }

    if ( intval( get_option( \'page_for_posts\' ) ) === $post->ID ) {
        $post_states[\'page_for_posts\'] = __( \'Posts Page\' );
    }
}

if ( intval( get_option( \'wp_page_for_privacy_policy\' ) ) === $post->ID ) {
    $post_states[\'page_for_privacy_policy\'] = __( \'Privacy Policy Page\' );
}

/**
 * Filters the default post display states used in the posts list table.
 *
 * @since 2.8.0
 * @since 3.6.0 Added the `$post` parameter.
 *
 * @param array   $post_states An array of post display states.
 * @param WP_Post $post        The current post object.
 */
$post_states = apply_filters( \'display_post_states\', $post_states, $post );

if ( ! empty($post_states) ) {
    $state_count = count($post_states);
    $i = 0;
    echo \' &mdash; \';
    foreach ( $post_states as $state ) {
        ++$i;
        ( $i == $state_count ) ? $sep = \'\' : $sep = \', \';
        echo "<span class=\'post-state\'>$state$sep</span>";
    }
}
<小时>

enter image description here

例如:此代码来自Ultimate Member 插件

/**
     * Add a post display state for special UM pages in the page list table.
     *
     * @param array $post_states An array of post display states.
     * @param \\WP_Post $post The current post object.
     *
     * @return mixed
     */
    public function add_display_post_states( $post_states, $post ) {

        foreach ( UM()->config()->core_pages as $page_key => $page_value ) {
            $page_id = UM()->options()->get( UM()->options()->get_core_page_id( $page_key ) );

            if ( $page_id == $post->ID ) {
                $post_states[ \'um_core_page_\' . $page_key ] = sprintf( \'UM %s\', $page_value[\'title\'] );
            }
        }

        return $post_states;
    }

结束

相关推荐