更新多个帖子元数据的有效方法

时间:2014-10-15 作者:wordwannabe

我已经使用update\\u post\\u meta()更新了post meta。然而,我的帖子越多,花的时间就越多。我想尽量减少处理400个帖子所需的时间(虽然我不太确定这需要多长时间)。当前我的代码如下所示:

    $numbers = range(1,100000);
    shuffle($numbers); //Randomizing the index (no duplication at all)

    $count = 0; //Begin with an index of 0

    $args = array(
        \'post_type\' => \'xn_group\',
        \'post_status\' => \'publish\'
    );


    //This should get all the posts of xn_group, all of these posts will get the value of its meta_key \'xn_group_order\' shuffled (randomized daily).
    $the_query = new WP_Query($args);

    //DIRECT QUERYING...(to reduce time complexity)

    while($the_query->have_posts()) : $the_query->the_post();

        update_post_meta(get_the_ID(), "xn_group_order", $numbers[$count]);
        //$count += mt_rand(1,10); //Another technique to ensure fair randomization (not necessary).
        $count += 1;

    endwhile;

    wp_reset_query();
然而,我担心,随着帖子越来越大,所做的更改将花费很多。因此,我想问一个更好的方法来实现这一点。可能使用SQL语句?有什么想法吗?

2 个回复
SO网友:Courtney Ivey

对于这样的密集型流程,最好安排一个WP cron事件,以每天或每天两次的计划来处理该流程。

签出此WP Codex页以获取wp_schedule_event() function

SO网友:Mark Kaplun

可能使用SQL语句?

直接SQL查询非常危险,尤其是在更新数据库时。至少您会使任何对象缓存失去同步,并且可能会错过导入操作和筛选器的执行。

如果此更新很少完成,那么最好再花一分钟的时间来冒系统完整性的风险。

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post