Wordpress循环使用category_name中的两个变量

时间:2016-06-24 11:06:53

标签: php wordpress loops

我需要一些帮助来解决格式错误的问题。

我在页面模板的开头有这段代码;

<?php $term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) ); 
            $parent = get_term($term->parent, get_query_var('taxonomy') );?>

                <?php echo do_shortcode("[ecs-list-events message='' cat='{$term->slug}']"); ?>
                <?php echo do_shortcode("[ecs-list-events message='' cat='{$parent->slug}']"); ?> 

我现在正试图在一个循环中使用这些变量“$ term-&gt; slug”和“$ parent-&gt; slug”,我现在非常确定循环中的所有内容都应该是第一个变量但是第二个被忽略了。

<?php

// WP_Query arguments
$args = array (
    'category_name' => array ("$parent->slug", "$term->slug"),
);

// The Query
$welcome_text = new WP_Query( $args );

// The Loop
if ( $welcome_text->have_posts() ) {
    while ( $welcome_text->have_posts() ) {
        $welcome_text->the_post();

        the_content();
    }
} else {
    // no posts found
}

// Restore original Post Data
wp_reset_postdata();


?>

当我尝试使用两者进行格式化时,我得到以下内容我得到的错误就像;

Warning: urlencode() expects parameter 1 to be string, array given in /var/sites/s/silverfx.co.uk/public_html/wp-includes/formatting.php  

关于我哪里出错的任何想法?

由于

[编辑]

我刚刚发现category_name只接受字符串,所以我想现在的问题是为什么它准备好第一个变量而不是第二个?

它们被排序的方式无关紧要,第一个总是有效,第二个被忽略。

目前的格式是;

'category_name' => $parent->slug, $term->slug);

1 个答案:

答案 0 :(得分:1)

它只接受以,+分隔的字符串。

你的args应该是:

$cats = [];
$cats[] = $parent->slug;
$cats[] = $term->slug;

'category_name' => implode(",", $cats));

或者

'category_name' => $parent->slug. '+'. $term->slug);

您可以详细了解here