按自定义字段更改帖子状态

时间:2018-11-30 作者:Giulio

我想根据自定义字段“播放”更新我的帖子状态(我自己的CPT)。如果播放的是1,我希望发布帖子,但如果播放的自定义字段是0,那么如果我试图发布帖子,帖子也应该是草稿。

有可能吗?

我试图在论坛中搜索,但没有找到有效的。。。也尝试了这里的代码,但不起作用。。。

How to Update post status using meta data in Custom post TYpe

2 个回复
SO网友:Krzysiek Dróżdż

你所需要做的就是save_post 钩方法如下:

function change_post_status_based_on_custom_field( $post_id ) {
    // If this is just a revision, don\'t do anything.
    if ( wp_is_post_revision( $post_id ) )
        return;

    // Get field value
    $value = get_post_meta( $post_id, \'played\', true );

    $status = $value ? \'publish\' : \'draft\';

    // If status should be different, change it
    if ( get_post_status( $post_id ) != $status ) {
        // unhook this function so it doesn\'t loop infinitely
        remove_action( \'save_post\', \'change_post_status_based_on_custom_field\' );

        // update the post, which calls save_post again
        wp_update_post( array(
            \'ID\' => $post_id,
            \'post_status\' => $status
        ) );

        // re-hook this function
        add_action( \'save_post\', \'change_post_status_based_on_custom_field\' );
    }
}
add_action( \'save_post\', \'change_post_status_based_on_custom_field\' );

SO网友:JakeParis

在这里粘贴的代码可能相当多,但您的策略应该遵循以下几点:

钩住post\\u保存事件:创建一个已经检查过的静态变量,以防止在此函数中更新post时出现无限递归

  • 检查自定义字段是否==“played”
    • 如果是,根据需要修改帖子状态,并执行wp\\u update\\u post
  • 相关推荐

    如何让`wp-list-table`显示我在Custom-Post中的`Custom-Fields`

    一切都好吗<我需要wp-list-table 也要显示custom-fields 在每个custom-post 我有,但我不知道如何做到这一点,在这幅图中,它显示了带有字段的表格:Title, Author and Publication Date: 我想要的是能够选择custom-fields 将出现,例如以下示例Title, Carta, Naipe, Author, and Date of Publication: