假设以下条件使其工作
- Classic Editor 正在使用,因为Gutenberg/Block Editor 是由Javascript呈现的,它需要另一种解决方案,到目前为止,我不确定是否有覆盖选项
对于您显示的代码,它不起作用,因为
add_filter() 未指定。默认情况下,仅使用1个参数。要使用多个参数,必须指定。
代码更正(asker的代码用于Classic Editor)
以下内容经过测试,它适用于任何帖子类型,甚至自定义帖子类型。通过引入theme的函数,可以证明以下代码是有效的。php
/**
* Add private/draft/future/pending pages to parent dropdown.
*/
function wps_dropdown_pages_args_add_parents( $dropdown_args, $post = NULL ) {
$dropdown_args[\'post_status\'] = array( \'publish\', \'private\', );
return $dropdown_args;
}
add_filter( \'page_attributes_dropdown_pages_args\', \'wps_dropdown_pages_args_add_parents\', 10, 2 );
add_filter( \'quick_edit_dropdown_pages_args\', \'wps_dropdown_pages_args_add_parents\' );
禁用块编辑器(对于经典编辑器的方法)如果任何人想禁用古腾堡编辑器来测试上述代码,您可以在theme的函数中放入以下代码。php
add_filter( \'use_block_editor_for_post_type\', \'sing_use_block_editor_for_post_type\', 10, 2 );
function sing_use_block_editor_for_post_type( $can_use, $post_type ) {
switch ( $post_type ) {
case \'custom_post_types\':
case \'post\':
case \'page\':
$can_use = false;
break;
default:
$can_use = true;
break;
}
return $can_use;
}
古腾堡/块编辑器的覆盖方法请使用过滤器
rest_{$this->post_type}_query 覆盖查询的步骤
由于Gutenberg使用Rest API加载数据,所以页面列表就是其中之一。以下内容在相同的测试页面上进行测试,父级和子级都是私有的。通过将以下代码放入theme的函数中,可以证明其有效。php
add_filter( \'rest_page_query\', \'test_rest_page_query\', 10, 2);
function test_rest_page_query( $args, $request ) {
// please add your own logic such as screen id check logic
$args[\'post_status\'] = array( \'publish\', \'private\' );
return $args;
}