我肯定我一定做错了什么,我真的很感谢你的帮助。
我正在尝试使用switch\\u to\\u blog循环浏览我的所有Sub-Dir“Multisite”博客,如下所示:
global $wpdb, $blog_id, $post;
$blogs = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM wp_blogs ORDER BY blog_id" ) );
foreach ($blogs as $blog){
switch_to_blog($blog->blog_id);
$globalquery = get_posts(\'numberposts=5&post_type=any\');
restore_current_blog();
}
array_merge($globalquery, $portfolio);
它确实可以工作(有点),它会移动到下一个博客(id=2)并检索帖子,但不会进一步,也不会检索主要的博客帖子(id=1)。
我自称是php noob,但我真的很喜欢学习,我觉得我做得很好,哈哈
请问有没有人能帮我一下?
Regardstory公司
UPDATE我正在尝试创建一个可以传递到已声明查询的循环:
// create query the portfolio (pass it to $wp_query)
$portfolio_query = new WP_Query( $portfolio );
SO网友:EAMann
不,它可以很好地检索帖子,但你不能将它们存储在任何地方。下面是您的代码以及逐行文档:
// Set up global variables. Great
global $wpdb, $blog_id, $post;
// Get a list of blogs in your multisite network
$blog_ids = $wpdb->get_col( "SELECT blog_id FROM $wpdb->blogs" );
// Iterate through your list of blogs
foreach ($blog_ids as $id){
// Switch to the next blog in the loop.
// This will start at $id == 1 because of your ORDER BY statement.
switch_to_blog($id);
// Get the 5 latest posts for the blog and store them in the $globalquery variable.
$globalquery = get_posts(\'numberposts=5&post_type=any\');
// Switch back to the main blog
restore_current_blog();
}
// Merge the results of $globalquery with a $portfolio array
array_merge($globalquery, $portfolio);
诀窍在于
foreach
语句,您正在覆盖
$globalquery
. 它将只包含您网络中最后一个博客中的一组帖子。
相反,在foreach
并合并您的$globalquery
其结果:
$globalcontainer = array();
foreach ($blog_ids as $id){
switch_to_blog( $id );
$globalquery = get_posts( \'numberposts=5&post_type=any\' );
$globalcontainer = array_merge( $globalcontainer, $globalquery );
restore_current_blog();
}