添加取消变量时不起作用的筛选器

时间:2018-08-12 作者:Raashid Din

我在应用代码时遇到问题。当我只使用一个变量时,我的代码运行良好。e、 g;

    $posts_per_page = \'posts_per_page=3\';
但如果我使用串联,它就不起作用了。e、 g级

    $posts = "posts_per_page=";
    $number = 3;
    $posts_per_page = $posts. $number;
我的完整代码如下所示。

    function blogs() {?>
    <article>

        <?php // Display blog posts on any page @ https://m0n.co/l
        $temp = $wp_query; 
        $wp_query= null;
        $wp_query = new WP_Query();
$posts = \'post_per_page=\';
$number = 3;
$posts_per_page =  $posts . $number ; 
        $wp_query->query( apply_filters(\'change_number_of_posts_home\', $posts_per_page) . \'&paged=\'.$paged);
        while ($wp_query->have_posts()) : $wp_query->the_post(); ?>

        <h2><a href="<?php the_permalink(); ?>" title="Read more"><?php the_title(); ?></a></h2>
        <?php openblogger_posted_on();
                openblogger_posted_by(); ?>

        <?php endwhile; ?>

        <?php wp_reset_postdata(); ?>

    </article>
<?php
}
谁能告诉我为什么不工作。此外,我正在尝试对$number=3使用过滤器;以便用户可以轻松更改数字。提前谢谢。

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

查看您的过滤器:

apply_filters(\'change_number_of_posts_home\', $posts_per_page)
传递给它的值为$posts_per_page, 所以他们当然不能改变$number.

如果您只想过滤数字,那么这就是应该应用过滤器的部分:

$number = apply_filters(\'change_number_of_posts_home\', 3 );
然后查询可以如下所示:

$wp_query->query( \'post_per_page=\' . $number . \'&paged=\'.$paged);
它们与问题无关,但我注意到了您的代码的其他一些方面:

您不应该覆盖$wp_query 就像那样。只需为自定义查询使用一个新变量new WP_Query( $args ) 而不是需要运行->query() 作为单独的步骤<article>. 您正在将所有帖子包装在一个文章标记中

结束

相关推荐