实际上,问题出在这段代码中,也就是说,如果我将id直接放在;“条款”;任何类似岗位类型;[arts-list 10]
, 然后,包含此id的此类帖子会在前端显示帖子,但如果我放置其他类似的内容terms => \'type\'
然后我试着显示一个特定类型的帖子,比如;[arts-list type=10]
, 前端没有显示帖子,实际上我想我必须传递shortcode的参数,但我怎么做,我无法调试这个,这就是我问你的原因。我希望你现在明白我的问题是什么。
function diwp_create_shortcode_arts_post_type(){
$atts = shortcode_atts( array(
\'type\' => \' \',
), $atts );
$args = array(
\'post_type\' => \'arts\',
\'posts_per_page\' => \'10\',
\'post_status\' => \'publish\',
\'tax_query\' => array( array(
\'taxonomy\' => \'Types\',
\'field\' => \'term_id\',
\'terms\' => \'10\',
) )
);
$query = new WP_Query($args);
if($query->have_posts()) :
while($query->have_posts()) :
$query->the_post() ;
$result .= \'<div class="art-item">\';
$result .= \'<div class="art-image">\' . get_the_post_thumbnail() . \'</div>\';
$result .= \'<div class="art-name">\' . get_the_title() . \'</div>\';
$result .= \'<div class="art-desc">\' . get_the_content() . \'</div>\';
$result .= \'</div>\';
endwhile;
wp_reset_postdata();
endif;
return $result;
}
add_shortcode( \'arts-list\', \'diwp_create_shortcode_arts_post_type\' );
最合适的回答,由SO网友:Sally CJ 整理而成
我想我必须传递shortcode的参数,但我怎么做
是的,这是正确的,并且您已经在将参数传递给您的快捷码了[arts-list type=10]
— 虽然您应该将参数值括在引号中,即。type="10"
.
但是$atts
在您的短代码中,在shortcode_atts()
调用,因此函数应定义如下:
function diwp_create_shortcode_arts_post_type( $atts )
因为函数已经在解析存储在
$atts
数组,则只需使用
tax_query
(即分类查询)子句:
\'tax_query\' => array(
array(
\'taxonomy\' => \'Types\',
\'field\' => \'term_id\',
\'terms\' => wp_parse_id_list( $atts[\'type\'] ),
),
),
注意:在上面的示例中,我使用
wp_parse_id_list()
这样我们就可以传递一个术语ID列表,例如。
[arts-list type="10,11,12"]
. 但更重要的是,确保ID指向
Types
分类学