2014-01-11 97 views
2

這是代碼。它只顯示一個圖像,而不管短代碼使用的類別名稱。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,並正確地輸出了變量。請幫忙!

更新* [slider category_name =「main」]是簡碼示例。

+0

您是否像這樣使用短代碼'[slider category_name =「our-super-category」]'? –

+0

是的,這是簡碼格式。 – jamzth

+0

爲您的$ args添加''posts_per_page'=> -1' ...然後嘗試。目前你還沒有定義它可以得到的帖子數量......可能是這個問題。 – Nishant

回答

0

您正在提取到短碼功能中的$ atts ['other']。您應該更新

wptuts_slider_template($category_name); 

wptuts_slider_template($atts['other']); 

在相同的功能,在數據正確地傳遞。