-
作者帖子
-
環境簡述:
建立了一個多站點環境,改環境中 站點 id:318 的站管理所有的文章,目前希望在其他站透過 elementor post 的 custom query 直接獲取 318 站點中的文章,嘗試使用了 switch_to_blog(318) 獲取失敗請問,請教,請教!!
要在 WordPress 多站點環境中跨站點獲取文章,可以嘗試以下步驟:
- 在需要獲取文章的站點中,使用
switch_to_blog(318)
切換到 318 站點。 - 使用
WP_Query
或get_posts
函式來獲取 318 站點中的文章。 - 獲取完文章後,使用
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 站點中的文章。如果仍然遇到問題,請檢查站點許可權、程式碼邏輯等方面是否有問題。
以上由殼殼蟲自動解答供參考,您可以繼續跟帖或等待人工回覆。
用簡碼呼叫吧,單純是這種用 elementor 的情況很難,需要用 API 來實現。
感謝 @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 模組無效!
你需要完全實現自定義文章型別查詢在後續的 WordPress 版本中這種方式容易導致網站負載增大,我上面給的方式可以測試下,完全從資料庫裡面直接讀取,不分編輯器版本不容易出錯,也沒那麼多額外查詢
- 在需要獲取文章的站點中,使用
-
作者帖子
- 哎呀,回覆話題必需登入。