代码之家  ›  专栏  ›  技术社区  ›  mwgideon

如何将类别选项添加到快捷码

  •  0
  • mwgideon  · 技术社区  · 7 年前

    我刚开始创建wordpress短代码,现在有了一个可以按我想要的方式工作的短代码。缺少特定的内容。目前,我可以在任何页面上放置以下内容-【children】并从自定义帖子类型“children”中提取所有帖子的查询。我想添加选项,在短代码中添加类别id,类似于[children category=“8”]这是我到目前为止的代码:

    add_shortcode( 'children', 'display_custom_post_type' );
    
    function display_custom_post_type(){
        $args = array(
    'post_type' => 'children',
    'post_status' => 'publish',
    'orderby' => 'title',
    'order' => 'ASC',
        );
        $string = '';
        $query = new WP_Query( $args );
        if( $query->have_posts() ){
            while( $query->have_posts() ){
                $query->the_post();
                $string .= '<div id="childWrapper"><div id="childImage"><a href="' . get_permalink() . '">' . get_the_post_thumbnail() . '</a></div><div style="clear: both;"></div><div id="childName">' . get_the_title() . '</div><div style="clear: both;"></div></div>';
            }
        }
        wp_reset_postdata();
        return $string;
    }
    

    次要-是否可以在多个类别中显示帖子,但只能在每个类别中显示帖子。例如,显示一份儿童名单,这些儿童属于需要重症护理和手术的类别。

    任何帮助都将不胜感激。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Jignesh Bhavani    7 年前

    你应该参考 Shortcode function 来自WordPress Codex。假设您的分类名称为 类别 ,我在您当前的代码中做了一些更改,它应该可以根据您的要求工作。

    /**
     *  [children category="5,7,8"]
     */
    add_shortcode( 'children' , 'display_custom_post_type' );
    
    function display_custom_post_type($atts) {
    
        $atts = shortcode_atts( array(
            'category' => ''
        ), $atts );
    
      //If category is multiple: 8,9,3
      $categories  = explode(',' , $atts['category']);
    
        $args = array(
                'post_type'     => 'children',
                'post_status'   => 'publish',
                'orderby'       => 'title',
                'order'         => 'ASC',
                'posts_per_page'=> -1,
                'tax_query'     => array( array(
                                    'taxonomy'  => 'category',
                                    'field'     => 'term_id',
                                    'terms'     => $categories
                                ) )
            );
    
            $string = '';
            $query = new WP_Query( $args );
    
            if( ! $query->have_posts() ) {
                return false;
            }
    
            while( $query->have_posts() ){
                $query->the_post();
                $string .= '<div id="childWrapper"><div id="childImage"><a href="' . get_permalink() . '">' . get_the_post_thumbnail() . '</a></div><div style="clear: both;"></div><div id="childName">' . get_the_title() . '</div><div style="clear: both;"></div></div>';
            }
            wp_reset_postdata();
    
            return $string;
    }