当我编辑一篇提交的论文帖子并使用插件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_status
array ( 0 => \'open\', )
但当我查看帖子时,调试查询仍然是comment_status ⇒ closed
Q2 - 如何设置的默认注释状态sfwd-essays
将类型发布到open
?
最合适的回答,由SO网友:Sally CJ 整理而成
Q1 - 这两个之间有区别吗?-发布元数据和查询的对象。
对
我不会详细解释(例如,post元数据是什么),但这些应该可以帮助您尝试做什么:
Post元数据保存在wp_postmeta
table. (注意,在您的情况下,表前缀可能不同,但是wp_
是默认设置。)
所查询的对象是指从wp_posts
table, 其中包含如下字段ID
, post_type
和comment_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 );