这项功能到底有多“贵”?

时间:2017-08-26 作者:glvr

添加了“字数”管理列后,我使用this 函数从堆栈上的其他位置重新保存所有帖子,从而填充字数(wordcount函数在帖子保存时计算)。

在一个几乎没有公共流量的专用服务器上,只有几百篇文章/页面,我想我可以\'numberposts\' => -1\' 并立即更新。

似乎没有,因为这样做会让机器感到紧张,需要快速“我现在该怎么办?”wp-cron.php.

我已经注释掉了这个函数,所以假设一旦启动,这些过程就会在自动引发的熔毁中继续。(也许不是——我并不假装理解这一点,我很乐意接受教育。)

三个问题:

我可以安全地重新启用wp-cron.php?\'numberposts\' => -1\'. 也许坚持这样\'numberposts\' => 10\'?来自的字数代码this question 如下所示:

add_action(\'save_post\', function($post_id, $post, $update) {
    $word_count = explode(" ", strip_shortcodes($post->post_content));
    update_post_meta($post_id, \'_wordcount\', count($word_count));
}, 10, 3);
add_filter(\'manage_posts_columns\', function($columns){
    $columns[\'wordcount\'] = \'Word count\';
    return $columns;
});
add_action(\'manage_posts_custom_column\', function($name) {
    global $post;

    if($wordcount === \'\')
         $wordcount = \'not counted\';
    if($name === \'wordcount\')
        echo $wordcount;
 });
更新后的第二天。。。

为了响应请求,我添加了我最初链接的“更新所有帖子”代码。

function example_hide(){
$my_posts = get_posts( array(\'post_type\' => \'post\', \'numberposts\' => -1 ) );
foreach ( $my_posts as $my_post ):
wp_update_post( $my_post );
endforeach;
}
add_action(\'init\',\'example_hide\');
我第一次用“numberposts”=>10运行更新,它在几秒钟内完成-因此我决定切换到-1。

1 个回复
SO网友:Mark Kaplun

根据经验,不要做任何会导致前端DB写入的事情。如果您可以创建一个触发操作的管理页面(即使它只是启动一个基于AJAx的流程),则效果会更好。

你这里的问题是用不合适的钩子钩住。你迷上了init 这意味着each 请求代码更改正在运行的所有帖子。由于这是一个繁重的操作,它使您的数据库和服务器超载。我不知道为什么克朗在这里被挑出来。

另外,您的保存处理程序不是很好,您应该确保您正在处理所需的帖子类型,而不是修订或自动保存。

结束

相关推荐

Wrong wp-admin URL

我刚安装了一个WordPress站点,并在一个反向代理后面配置了该站点的URL-http://example.com/hello问题我可以访问admin dashboard页面,但由于链接变为http://example.com/wp-admin 而不是http://example.com/hello/wp-admin. 我怎样才能摆脱这种奇怪的行为?可能有帮助的详细信息</我确信WordPress地址(URL)和站点地址(URL)配置为http://example.com/hello, 我甚至检查