我需要在预定的时间批量更新所有WordPress帖子

时间:2014-08-09 作者:digimonster

我需要在预定的时间(每天)更新wordpress网站上的所有帖子。所以我想创建一个新的页面模板,我可以每天通过cronjob调用该模板来一次性更新所有帖子。

我已经创建了页面和cronjob,但我在其中添加的代码似乎不起作用。你能告诉我我的代码有什么问题吗?

    <?php
/**
 * Template Name: POSTUP
 *
 */

$my_posts = get_posts( array(\'post_type\' => \'post\', \'numberposts\' => -1,))
$post_id = get_the_ID();

foreach ( $my_posts as $my_post ) {
    $updated_post_info = array(
      \'ID\'           => $post_id,
      \'pinged\'       => \'\',
    );

    wp_update_post( $updated_post_info );
}
?>

3 个回复
SO网友:James

如果我理解正确的话,这就是我使用的。

UPDATE wp_posts SET post_date=NOW(),post_date_gmt=NOW(),post_modified=NOW(),post_modified_gmt=NOW();
为我工作。

SO网友:Dan Bough

你实际上并没有对邮报做任何事情。您需要创建一个包含更新信息的数组,并将其传递给wp\\u update\\u post。基于wp_update_post codex 页码:

$my_posts = get_posts( array(\'post_type\' => \'post\', \'numberposts\' => -1,))

foreach ( $my_posts as $my_post ) {
    $updated_post_info = array(
      \'ID\'           => $my_post->ID,
      \'post_content\' => \'This is the updated content.\'
    );

    wp_update_post( $updated_post_info );
}

SO网友:Programmer Dan

我同意这里的大多数其他评论,即这个解决方案似乎没有解决您的问题,但您对这个问题的了解要比我们多,因为我们只在您在这里解释的范围内理解它。

话虽如此,您上面提供的代码的问题是一个相当简单的问题,可以修复并以您喜欢的方式工作。您的代码正在当前全局$post变量上设置$post\\u id变量(如果在functions.php文件中,该变量可能会返回为空)。相反,获取你正在循环的帖子的ID。我还建议使用WP\\u Query()而不是get\\u posts(),因为它会给您一个新的请求,而不仅仅是修改当前的请求(这有时也会导致发出请求),然后像这样重试:

$postArgs= array(
    \'post_type\' => \'post\',
    \'fields\' => \'ids\',
    \'posts_per_page\' => -1
);
$postReq= new WP_Query(postArgs);
if($postReq->found_posts) {
    foreach($postReq->posts as $my_post) {
        //if(get_post_meta($my_post->ID, \'forced-update\', TRUE)==\'\') {
            $updated_post_info = array(
                \'ID\' => $my_post->ID,
                \'pinged\' => \'\'
            );
            wp_update_post($updated_post_info);
            //update_post_meta($my_post->ID, \'forced-update\', \'complete\');
        //}
    }
}
我在建议的解决方案中添加了另一段代码:自定义元字段。一旦您能够找出需要为新的文章帖子保存哪些内容才能让这个jimmy rig让文章生成器插件工作,请取消注释我的解决方案中当前注释的三行代码。这将使您在将来“修复保存”的唯一帖子是尚未对其进行修复(不必要)的帖子。从长远来看,这将为您节省一些计算时间。

祝你好运!

结束

相关推荐