选择一个个人主页作为另一个个人主页的父级

时间:2020-04-29 作者:Arushi Rajput

我正在尝试构建客户门户,但是“父”下拉列表(页面属性下页面设置右下角的下拉列表)中没有显示私人页面。父页面和子页面都需要是私有的,以便只有登录的用户才能访问它。

我试过这个代码,但对我来说不起作用。

/**
 * 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\' );
add_filter( \'quick_edit_dropdown_pages_args\', \'wps_dropdown_pages_args_add_parents\' );

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

假设以下条件使其工作

  • 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;
}

相关推荐

Published pages missing

wordpress中缺少所有已发布的页面。他们仍然在我的网站(chrisjscambler.com)上在线,例如,我的家、研究和教学都在网上活跃;但它们无法在wordpress中编辑。直到最近,他们都在那里!有什么建议吗?