【问题标题】:Use get_posts on custom_type in a Wordpress plugin在 Wordpress 插件中对 custom_type 使用 get_posts
【发布时间】:2016-03-17 23:19:56
【问题描述】:

我正在构建一个插件来一次更新自定义类型的所有帖子。

我有超过 20,000 个活动列表和 1000 个场地。创建时在列表帖子中选择了一个场所,并将一些信息复制到列表中,但如果您在此之后修改场所,则必须手动刷新列表。 (我没有创建那个系统,而是试图改进。)

在我创建的新管理页面中,单击一个按钮,它会刷新并在 GET 上运行 PHP 函数。该部分有效,该功能被触发。但显然我正在使用的 get_posts 函数导致该函数崩溃。

 function ac_update_listings() {
        global $post;

        $my_posts = get_posts( array(
                                    'post_type' => 'listing', 
                                    'post_status' => 'any',
                                    'numberposts' => -1
                                    ) );

        foreach ( $my_posts as $my_post ):

        $post_id = $my_post['ID'];
        echo $post_id;



            //Get Venue ID

            $thevenue = get_post_meta($post_id, 'thevenue', true);

            //Get Venue info

            $block = get_post_meta($thevenue, 'block', true);
            $street = get_post_meta($thevenue, 'street', true);
            $number = get_post_meta($thevenue, 'number', true);


            // Update Data

            update_post_meta($post_id, 'block', $block);
            update_post_meta($post_id, 'street', $street);
            update_post_meta($post_id, 'number', $number);

        endforeach;

        echo "Listings are now updated.";
    }

【问题讨论】:

  • 当你说它崩溃时,你能更具体一点吗?是否有任何错误消息?
  • 没有消息,只有一个空白页。放置在函数之后的附加 HTML 也不会出现。

标签: php wordpress get custom-type


【解决方案1】:

首先,你有numberposts,这应该是posts_per_page。由于get_posts 使用WP_Query parameters 进行查询。

而且我认为如果将其设置为 999 而不是 -1,查询会运行得更快。 -1 占用所有帖子,如果您有 1000 多个帖子,则需要时间和资源。您可以通过仅查询最新帖子来限制查询,或者如果您的场地有到期日期或类似的东西,如果您将那些过期的帖子推送到草稿,您可能只查询已发布的帖子,这将是

所有这些都将提高查询的性能,并且可以防止任何崩溃。

【讨论】:

  • 非常感谢!查询所有帖子导致崩溃,现在使用“999”可以正常工作。
猜你喜欢
  • 2011-03-24
  • 2012-02-06
  • 2017-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-04
  • 2014-09-26
相关资源
最近更新 更多