POST元数据和查询对象有什么区别

时间:2020-10-07 作者:iamonstage

当我编辑一篇提交的论文帖子并使用插件JSM的Show post元数据查看帖子元数据时。我看不见comment_status.但是当我使用调试栏查看帖子并查看WP查询时>;我能看到的查询对象comment_status ⇒ open.

Q1 - 这两个之间有区别吗?-发布元数据和查询的对象。

我正在尝试设置LearnDash提交的论文的默认评论状态(帖子类型:sfwd-essays) 到open.

下面的代码添加了元数据\'comment_status\', \'open\' (作为一个数组,这可能是错误的)提交时,我可以看到元数据已经添加。

add_action(\'save_post\', \'goldlms_sfwd_essays_comment_open\', 10, 2);
function goldlms_sfwd_essays_comment_open($postID, $post)
{
  if (isset($post->post_type) && $post->post_type == \'sfwd-essays\') {
    update_post_meta($post->ID, \'comment_status\', \'open\');
  }
}
元数据结果:
comment_statusarray ( 0 => \'open\', )

但当我查看帖子时,调试查询仍然是comment_status ⇒ closed

Q2 - 如何设置的默认注释状态sfwd-essays 将类型发布到open ?

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

Q1 - 这两个之间有区别吗?-发布元数据和查询的对象。

我不会详细解释(例如,post元数据是什么),但这些应该可以帮助您尝试做什么:

Post元数据保存在wp_postmeta table. (注意,在您的情况下,表前缀可能不同,但是wp_ 是默认设置。)

所查询的对象是指从wp_posts table, 其中包含如下字段ID, post_typecomment_status — 你想要改变的那个。

因此,如果要设置帖子的评论状态,无需向帖子添加自定义元数据。使用wp_update_post().

Q2 - 如何设置的默认注释状态sfwd-essays 将类型发布到open ?

不确定在post类型注册期间是否有特定的设置,但可以使用一个挂钩:get_default_comment_status. 例如,对于您的帖子类型:

add_filter( \'get_default_comment_status\', function ( $status, $post_type ) {
    // Set to open if post type = sfwd-essays
    return ( \'sfwd-essays\' === $post_type ? \'open\' : $status );
}, 10, 2 );

相关推荐