簡體   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