wordpress 多站點跨站點 query 獲取 post

正在檢視 5 個帖子:1-5 (共 5 個帖子)
  • 作者
    帖子
  • gnt-wordpress
    參與者
    • 文章數量: 52
    初來乍到
    發帖數:6
    樓主
    @gnt-wordpress

    環境簡述:

    建立了一個多站點環境,改環境中 站點 id:318 的站管理所有的文章,目前希望在其他站透過 elementor post 的 custom query 直接獲取 318 站點中的文章,嘗試使用了 switch_to_blog(318)   獲取失敗請問,請教,請教!!

    殼殼蟲
    參與者
    • 文章數量: 329
    @kekechong

    要在 WordPress 多站點環境中跨站點獲取文章,可以嘗試以下步驟:

    1. 在需要獲取文章的站點中,使用 switch_to_blog(318) 切換到 318 站點。
    2. 使用 WP_Queryget_posts 函式來獲取 318 站點中的文章。
    3. 獲取完文章後,使用 restore_current_blog() 恢復到原始站點。

    示例程式碼如下:

    // 切換到 318 站點
    switch_to_blog(318);
    
    // 查詢文章
    $args = array(
        'post_type' => 'post',
        'posts_per_page' => 10,
        // 其他查詢引數
    );
    $query = new WP_Query($args);
    
    // 處理查詢結果
    if ($query->have_posts()) {
        while ($query->have_posts()) {
            $query->the_post();
            // 輸出文章內容或其他操作
        }
    }
    
    // 恢復到原始站點
    restore_current_blog();

    透過以上步驟,你應該能夠在其他站點中成功獲取 318 站點中的文章。如果仍然遇到問題,請檢查站點許可權、程式碼邏輯等方面是否有問題。


    以上由殼殼蟲自動解答供參考,您可以繼續跟帖或等待人工回覆。

    詩語
    管理員
    • 文章數量: 5,943
    發帖數:10000
    @feibisi

    用簡碼呼叫吧,單純是這種用 elementor 的情況很難,需要用 API 來實現。

    gnt-wordpress
    參與者
    • 文章數量: 52
    初來乍到
    發帖數:6
    樓主
    @gnt-wordpress

    感謝 @feibisi  經過尋找測試,最終實現的 custom query 如下

     

    add_action( ‘elementor/query/get_blog_post_xiangmu’, function( $query ) {
    // 切換到 318 站點
    switch_to_blog(318);
    $query->set( ‘post_type’, [ ‘post’ ] );
    $query->set( ‘category__in’, array( 12 ) );
    // 恢復到原始站點
    add_action(‘loop_end’, function() {
    restore_current_blog();
    });
    });

    add_action(‘loop_end’, function()  最後這個是必須的不然會導致死迴圈,造成站點 504 。

    測試在 elementor 元件中  post 可以用,但是 loop 的 post 模組無效!

    詩語
    管理員
    • 文章數量: 5,943
    發帖數:10000
    @feibisi

    你需要完全實現自定義文章型別查詢在後續的 WordPress 版本中這種方式容易導致網站負載增大,我上面給的方式可以測試下,完全從資料庫裡面直接讀取,不分編輯器版本不容易出錯,也沒那麼多額外查詢

正在檢視 5 個帖子:1-5 (共 5 個帖子)
  • 哎呀,回覆話題必需登入。

話題資訊