最近5篇使用Switch_to_Blog循环的帖子

时间:2012-06-15 作者:Rory Rothon

我肯定我一定做错了什么,我真的很感谢你的帮助。

我正在尝试使用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 );

2 个回复
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();
}

SO网友:Ali Basheer

要获取博客ID,可以使用:

$blogs = wp_get_sites ();
$blogs_id = array();
foreach ($blogs as $blog) {
    $blogs_id [] = $blog["blog_id"];
}
而不是:

global $wpdb, $blog_id, $post;
$blogs = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM wp_blogs ORDER BY blog_id" ) );

结束

相关推荐

在MultiSite中的循环外部获取_Author_meta的$user_id

因此,我目前正在运行一个多站点安装,超级管理员将创建所有新站点。我们使用的其中一个模板有一个贷款官员的博客页面。我正在扩展用户配置文件,以便新用户可以输入需要在其页面上显示的关键数据。除了创建站点时自动添加的超级管理员之外,每个站点只有一个用户。我发现,如果要使用该函数,需要指定用户IDthe_author_meta(); 循环外部。这是我的问题。我无法在模板中输入ID,因为每个新的贷款官员都将使用相同的主题模板。那么,如何使这些字段成为动态的呢?下面是配置文件部分的图像,以便LO在视觉上有所帮