我有一个自定义的帖子类型,称之为topic
. 这是BBPress提供的,但这不是BBPress的问题。
我还有一个帖子类型lessontopic
.
我在BBPress中添加了一个元框,以便在BBPress主题后端编辑器中为论坛主题选择一个关联的课程主题,并将其另存为post meta data
.
以下是我所做的:
add_action( \'add_meta_boxes\', \'ld_bbpress_display_ldtopic_selector\');
function ld_bbpress_display_ldtopic_selector() {
add_meta_box( \'ld_bbpress_ldtopic_selector\', __( \'LearnDash bbPress Settings\', \'learndash-bbpress\' ), \'ld_bbpress_display_topic_selector_callback\', \'topic\', \'advanced\', \'high\' );
}
function ld_bbpress_display_topic_selector_callback() {
My call back stuff
}
add_action( \'save_post_topic\', \'ld_save_associated_ldtopic\',10,1);
function ld_save_associated_ldtopic($topic_id){
if ( ! wp_verify_nonce( $_POST[\'ld_bbpress_nonce_ldtopic\'], \'ld_bbpress_meta_box_ldtopic\' ) ) {
return;
}
my save stuff
}
现在后端看起来一切正常。但是如果我从meta下拉列表中选择一个课程主题,点击update,并在调试器中逐步完成,我会看到更新是在中执行的
wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php
这与以下事实有关:对于我制作的一个允许我选择论坛主题的自定义块,我必须使BBPress主题能够在restAPI中看到,这会神秘地导致后端编辑器点击restAPI端点进行更新。我通过启用
add_filter( \'bbp_register_topic_post_type\', \'enable_restAPI_bbpress_topics\', 10,1);
function enable_restAPI_bbpress_topics ($args) {
$args[\'show_in_rest\'] = true;
$args[\'supports\'] = array( \'title\', \'editor\', \'author\', \'thumbnail\', \'excerpt\' );
return $args;
}
但我不明白:为什么仅仅检查一个帖子类型对restAPI是可见的行为就会导致wordpress的后端编辑器进入一种完全不同的操作模式?我的意思是,我们在谈论后端。如果我启用restAPI,我可以看到这将如何促进无头CMS等,但为什么它会从根本上改变Wordpress处理后端后期编辑的方式?
不知怎的,这导致了我的保存挂钩ld_save_associated_ldtopic
没有看到$_POST
数组,因此看不到nonce数据。
真的很奇怪。我觉得我打破了一些规则,它在咬我,但不知道我需要做什么才能让我的元盒以这种方式工作。
想法?
谢谢Brian