在短码属性中返回多个值​

时间:2020-12-02 作者:Renan Bessa

今天,如果我只传递一个值,那么我在下面创建的短代码可以正常工作,但是,现在我正在尝试这个短代码,以便属性可以接收多个值。其想法是让短代码如下所示:[youlike id_post = \'6059, 76912\']. 我试图在帖子中这样添加,但没有成功。

在我的函数下面

function youCanLike( $atts ) {
    ob_start();
    
    $value = shortcode_atts( array(
        \'id_post\' => \'\',
    ), $atts );

    // Check if href has a value before we continue to eliminate bugs
    if ( !$value [\'id_post\'] )
        return false;

    $args = array(
        \'post__in\' => array( esc_attr( $value[\'id_post\'] ) ),
        \'orderby\' => \'date\',
        \'order\' => \'DESC\'
    );

    get_template_part( \'global-templates/blocks/block\', \'you-can-like\', $args );

    return ob_get_clean();   
} 
add_shortcode( \'youlike\', \'youCanLike\' );
这就是get\\u template\\u part文件调用的地方。i、 e。block-you-can-like.php

<div class="content-box--primary">
    <h2 class="content-box--primary__head">You may also be interested:</h2>
    
        <?php
        
        $args = wp_parse_args( $args );

        $query = new WP_Query( $args );

        if( $query->have_posts() ):
            while( $query->have_posts() ): $query->the_post();

        ?>

    <article class="content-box--primary__content">
        <a href="<?php the_permalink(); ?>" class="content-box--primary__link">
            <h3 class="content-box--primary__title"><?php the_title(); ?></h3>
            <span class="content-box--primary__more">Read More</span>   
        </a>
    </article>

    <?php
        endwhile;
        wp_reset_postdata();
        endif;                                  
    ?>

</div>

1 个回复
最合适的回答,由SO网友:Awais 整理而成

post__in 获取post ID数组。您要传递的是一个字符串到数组中

尝试稍微更改代码,例如。

   // Check if href has a value before we continue to eliminate bugs
    if ( !$value [\'id_post\'] )
        return false;


    $post_ids_array = explode(\',\', $value[\'id_post\']);

    $args = array(
        \'post__in\' => $post_ids_array,
        \'orderby\' => \'date\',
        \'order\' => \'DESC\'
    );