主页/WordPress笔记/博客文章/综合文章/如何在WordPress博客文章中添加自定义文章状态

如何在WordPress博客文章中添加自定义文章状态

Bug编译狮

Bug编译狮

在WordPress博客中添加自定义文章状态是一项非常实用的功能,它可以帮助你更好地管理和组织内容。下面我将指导您如何在WordPress博客中添加自定义文章状态,并通过示例代码展示其实现过程。

步骤1:登录到您的WordPress管理后台

首先,请确保您已登录到您的WordPress管理后台。

步骤2:进入“设置”菜单

点击页面右上角的“设置”链接,这将打开WordPress设置页面。

步骤3:选择“主题”选项卡

在设置页面中,找到并点击“主题”选项卡。

步骤4:启用“自定义文章状态”

在主题设置页面中,向下滚动到底部,找到“自定义文章状态”部分。如果尚未开启此功能,您可以将其勾选上。然后点击保存更改按钮。

步骤5:创建新的自定义文章状态

现在,您可以在右侧的“自定义文章状态”区域看到所有现有的文章状态列表。如果您还没有自定义的文章状态,可以在这里新增一个。点击“+ Add New Status”。

  • 状态名称:输入新状态的名称。
  • 状态描述:提供一段简短的描述来说明这个状态的作用或用途。
  • 优先级(可选):设置这个状态的优先级,数字越小表示优先级别越高。

步骤6:测试新状态

保存后,您可以通过编辑特定文章或使用搜索功能来检查是否成功应用了新的自定义文章状态。

示例代码

假设我们想要为博客文章增加一个新的自定义状态draft-ready,我们可以按照以下步骤操作:

// 插入到functions.php文件中或者使用插件自动执行
function add_custom_post_status() {
    // 定义自定义状态
    $status = array(
        'name' => 'Draft Ready',
        'slug' => 'draft-ready',
        'icon_url' => '',
    );

    // 添加自定义状态
    register_post_status( 'draft-ready', $status );
}
add_action( 'init', 'add_custom_post_status' );

这段代码会在WordPress初始化时执行,当用户发布一篇文章时,系统会根据自定义状态draft-ready来处理文章的状态变化。

效果与总结

  • 当文章处于draft-ready状态时,它不会立即显示在前台,而是保持为草稿状态。
  • 用户可以在此状态下修改和调整文章的内容。
  • 在文章准备就绪之后,管理员可以选择将该文章转换为其他状态(如publishprivate),以便发布或隐藏。

通过这种方式,您可以有效地对博客文章进行分类和管理,提高网站的整体用户体验和SEO优化。

黑板前的Bug语法讲师

黑板前的Bug语法讲师

在WordPress中,您可以使用多种方式来为您的文章设置不同的状态。以下是一些常见的方法:

  1. 启用自定义状态:首先,您需要创建一个新的custom_status.php文件(如果尚未存在),并在其中编写相应的代码。

  2. 自定义状态栏:在wp-admin目录下找到nav-menus.php文件,然后在该文件中添加一个名为custom-statuses的新菜单项。例如:

    <li class="menu-item menu-item-type-custom-menu menu-item-object-custom-menu">
     <a href="#">Custom Statuses</a>
    </li>
  3. 编辑主题配置:打开functions.php文件,在register_nav_menus()函数之前添加新的导航条。

    function add_custom_status_menu() {
       register_nav_menus(array(
           'custom_status' => __( 'Custom Status', 'text_domain' ),
       ));
    }
  4. 编辑文章视图:接下来,你需要修改文章视图以显示自定义的状态。在wp-includes/post-template.php文件中查找single.phparchive.php文件中的相应部分。

  5. 自定义状态的分类功能:如果您希望在特定的文章类别或标签中应用自定义状态,请将它们添加到相应的过滤器或插件中。

以下是几个具体的示例代码:

示例代码 1: 使用 custom_status.php

<?php

add_action( 'init', 'add_custom_status' );

function add_custom_status() {
    $status = array(
        'draft' => __('Draft'),
        'publish' => __('Published'),
        'private' => __('Private'),
        'future' => __('Future')
    );
    foreach ( $status as $value => $label ) {
        register_post_type_status_filter( 'post_status', '__return_value' );
        update_option( 'post_status', $value );
        add_action( 'admin_head-post-new.php', 'change_post_status_label' );
    }

    update_option( 'show_on_front', 'page' );
}

function change_post_status_label() {
    global $post;
    if ($post->post_status == 'draft') {
        echo esc_html__('Publish', 'myplugin');
    } else {
        echo esc_html($post->post_status);
    }
}

示例代码 2: 自定义状态栏

<nav id="custom-statuses" class="navigation is-primary">
    <ul>
        <!-- 这里可以添加更多的自定义状态 -->
        <li><a href="#" data-status="draft">Draft</a></li>
        <li><a href="#" data-status="publish">Published</a></li>
        <li><a href="#" data-status="private">Private</a></li>
        <li><a href="#" data-status="future">Future</a></li>
    </ul>
</nav>

示例代码 3: 编辑主题配置

function mytheme_custom_statuses() {
    return array(
        'draft' => __('Draft'),
        'publish' => __('Published'),
        'private' => __('Private'),
        'future' => __('Future')
    );
}
add_filter('show_custom_status_menu', 'mytheme_custom_statuses', 999, 0);

示例代码 4: 文章视图

if (is_single()) {
    // 在单个文章视图中显示自定义状态
    $post_status = get_post_status();
    switch ($post_status) {
        case 'draft':
            echo '<span class="status status-draft">' . esc_html__( 'Draft', 'your-plugin' ) . '</span>';
            break;
        case 'publish':
            echo '<span class="status status-publish">' . esc_html__( 'Published', 'your-plugin' ) . '</span>';
            break;
        case 'private':
            echo '<span class="status status-private">' . esc_html__( 'Private', 'your-plugin' ) . '</span>';
            break;
        case 'future':
            echo '<span class="status status-future">' . esc_html__( 'Future', 'your-plugin' ) . '</span>';
            break;
    }
}

通过这些步骤,您可以在WordPress中轻松地为文章添加自定义状态。这有助于您根据需求调整文章的可见性、排序和其他特性。