如何为自定义帖子类型调用短代码类别

时间:2014-03-23 17:06:21

标签: php wordpress custom-post-type shortcode nivo-slider

嗨,我正在尝试在我的Wordpress主题中做一些相当棘手的事情 我更像是一名设计师前端开发人员,因此我可以用php进行一些猜测。 任何人都有任何想法为什么此代码只显示一张幻灯片。我想让它在我的主题中从一个类别中运行幻灯片拉入多张幻灯片。

感谢您的帮助

    //Add Nivo Short Codes
function nivo_slider_function($atts){

   extract(shortcode_atts(array(
      'posts' => 5,
      'category' => ''
   ), $atts));

 $args = array(
        'numberposts' => -1,
        'orderby' => 'menu_order',
        'order' => 'ASC',
        'post_type' => 'homepage_slider'
    );

    if ( ! empty( $category ) ) {
        $args['category_name'] = $category;
    }

    $posts = get_posts( $args );

    $homepage_slider  = '<div id="slider">'; //Open the container
    foreach ( $posts as $post ) { // Generate the markup for each Question
        $homepage_slider .= sprintf(('<h3><a href="">%1$s</a></h3><div>%2$s</div>'),
            $post->post_title,
            wpautop($post->post_content)
        );
    }
    $homepage_slider .= '</div>'; //Close the container


   $return_string = '<div id="slider" class="nivoSlider">';

   query_posts(array('post_type' => 'homepage_slider', 'orderby' => 'menu_order', 'order' => 'ASC' , 'showposts' => $posts));

   if (have_posts()) :
      while (have_posts()) : the_post();

         $slider_img_src = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'homepage-slide', false);
         $target_link = get_post_meta(get_the_ID(), 'slide_target_link', true);   
         $return_string .= '<a href="'.$target_link.'" rel="nofollow"><img src="' . $slider_img_src[0] .'" /></a>';

      endwhile;
   endif;
   $return_string .= '</div>';

   wp_reset_query();
   return $return_string;

}

function register_shortcodes(){
   add_shortcode('slider-demo', 'nivo_slider_function');
}

add_action( 'init', 'register_shortcodes');

1 个答案:

答案 0 :(得分:0)

我看到你在做什么,并且有一种更简单的方法。用SMART SLIDER 2替换滑块。它有不同的设置,包括一个称为动态。使用此动态滑块,您可以使用站点中某个类别的幻灯片。

我上周才发现这一点,我非常喜欢这款滑盖的灵活性。它很重,因为它可以让你做的功能不同。所以,如果你担心的话。按照您在虚假WP站点中的需要进行设置,删除HTML,PHP,JS和CSS并将其迁移到您站点的页面中。这显然会有更多的工作,但你会有一个较小的代码,你不必担心搞清楚。

祝你好运