如何在wp-admin中禁用页面属性下拉菜单

时间:2013-07-11 作者:Jason Deadrich

如中所述WordPress admin screen very slow / timing out when editing or adding a new page/custom post

我有一个类似的问题,在一个包含7784页的WP网站上。由于在页面属性下拉菜单的源代码中呈现所有7k页面,编辑屏幕加载速度较慢。除了编辑核心,还必须有更好的方法来处理这个问题。在编辑屏幕上呈现所有页面似乎是一个缺陷。

非常感谢其他高流量WP站点的反馈!

5 个回复
SO网友:s_ha_dum

删除对页面属性的支持将阻止该框出现。。。

function remove_page_attribute_support() {
    remove_post_type_support(\'page\',\'page-attributes\');
}
add_action( \'init\', \'remove_page_attribute_support\' );
。。。但我不知道你是否需要属性支持。如果你不这样做,那就是解决办法。

如果你这样做了,你需要按照@KrzysiekDrozdz的答案移除这个盒子,但要使用这些属性,你必须重新构建这个盒子,the original is here, 以这样的方式,它为你工作。

SO网友:Krzysiek Dróżdż

仅使用remove_meta_box 功能:

if (is_admin()) :
function my_remove_meta_boxes() {
    remove_meta_box(\'pageparentdiv\', \'page\', \'side\');
}
add_action( \'admin_menu\', \'my_remove_meta_boxes\' );
endif;
如果需要设置这些页面的层次结构(为页面设置post\\u parent),您仍然可以这样做。只需添加自定义元框,然后在其中放置一个包含页面列表的选择框。

您必须确保您的查询(选择这些页面)比原始查询更有效。您可以列出没有层次结构的页面,并仅选择title和page\\u id(原始查询将从DB中检索所有页面数据,如果有许多页面,它可以是大量数据)或类似的内容。

SO网友:brasofilo

另一个选项是在调用之前过滤下拉参数wp_dropdown_pages. 此函数有一个挂钩,但it happens 之后进行查询。

有两个地方可以对其进行过滤:快速编辑模式和页面元框。但没有一个可用于选项阅读或主题自定义程序。

enter image description here

以下是按作者限制页面的默认参数和筛选器示例(depth, child_ofexlcude 似乎也是不错的候选人)。

/*
$defaults = array(
    \'depth\' => 0, 
    \'show_date\' => \'\',
    \'date_format\' => get_option(\'date_format\'),
    \'child_of\' => 0, 
    \'exclude\' => \'\',
    \'title_li\' => __(\'Pages\'), 
    \'echo\' => 1,
    \'authors\' => \'\', 
    \'sort_column\' => \'menu_order, post_title\',
    \'link_before\' => \'\', 
    \'link_after\' => \'\', 
    \'walker\' => \'\',
);
*/

add_filter( \'quick_edit_dropdown_pages_args\', \'limit_parents_wpse_106164\' );
add_filter( \'page_attributes_dropdown_pages_args\', \'limit_parents_wpse_106164\' );

function limit_parents_wpse_106164( $args )
{
    $args[\'authors\'] = \'author_name\';
    return $args;
}

SO网友:Renish Khunt

您可以使用下面的代码轻松禁用页面属性下拉列表。

add_action( \'admin_init\', \'tryvary_remove_feature_meta_box\' );
function tryvary_remove_feature_meta_box() {
    remove_post_type_support( \'page\', \'page-attributes\' );
}
只需尝试使用删除页面属性功能admin_init 钩如果它对您不起作用,请尝试下面的代码。

add_action( \'admin_head\', \'misha_remove_meta_box\', 1 );
function misha_remove_meta_box(){
    remove_meta_box( \'pageparentdiv\', \'page\', \'side\' );
}
尝试使用删除元框代码admin_head

你会得到more information about remove meta box and feature from this article.

SO网友:Daniel Wom

我终于找到了解决办法。虽然不是最好的,但它正在发挥作用。remove\\u meta\\u box和类似的功能只有在添加meta\\u box之后才起作用。否则就没有什么可移除的。不幸的是,我没有成功。真正起作用的是# 从元框中注释一行。php

if ( post_type_supports( $post_type, \'page-attributes\' ) || count( get_page_templates( $post ) ) > 0 ) {
    #add_meta_box( \'pageparentdiv\', $post_type_object->labels->attributes, \'page_attributes_meta_box\', null, \'side\', \'core\', array( \'__back_compat_meta_box\' => true ) );
}
因此,您可以防止加载包含所有内容的元框,仅此而已。现在页面加载速度很快。=)

结束