WP shortcode игнорирует переданное значение - PullRequest
0 голосов
/ 08 июня 2019

WP_Query в шорткоде, игнорируя переданное значение

Я пытался заставить это работать часами. Независимо от того, что я делаю, WP использует значение по умолчанию и игнорирует значения, переданные в функцию.

// Add Shortcode
function ima_featured_member( $atts ) {

    // Attributes
    $attributes = shortcode_atts(
        array(
            'numb' => '1',
        ),
        $atts,
        'featured'
    );

    $dirloop = new WP_Query( array( 
            'post_type' => 'member', 
            'post_status' => 'publish',
            'posts_per_page' => $attributes['numb'],
            'orderby' => 'title',
            'order' => 'ASC',
            'meta_query' => array (
                'relation' => 'AND',
               array (
                    'key'   => 'elc_member_featured',   
                    'value'  => '1',
                    'compare' => '=='
                )
            )
        ));

        if ($dirloop->have_posts())
        {
            $output = "\n";
            while ( $dirloop->have_posts() ) : $dirloop->the_post(); 

                    $output .= ''.get_the_title().'';

             endwhile;
            $output .= "\n";
        } 
        else
        { 
            $output = "nothing";
        }
        wp_reset_postdata();

        return $output;

}
add_shortcode( 'featured', 'ima_featured_member' );

[featured = '2'] не проходит. Нет ошибок, нет предупреждений, просто не работает. Любая помощь или сайт очень ценится.

Ответы [ 2 ]

1 голос
/ 08 июня 2019

Часть функции shortcode_atts выглядит нормально.

Но правильный способ вызова шорткода с параметром numb, равным 2, будет следующим:

[featured numb='2']

а не

[featured = '2']

1 голос
/ 08 июня 2019

Есть несколько изменений, которые необходимо внести в это для работы.

Измените следующий код:

$attributes = shortcode_atts(
    array(
        'numb' => '1',
    ),
    $atts,
    'featured'
);

На

$attributes = shortcode_atts(
    array(
        'numb' => '1',
    ),
    $attributes,
    'featured'
);

Также для короткого кодачтобы получить 2 сообщения, вы должны написать короткий код следующим образом:

[featured numb='2']

Это должно работать для вас.

...