繁体   English   中英

在Wordpress插件中的custom_type上使用get_posts

[英]Use get_posts on custom_type in a Wordpress plugin

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

我有超过2万项活动和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.";
    }

首先,您有numberposts ,应该是posts_per_page 由于get_posts使用WP_Query参数进行查询。

而且我认为如果将查询设置为999而不是-1,查询的运行速度会更快。 -1负责所有帖子,如果您有1000多个帖子,则需要时间和资源。 您可以通过仅查询最新帖子来限制查询,或者如果您的场所有过期日期或类似的内容(如果您将过期的日期推送到草稿中),则可能只查询已发布的帖子,而这些帖子将小于999 (一个推测)。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM