Шорткод Wordpress не передает переменную

Вот код. Он отображает только одно изображение, независимо от названия категории, которое использует шорткод.

<?php


// Create Slider

function wptuts_slider_template($category_name) {
    global $post;
    // Query Arguments
    $args = array(
                'post_type' => 'slides',
                'order' => 'ASC',
                'category_name' => $category_name
            );

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

    // Check if the Query returns any posts
    if ( $the_query->have_posts() ) {

    // Start the Slider ?>
        <ul class="slides <?php wp_title(); ?> <?php echo $category_name ?>" data-options="animation:fade;
                          pause_on_hover:true;
                          resume_on_mouseout: true;
                          timer_speed:3000;
                          animation_speed:500;
                          navigation_arrows:true;
                          bullets:true;
                          slide_number:false;
                          next_on_click:true;
                          timer: true;" data-orbit>

            <?php       
            // The Loop
            while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
                <li>

                <?php // Check if there's a Slide URL given and if so let's a link to it
                if ( get_post_meta( get_the_id(), 'wptuts_slideurl', true) != '' ) { ?>
                    <a href="<?php echo esc_url( get_post_meta( get_the_id(), 'wptuts_slideurl', true ) ); ?>">
                <?php }

                // The Slide's Image
                echo get_the_post_thumbnail();

                // Close off the Slide's Link if there is one
                if ( get_post_meta( get_the_id(), 'wptuts_slideurl', true) != '' ) { ?>
                    </a>
                <?php } ?>

                </li>
            <?php endwhile; ?>

        </ul><!-- .slides -->

    <?php }

    // Reset Post Data
    wp_reset_postdata();
}

// Slider Shortcode

function wptuts_slider_shortcode($atts) {
    extract(shortcode_atts(array(
       "category_name" => 'other',
    ), $atts));
    ob_start();
    wptuts_slider_template($category_name);
    $slider = ob_get_clean();
    return $slider;
}
add_shortcode( 'slider', 'wptuts_slider_shortcode' );

Что заставляет это не работать? Я повторил category_name в классе цикла, и он правильно выводит переменную. Пожалуйста помоги!

Update* [slider category_name="main"] — это пример шорткода.


person jamzth    schedule 11.01.2014    source источник
comment
Вы используете такой шорткод [slider category_name="our-super-category"]?   -  person Dima Knivets    schedule 12.01.2014
comment
Да, это формат шорткода.   -  person jamzth    schedule 12.01.2014
comment
добавьте 'posts_per_page' => -1 к своим $args... затем попробуйте. в настоящее время вы не определили количество сообщений, которое он может получить ... может быть, проблема в этом.   -  person Nishant    schedule 12.01.2014
comment
Это не пойдет. Ранее я определил это 5, и оно также не работает с -1. Спасибо за помощь.   -  person jamzth    schedule 12.01.2014


Ответы (1)


Вы извлекаете в $atts['other'] функцию шорткода. Вы должны обновить

wptuts_slider_template($category_name);

to

wptuts_slider_template($atts['other']);

в той же функции для правильной передачи данных.

person BlakePetersen    schedule 11.02.2014