Не могу установить posts_per_page, ни заказать / отсортировать мою функцию шорткода - PullRequest
0 голосов
/ 27 февраля 2020

Я работаю над новой функцией, в которой я могу просто добавить шорткод, чтобы показать дочерние страницы заданной мной c страницы. Все работало оштрафовано и выглядело хорошо, пока я не хотел заказать / отсортировать их, а также установить предел.

Вот мой код

function whatwedo_function () {

    $dynamicVVG = url_to_postid( site_url('what-we-do') );

    $args = array(
        'parent' => $dynamicVVG,
        'post_type' => 'page',
        'post_status' => 'publish',
        'order' => 'DESC',
        'posts_per_page' => 2,

    ); 
    $pages = get_pages($args); 

    // Initialize a variable to build your output string
    $output ="";

    $output = '<ul class="four no-bullets container"><div class="row">';

    foreach( $pages as $page ) {
        // Add to the string rather than return it
        $output .='
        <li class="col-md-4">
            <a href="'.get_permalink($page->ID).'" rel="bookmark" title="test">
                <span class="thumbnail ">'.get_the_post_thumbnail($page->ID, "large", array("class"=>"img-fluid") ).'</span>
            </a>

            <a href="'.get_permalink($page->ID).'" rel="bookmark" title="test">
                <h3><span class="title">'.$page->post_title.'</span></h3>
            </a>

            <a href="'.get_permalink($page->ID).'" rel="bookmark" title="test">
                <span class="desc">'.get_the_excerpt($page->ID).'</span>
            </a>

            <a href="'.get_permalink($page->ID).'" rel="bookmark" title="test">
                <button type="button" class="btn btn-primary btn-lg btn-block mt-4">Block level button</button>
            </a>
        </li>';
    }

    $output .='
        </ul>
    </div>';

    wp_reset_postdata();
    return $output;
}

add_shortcode('what-we-do','whatwedo_function');

Я пробовал с

  • wp_reset_postdata ();
  • wp_reset_query ( );
  • В $ args добавление posts_per_page
  • В $ args добавление showposts

Кто-нибудь видит, что я здесь пропустил?

1 Ответ

0 голосов
/ 02 марта 2020

Добавить параметр для сортировки

$args = array(
    'parent' => 2,
    'post_type' => 'page',
    'post_status' => 'publish',

    ...
    'orderby'          => 'date',
    'order'            => 'DESC',
    ...

    'posts_per_page' => 2,

); 

Заменить код с

$pages = get_pages($args); 

TO

$query = new WP_Query( $args );
$pages = $query->posts;

Окончательное заключение. Также измените родителя на post_parent

    function whatwedo_function () {


    $dynamicVVG = url_to_postid( site_url('what-we-do') );

    $args = array(
        'post_parent' => $dynamicVVG,
        'post_type' => 'page',
        'post_status' => 'publish',
        'orderby'          => 'date',
        'order'            => 'DESC',
        'posts_per_page' => 2,

    ); 


    $query = new WP_Query( $args );

    $pages = $query->posts;



    // Initialize a variable to build your output string
    $output ="";

    $output = '<ul class="four no-bullets container"><div class="row">';

    foreach( $pages as $page ) {
        // Add to the string rather than return it
        $output .='
        <li class="col-md-4">
            <a href="'.get_permalink($page->ID).'" rel="bookmark" title="test">
                <span class="thumbnail ">'.get_the_post_thumbnail($page->ID, "large", array("class"=>"img-fluid") ).'</span>
            </a>

            <a href="'.get_permalink($page->ID).'" rel="bookmark" title="test">
                <h3><span class="title">'.$page->post_title.'</span></h3>
            </a>

            <a href="'.get_permalink($page->ID).'" rel="bookmark" title="test">
                <span class="desc">'.get_the_excerpt($page->ID).'</span>
            </a>

            <a href="'.get_permalink($page->ID).'" rel="bookmark" title="test">
                <button type="button" class="btn btn-primary btn-lg btn-block mt-4">Block level button</button>
            </a>
        </li>';
    }

    $output .='
        </ul>
    </div>';

    wp_reset_postdata();
    return $output;
}

add_shortcode('what-we-do','whatwedo_function');
...