WordPress管理屏幕非常慢/编辑或添加新页面时超时/自定义帖子

时间:2011-11-18 作者:Nick Davis

我是这个网站的新手,但非常感谢您的帮助。

我有一个WordPress设置,它(正确或错误)有数百个页面和数千个其他自定义帖子类型,也基于页面(即分层)。

当试图在管理中添加新页面或自定义帖子类型(或编辑现有类型)时,编辑页面屏幕的加载速度非常慢。

通常在属性框标记周围超时(有时加载整个页面,有时不加载,但基本上要么极其不可用,要么根本不可用)。

我的假设是,因为层次菜单(在属性框中)上要加载的项目太多,所以会导致超时。

我理解,也许以这种方式使用这么多页面对WP来说可能不是最佳选择,但这就是网站目前的情况,我无法轻松更改它(不幸的是,需要将页面置于特定层次结构中的能力,所以我不能对管理员隐藏属性框)。

从长远来看,可能需要重建该网站以仅使用帖子,但目前我能做些什么来帮助WordPress完全加载编辑页面和/或加快速度。

任何htaccess/php。ini黑客(我已经尝试过几次,比如增加内存大小/执行时间,但似乎没有帮助)或任何你认为我可以尝试的东西(我对几乎任何想法都持开放态度),MYSQL中的一些东西可能会缓存它(不幸的是,我不是这方面的专家)

非常感谢你能提供的任何帮助

谢谢Nick

PS这是WordPress 3.2.1PPS我也尝试过编辑permalink结构,所以它不包含%的帖子名称,但这对pps没有帮助我也尝试过复制网站并升级到WordPress 3.3最新beta版,但仍然是相同的pps该网站位于Rackspace Sites云服务器上

而且我尝试禁用属性框,只是尝试在列出部分管理的页面上使用快速编辑功能来控制层次结构,但这可能没有响应,因为它是由于同一问题而“超时”,所以不幸的是,我的临时解决方案也没有真正做到这一点,干杯。

4 个回复
SO网友:user10418

这可能没有任何帮助,但尝试一下也无妨。。。登录到服务器管理区域,调用数据库管理的客户端界面(例如phpMyAdmin),删除其“类型”标记为修订的所有帖子,然后压缩表。

如果您有数千个页面,那么可能还有数百万次修订会减慢您的访问速度。

SO网友:Krzysiek Dróżdż

问题就在别处。WordPress构建页面层次结构以填充post\\u父选择框。当有许多页面时,此函数可能会有点慢(有时非常慢)。

那么你能做些什么呢?

您可以使用以下代码禁用WordPress默认页面属性元框:

if (is_admin()) :
function my_remove_meta_boxes() {
    remove_meta_box(\'pageparentdiv\', \'page\', \'side\');
}
add_action( \'admin_menu\', \'my_remove_meta_boxes\' );
endif;
如果需要设置这些页面的层次结构(设置post_parent 对于页面),您仍然可以这样做。只需添加自定义元框,然后在其中放置一个包含页面列表的选择框。但是,您必须确保您的查询(选择这些页面)更高效(列出没有层次结构的页面,只选择标题和page\\u id,或者类似的内容)。

另外,看看WPs源代码,看看为什么它会很慢,当有很多页面时。。。它使用get_pages 具有hierarchical 参数设置为true。它使用get_page_children 然后,它不是非常有效的功能。。。

SO网友:Henric

我有5000多页的同一期,这让我花了不少时间。问题是页面属性使用了wp\\u dropdown\\u pages->加载所有页面!

因为我仍然需要使用模板,所以仅仅删除页面属性并不能解决这个问题。

由于我不喜欢直接破解核心文件,我的解决方案是删除然后重新启用我自己版本的页面属性(取自核心文件)。

// Override of Page Attribute meta box
// This is because the load time of wp_dropdown_pages(), which is removed in our version.
// (original: page_attributes_meta_box() in wp-admin/includes/meta-boxes.php)

// Remove the original meta box
add_action( \'admin_menu\', \'custom_remove_meta_box\');
function custom_remove_meta_box(){
    remove_meta_box(\'pageparentdiv\', \'page\', \'side\');
}

// Add our own meta box instead
add_action( \'add_meta_boxes\', \'cuustom_add_meta_box\');
function custom_add_meta_box() {
    add_meta_box(\'pageparentdiv\', __(\'Page Attributes\') , \'custom_page_attributes_meta_box\', \'page\', \'side\');
}

// Use custom page attributes meta box, no need to load dropdown with pages!
function custom_page_attributes_meta_box($post) {
    if ( \'page\' == $post->post_type && 0 != count( get_page_templates( $post ) ) ) {
        $template = !empty($post->page_template) ? $post->page_template : false;
      ?>
        <p><strong><?php _e(\'Template\') ?></strong></p>
        <label class="screen-reader-text" for="page_template"><?php _e(\'Page Template\') ?></label>
        <select name="page_template" id="page_template">
            <option value=\'default\'><?php _e(\'Default Template\'); ?></option>
            <?php page_template_dropdown($template); ?>
        </select>
      <?php
    } 
  ?>
    <p><strong><?php _e(\'Order\') ?></strong></p>
    <p><label class="screen-reader-text" for="menu_order"><?php _e(\'Order\') ?></label><input name="menu_order" type="text" size="4" id="menu_order" value="<?php echo esc_attr($post->menu_order) ?>" /></p>
    <p><?php if ( \'page\' == $post->post_type ) _e( \'Need help? Use the Help tab in the upper right of your screen.\' ); ?></p>
  <?php
}

SO网友:GMD

在WP 3.5.1中,要解决这个大问题(如果您不经常需要属性框),最好的方法就是不显示属性框。为此,请在wp admin/edit form advanced(wp管理/编辑表单高级)中注释第132至134行。php。没有显示属性框,没有慢速编辑页面。

结束