快捷代码“POST_PER_PAGE”不起作用

时间:2018-03-08 作者:Marya

我设法使这个短代码工作,它显示了我想要的一切。我现在面临的唯一问题是如果我使用posts_per_page => 1, 它不断显示所有帖子。如何才能只显示该类别的最新帖子?我试过:posts_per_page => 1 没有“”,但什么都没有,它仍然不工作。

以下是我使用的代码:

function Arte($atts, $content = null) {
    extract(
        shortcode_atts(
            array( 
                "pagination" => \'false\',
                "query" => \'\',
                "category" => \'arte\',
                "posts_per_page"    => \'1\',
            ), 
            $atts
        )
    );



    global $wp_query,$paged,$post;

    $temp = $wp_query;
    $wp_query= null;
    $wp_query = new WP_Query();

    if ( $pagination == \'true\' ) {
        $query .= \'&paged=\'.$paged;
    }

    if (!empty($category)) {
        $query .= \'&category_name=\'.$category;
    }

    if (!empty($query)) {
        $query .= $query;
    }

    $wp_query->query($query);

    ob_start();
    ?>
    <ul class="loop">
        <?php while ( $wp_query->have_posts() ) : $wp_query->the_post(); ?>
            <li><a href="<?php the_permalink() ?>" rel="bookmark">
                    <div class="cont-overlay"><?php the_post_thumbnail(
                            \'ilRaccoglitore_single\', array(
                            \'class\' => \'img-thumb-sidebar\',
                            \'alt\'   => get_the_title(), )); ?>
                        <div class="overlay"></div>
                    </div>
                    <h5 class="title-sidebar"><?php echo the_title(); ?></h5>
                </a></li>
            <li class="excerpt-sidebar"><?php the_excerpt(); ?></li>
        <?php endwhile; ?>
    </ul>

    <?php if ($pagination == \'true\') { ?>
        <div class="navigation">
            <div class="alignleft"><?php previous_posts_link(\'« Previous\') ?></div>
            <div class="alignright"><?php next_posts_link(\'More »\') ?></div>
        </div>
    <?php } ?>

    <?php
    $wp_query = null; $wp_query = $temp;

    $content = ob_get_contents();

    ob_end_clean();

    return $content;
}

add_shortcode("arte", "Arte");
提前感谢您!

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

你有posts_per_page 属性,但实际上并不是在WP_Query. 您在代码中做了一些不必要的事情,但目前的问题是您需要添加:

if( !empty( $posts_per_page )) {
    $query .= \'&posts_per_page=\'.$posts_per_page;
}
打电话之前:

$wp_query->query($query);
正如当前编写的一样,您的查询不考虑posts_per_page 考虑的参数

SO网友:DHL17

例如,尝试以下操作:

function my_shortcode($atts,$content=null)
{
    extract(shortcode_atts(array(
        \'posts\'=>\'1\',
    ),$atts));

        $query = new WP_Query(array(
        \'posts_per_page\'=> $posts
        ));
}

add_shortcode("latest_post","my_shortcode");
并添加短代码[latest_post posts=1]

结束

相关推荐

Primary menu shortcode name

我有一个快捷码,可以将菜单放在我想要的地方,但它只在主菜单上起作用。我不想对主菜单使用快捷键,我想创建一个名为shortcodemenu的新菜单,并在使用时让快捷键调用它。function print_menu_shortcode($atts, $content = null) { extract(shortcode_atts(array( \'name\' => null, \'class\' => null ), $atts)); return wp_nav_menu( a