Shortcode for Wordpress


Shortcode for Wordpress

我正在尝试为Wordpress制作一个简码,它将根据帖子的"id"显示特定的帖子。

我在下面找到了一个简码示例,其中显示了"类别 1"的最新帖子。

关于我应该怎么做才能完成这项工作的任何想法。

function pp_recent_work($atts, $content ) {
 extract(shortcode_atts(array(
    'limit'=>'4',
    'title' => 'Recent Work',
    'orderby'=> 'date',
    'order'=> 'DESC',
    'filters' => '',
    'carousel' => 'yes'
    ), $atts));
    $output = '';
    if($filters){
        $filterstemparray = explode(',', $filters);
        if (count($filterstemparray)>1) {
            $filtersarray = $filterstemparray;
        } else {
            $filtersarray = $filterstemparray[0];
        }
    };
    if($filters=="all" || empty($filters)) {
         $wp_query = new WP_Query(
            array(
                'post_type' => array('portfolio'),
                'showposts' => $limit,
                'orderby' => $orderby,
                'order' => $order
                ));
    } else {
       $wp_query = new WP_Query(
        array(
            'post_type' => array('portfolio'),
            'showposts' => $limit,
            'orderby' => $orderby,
            'order' => $order,
            'tax_query' => array(
                array(
                    'taxonomy' => 'filters',
                    'field' => 'slug',
                    'terms' => $filtersarray
                    )
                ),
            )
            );
    }
    if ( $wp_query->have_posts() ):
    while( $wp_query->have_posts() ) : $wp_query->the_post();
        $id = $wp_query->post->ID;
        $type = get_post_meta($id, 'pp_pf_type', true);
        if($carousel == 'yes') { $output .= '<li class="four columns">'; } else { $output .= '<div class="four columns">';}
        $output .= '<a href="'.get_permalink().'" class="portfolio-item"><figure>';
        $videothumbtype = ot_get_option('portfolio_videothumb');
            if($type == 'video' && $videothumbtype == 'video') {
            global $wp_embed;
            $videolink = get_post_meta($id, 'incr_pfvideo_link', true);
            $post_embed = $wp_embed->run_shortcode('[embed  width="220" height="147"]'.$videolink.'[/embed]') ;
            $output .= '<div class="picture recent_video">'.$post_embed.'</div>';
        } else {
            if ( has_post_thumbnail()) {
                $output .= get_the_post_thumbnail($wp_query->post->ID,'portfolio-thumb');
            }
        }
        $output .= '<figcaption class="item-description"><h5>'.get_the_title().'</h5>';
            $terms = get_the_terms( $wp_query->post->ID, 'filters' );
            if ( $terms && ! is_wp_error( $terms ) ) : $output .= '<span>';
                $filters = array();
                $i = 0;
                foreach ( $terms as $term ) {
                    $filters[] = $term->name;
                    if ($i++ > 0) break;
                }
                $outputfilters = join( ", ", $filters ); $output .= $outputfilters;
            $output .= '</span>';
            endif;
}
add_shortcode('recent_work', 'pp_recent_work');

使用此简码

function pp_recent_work($atts, $content ) {
    $post_IDS = explode(',', $atts['post_ids']);
    if($filters=="all" || empty($filters)) {
         $wp_query = new WP_Query(
            array(
                'post_type' => array('portfolio'),
                'showposts' => $limit,
                'orderby' => $orderby,
                'order' => $order
                ));
    } else {
       $wp_query = new WP_Query(
        array(
            'post_type' => array('portfolio'),
            'showposts' => $limit,
            'orderby' => $orderby,
            'order' => $order,
            'post__in'=> array($post_IDS),
            )
        );
    }
    if ( $wp_query->have_posts() ):
    while( $wp_query->have_posts() ) : $wp_query->the_post();
        $id = $wp_query->post->ID;
        //do the stuff here
    endwhile;
    endif;
}
add_shortcode('recent_work', 'pp_recent_work');

并使用页面中的短代码作为多个帖子的[recent_work post_ids="21,22,23"]传递ID作为逗号分隔的字符串

对于单个邮政通行证 ID 作为[recent_work post_ids="21"]

在//do 这里的东西之后的示例中,我添加了以下内容,然后添加了您在帖子中提到的简码。

它返回特定类别的帖子,但不返回具有我在简码中指定的 id 的帖子。

问题可能出在下面的代码中?

{ $output .= '<div class="four columns">';}
        $output .= '<a href="'.get_permalink().'" class="portfolio-item"><figure>';
            if ( has_post_thumbnail()) {
                $output .= get_the_post_thumbnail($wp_query->post->ID,'post_ids');
            }
        $output .= '<figcaption class="item-description"><h5>'.get_the_title().'</h5>';