当前位置: 首页 > 知识库问答 >
问题:

Wordpress-每页的帖子不适用于特定类别的slug。php

颛孙国源
2023-03-14

我有一种特殊的鼻涕虫。php页面。

我想显示第一类“横幅广告”,每页只有一篇文章,然后在下面,显示“特色”类别的每页3篇文章

我不想使用:**query_posts('posts_per_page=4')**

我尝试过pre_get_posts功能,但似乎无法让它工作。

现在每页显示的帖子数量是我在设置中指定的数量-

以下是我当前的代码

$args1 = array(
    'category_name' => 'banner-ads',
    'posts_per_page' => 1
    );


$the_query = new WP_Query( $args1 );


while ( $the_query->have_posts() ) :
    $the_query->the_post();
    ar2_render_posts( null, array ( 'type' => 'node' ), true );
endwhile;

wp_reset_postdata();


$args2 = array(
    'category_name' => 'featured',
    'posts_per_page' => 3
    );

$query2 = new WP_Query( $args2 );

while( $query2->have_posts() ):
    $query2->next_post();
    ar2_render_posts( null, array ( 'type' => 'traditional' ), true );
endwhile;

wp_reset_postdata();

共有3个答案

宰父远
2023-03-14

它非常简单,只需在ar2\u render\u posts中alterquery\u args

ar2_render_posts( null, array ( 
     'query_args' => array ( 'posts_per_page' => 1 ),
), true );

锺离自明
2023-03-14

好吧,我终于明白了。如果您想强制它执行一定数量的POST,则添加过滤器及其功能,然后在循环结束时将其删除。在第二个循环中,我意识到ar2_render_posts()函数与代码冲突,因此我选择从头开始重做该函数,因为它基本上是一个布局函数。

add_filter('post_limits', 'my_post_limits');

function my_post_limits( $limit ) {
    if ( in_category('banner-ads') ) {
        return 'LIMIT 0, 3';
    }
    return $limit;
}

    $args1 = array(
        'category_name' => 'banner-ads'
        );


    $the_query = new WP_Query( $args1 );


    while ( $the_query->have_posts() ) :
        $the_query->the_post();
        ar2_render_posts( null, array ( 'type' => 'node' ), true );
    endwhile;

    wp_reset_postdata();
    remove_filter('post_limits', 'my_post_limits');
艾善
2023-03-14

您尚未重置:wp_reset_postdata()

有关类别的有用信息:http://codex.wordpress.org/Class_Reference/WP_Query#Category_Parameters

这是我的第一个循环页面之一:

<?php 
$postq1 = new WP_Query(
 array(
  'post_type' => array('post','yourcustom'),
  'posts_per_page' => 1, 
  'category_name'=>'banner-ads')
 );
if($postq1->have_posts()):
    while ( $postq1->have_posts() ) :
        $postq1->the_post();?>
<article id="post-<?php the_ID();?>">....</article>
<?php 
    endwhile;
endif;
wp_reset_postdata();
?>

第二个循环:

<?php 
$postq2 = new WP_Query(
 array(
  'post_type' => array('post','yourcustom'),
  'posts_per_page' => 3,
  'category_name'=>'featured')
);
if($postq2->have_posts()):
    while ( $postq2->have_posts() ) :
        $postq2->the_post();?>
<article id="post-<?php the_ID();?>">....</article>
<?php 
    endwhile;
endif;
wp_reset_postdata();
?>

... 代码的其余部分使用query_posts()

 类似资料:
  • 我有两个不同类别的自定义帖子类型(公文包),然后我有两个页面显示两个类别的帖子。 我调用页面时的url类似于mysite.com/pagename,其中pagename与公文包类别同名。 我的问题是,当我进入单一公文包时,url会变成mysite.com/portfolio/portfolio-name 有没有办法在url中显示投资组合类别?应该像mysite.com/portfolio-cate

  • 我创建了一个名为制造商的自定义帖子类型,并添加了大量帖子和类别。单个帖子页面工作,但类别/存档页面不显示任何帖子。 制造商被分成不同的类别,我需要显示每个类别中所有帖子的存档。我去工厂的时候 http://localhost/category/manufactures/ge-speedtronic/ 这就是令人困惑的地方。我为自定义帖子类型“制造商”使用的类别也显示在我的其他自定义帖子类型和默认帖

  • 我想钩入save_post函数,找出帖子所在的类别,然后为每个类别中的帖子分配不同的页面模板。我已经尝试了大约30个不同的版本,但没有成功。谁能帮我指出正确的方向?

  • 我已经创建了一个自定义的帖子类型“Shop”,其中包含商店类别的自定义分类法 对于我的商店类别存档页面,我希望URL结构为: example.com/shop/tech/(代替example.com/shop/category/tech/) 我希望商店的帖子example.com/shop/shop-post-title-example 我尝试了下面的代码并保存了永久链接,但当我访问商店帖子时,它

  • 我正在使用JSON API插件与我的wordpress页面,get_recent_posts json的数组大小约为250个帖子。例如,当我调用 http://www.example.org/api/get_recent_posts/ 在浏览器中查看这些帖子时,我得到一个空白页面,控制台中没有错误。但是,如果我限制例如 http://www.example.org/api/get_recent_p

  • 我已使用以下代码注册自定义邮件类型: 问题是,这篇文章的URL变成了: 但是,我需要: 有没有办法从URL中删除帖子类型的段塞“电影”,比如默认情况下在前端显示的帖子和页面? 谢谢