使用Switch_to_Blog时从上一博客获取变量

时间:2017-07-25 作者:Tanmccuin

我正在编写一个查询,使用switch\\u to\\u blog()切换到MU站点的主博客。一切都很好,只是我正在尝试编写一个wp\\u查询,其中包含上一篇博客中所需的变量。从主博客中提取的所有内容都存储在一个CPT中,该CPT具有对应于各种子博客名称的分类法。我正在尝试存储bloginfo(“名称”);从我以前的博客中,并在切换到博客后将其拉入查询中,但由于明显的原因,运气不佳(它获取的是当前的bloginfo,而不是以前的bloginfo)有什么方法可以将以前的bloginfo保存到某种类型的全局中,或者切换回以前的blog以获取变量mid查询?

有关更好的说明,请参见下面的查询:

$location = bloginfo(\'name\'); 
   switch_to_blog( 1 );

    $the_query = new WP_Query(  array(
        \'post_type\' => \'staff\', 
        \'posts_per_page\' => -1, 
        \'tax_query\' => array( 
            array(
                \'taxonomy\' => \'location\',  // name of tax
                \'field\'    => \'slug\',
                \'terms\'    => $location, // this doesn\'t work, returns nothing
            ),
        ),
    ) ); ?>

  <?php if ( $the_query->have_posts() ) : ?>

    <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>

        <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
    <?php endwhile; ?>

    <?php wp_reset_postdata(); ?>

<?php else : ?>
    <p><?php _e( \'Sorry, no posts matched your criteria.\' ); ?></p>
<?php endif; ?>

<?php   restore_current_blog(); ?>

2 个回复
SO网友:Rick Hellewell

我假设您的代码在函数中,应该传递当前博客所需的变量。因此,假设问题中的代码由somefunction(), 将其更改为传递当前博客中的变量,如中所示

// variables from the current blog
$current_blog_1 = "some value"
$current_blog_2 = "another value"
// do the code in the original question
somefunction ($current_blog_1, $current_blog_2);
将当前的\\u blog值放入一个数组中可能更有效,如

// set some values before you call your code via a function
$current_blog_array = array();
$current_blog_array[] = "some value";
$current_blog_array[] = "another value";
// call the function with an array, empty if needed
somefunction ($current_blog_array = array());
然后处理原始代码中的数组值。

SO网友:Morgan Estes

bloginfo() 回声,而不是返回,因此使用它保存到$location 变量使用get_bloginfo() 相反,它应该可以从调用代码的站点获取信息。

结束

相关推荐

WordPress MultiSite如何知道已安装插件?

我正在运行一个WP多站点网络。我很想知道WordPress是如何知道网络站点上安装了插件的:WP如何知道插件是网络激活的</WP如何知道插件在站点级别被激活它是否在某个DB表中记录了此实例?如果是,哪个表以及如何标记?谢谢你的帮助。