显示多个数组的自定义帖子

时间:2017-01-03 16:09:29

标签: php wordpress shortcode

我想通过短代码显示来自多个类别的所有帖子。如果我在短代码属性中使用一个类别,它就可以工作。

<?php echo do_shortcode( '[people cat_name="lab-members"]'); ?>

但是,当我在短代码属性中使用两个或三个类别时,它无法正常工作。

<?php echo do_shortcode( '[people cat_name="lab-members, advisors"]'); ?>

以下是我正在尝试的内容

   function mmddl_people_shortcode($atts)
{
    // define attributes and their defaults
    extract(shortcode_atts(array (
                               'cat_name' => ''
                           ), $atts));

    $args = array (
        'post_type' => 'people',
        'tax_query' => array (
            array (
                'taxonomy' => 'people_category',
                'field'    => 'slug',
                'terms'    => $cat_name
            ),
        ),
    );

    // get the arguments
    $loop = new WP_Query($args);
    // the loop
    while ($loop->have_posts()) : $loop->the_post(); ?>

        <!-- team member -->
        <div id="people-<?php the_ID() ?>" <?php post_class('col-sm-6 col-md-3 wow fadeInUp'); ?> >
            <div class="team-mate">
                <h4><?php the_title(); ?></h4>
                <figure class="member-photo">
                    <!-- member photo -->
                    <?php
                    if (has_post_thumbnail()) {
                        the_post_thumbnail('full', array ('class' => 'img-responsive'));
                    } else {
                        echo '<img src="http://placehold.it/450x450" alt="' . get_the_title() . '" class="img-responsive">';
                    }
                    ?>
                </figure>
            </div>
        </div>
        <!-- // team member -->

    <?php endwhile;
}

add_shortcode('people', 'mmddl_people_shortcode');

1 个答案:

答案 0 :(得分:1)

要在税务查询中传递多个术语,您需要指定一个数组。查看the docs

,例如,在您的情况下:

$terms = array_map('trim', explode(',', $cat_name))

这就是你作为terms的参数传递的内容。

我正在通过“trim”传递结果数组,因此您可以使用逗号周围的空格(或不使用空格)指定您的术语。