Шорткод WP игнорирует переданное значение

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'] не проходит. Никаких ошибок, никаких предупреждений, просто не работает. Любая помощь или insite очень ценится.


person Jim Hudson    schedule 07.06.2019    source источник


Ответы (2)


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

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

[featured numb='2']

и не

[featured = '2']

person Augusto Moura    schedule 08.06.2019
comment
Да, я вижу, что кто-то уже принял ваш ответ, иначе я бы принял. Не знаю, почему я пропустил это, сосредоточившись на функции, которая, я думаю, является проблемой. - person Jim Hudson; 09.06.2019

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

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

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

To

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

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

[featured numb='2']

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

person Faham Shaikh    schedule 07.06.2019