如何使用自定义帖子类型中的元数据更新帖子状态

时间:2015-03-05 作者:shashank

我有自定义的帖子类型和一些元字段。我有一个选择字段“发布”来更改帖子状态。如果我将其设置为“是”,然后单击“更新”按钮,则发布帖子;如果我将其设置为“否”,则帖子应另存为“草稿”。你可以看到我自定义帖子类型的截图-

enter image description here

我应该在中使用什么代码add_action( \'save_post\',\'save_my_data\'). 或任何其他想法。?

1 个回复
最合适的回答,由SO网友:TheGentleman 整理而成

如果我理解正确,您想使用自己的选择表单来更新帖子的发布状态,而不是发布/取消发布按钮?像这样的东西可以做到这一点:

function save_my_data($post_id){
    if($_POST[\'publish\'] == \'yes\' && get_post_status($post_id) != \'publish\'){ //whatever your post variable is
        remove_action(\'save_post\', \'save_my_data\'); //if you don\'t unhook the function you\'ll have an infinite loop
        wp_publish_post($post_id);
        add_action(\'save_post\', \'save_my_data\'); //rehook the function       
    }
    if($_POST[\'publish\']) == \'no\' && get_post_status($post_id) == \'publish\'){
        remove_action(\'save_post\', \'save_my_data\'); //if you don\'t unhook the function you\'ll have an infinite loop
        wp_update_post(array(
            \'ID\' => $post_id,
            \'post_status\' => \'draft\'
        ));
        add_action(\'save_post\', \'save_my_data\'); //rehook the function
    }
}
您可能希望添加一些错误处理并对其进行一些优化。您可能还需要说明此处列出的其他帖子状态:http://codex.wordpress.org/Post_Status#Default_Statuses

结束

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在