我正在尝试为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>';