检查WordPress是否正在更新或发布帖子

时间:2012-02-22 作者:Tony

非常简单的问题:当wp正在更新或发布帖子时,我如何检查?因为我必须检查一个Posteta值,该值只有在帖子实际发布时才可能为真,因此它不必已经存在于系统中。E、 g.if(定义为“DOING\\u AUTOSAVE”)&&;DOING\\u AUTOSAVE)它是在wp执行自动保存时定义的。在进行更新时是否有类似的情况?非常感谢。

好吧,那么

add_action(\'save_post\', \'fields_news_save\');
function fields_news_save($post_id){
$errors = false;
       if(get_check_key($_POST[\'checks_news\'])==0){
    $errors = true;     
    update_option(\'custom_token\', $errors);
    update_option(\'custom_admin_errors\', $txt_err=error_text($errors, 2));

    remove_action(\'save_post\',\'fields_news_save\');
    wp_update_post(array(\'ID\' => $post_id, \'post_status\' => \'draft\'));
    add_action(\'save_post\', \'fields_news_save\');

    return false;
}
}
“if”子句检查是否有meta post值设置为$\\u post[\'checks\\u news\'],这是执行查询的函数:function get_check_key($checker){ global $wpdb; $data = array(); $wpdb->query(" SELECT * FROM $wpdb->wp_postmeta WHEREmeta\\u值= $checker; "); return $wpdb->num_rows; }

现在,我想做的是在开始时检查行数是否为0,wp是否正在进行发布而不是更新。

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

我避免了只检查该帖子的ID是否已经存在于db中的问题。

get_post($id)==NULL
这可能是做我需要的事情最简单的方法。

SO网友:Chip Bennett

如果在执行“发布帖子”、“保存帖子”或“草稿帖子”操作时需要执行操作,只需将回调添加到相应的action hook, i、 e。publish_post, save_post, 或draft_post.

如果在帖子从一种状态转换到另一种状态的过程中需要执行操作,则可能需要使用适当的post status transition hook.

结束

相关推荐

为什么GET_POSTS会忽略带有两位数ID的帖子?

我使用此代码列出当前页面的子页面,并使用类似代码获得所有祖先的子页面,以便在侧栏上下文层次导航菜单中使用:$pageset = get_posts(\'numberposts=0&post_type=page&post_parent=\'.$wp_query->post->ID); 出于某种原因,两次迭代都忽略了具有两位数帖子id的帖子。其他一切都显示得很好。我错过什么了吗?我是否有不正确的设置?我在这里撞到头了。。。