有人能帮我改正显示类别的快捷代码吗?

时间:2021-01-12 作者:Moiz Aslam

实际上,问题出在这段代码中,也就是说,如果我将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\' ); 

1 个回复
最合适的回答,由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 分类学

相关推荐

debug.log is not created

日志只在管理面板加载时显示,页面加载后将隐藏,因此我无法显示日志。我还想调试。日志,但wp内容中没有该文件。 * * @link https://codex.wordpress.org/Debugging_in_WordPress */ define( \'WP_DEBUG\', true ); define( \'WP_DEBUG_LOG\', true ); define( ‘WP_DEBUG_DISPLAY’, true ); define( ‘S