每个职类的员额数量不同

时间:2012-04-03 作者:sydbeat

我有类别驱动的网站。我对每个类别都有不同的模板。我想设置不同数量的帖子——different for each category. 另外,我想在每个类别中添加适当的上一个和下一个链接。

例如category-1.php 我希望每页4篇帖子:

<?php query_posts(\'showposts=4\'); ?>
<a href="<?=next_posts()?>"> PREVIOUS </a>
<a href="<?=previous_posts()?>"> NEXT </a>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
...
<?php endwhile; endif; ?>
但在这个例子中next_posts()previous_posts() 不起作用。

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

@StephenHarris pointed out 还有pre_get_posts filter.

function hwl_home_pagesize( $query ) 
{
    if ( is_category( 9 ) ) 
    {
        // If you want "posts per page"
        $query->query_vars[\'posts_per_page\'] = 1;
        return;
    }
    if ( is_category( \'movie\' ) )
    {
        // If you want "showposts"
        $query->query_vars[\'showposts\'] = 50;
        return;
    }
}
add_action( \'pre_get_posts\', \'hwl_home_pagesize\', 1 );
示例由Codex示例更改而来

SO网友:Stephen Harris

您可以使用pre_get_posts 挂钩(条件可用):

function wpse47875_change_posts_per_page( $query ) {
    //Only alter main query. This only works for 3.3+
    if( ! $query->is_main_query() )
        return;

    if ( is_category(\'9\') ){
        //Display 4 posts for category 1
        $query->set( \'posts_per_page\', 4);
    }
}
add_action(\'pre_get_posts\', \'wpse47875_change_posts_per_page\', 1);
您可能只想更改“主查询”,因此第一次检查很重要。如果您正在使用WP<;3.3然后您可以检查:

 if( $wp_the_query === $query ){
    //$query is the main query
 }else{
    //$query is *not* the main query
 }

SO网友:kaiser

解析请求操作如果可行,则不适用于舒尔-可能是此时条件不起作用。。。

// inside functions.php
function wpse47861_intercept_main_query( $wp )
{
    // default
    $nr_posts = 10; 

    if ( is_category( \'CAT NAME\' ) )
        $nr_posts = 4;

    if ( is_category( array( 9 /*Ex. Cat-ID*/, \'CAT NAME A\', \'CAT NAME B\' ) ) )
        $nr_posts = 6;

    // Modify the main query object
    $wp->query_vars[\'showposts\'] = $nr_posts;

    return $wp;
}
add_filter( \'parse_request\', \'wpse47861_intercept_main_query\' );
这是另一个机会,因为可能已经有条件了。

function wpse47861_intercept_query_limit( $limit )
{
    // default
    $nr_posts = 10; 

    if ( is_category( \'CAT NAME\' ) )
        $nr_posts = 4;

    if ( is_category( array( 9 /*Ex. Cat-ID*/, \'CAT NAME A\', \'CAT NAME B\' ) ) )
        $nr_posts = 6;

    return "LIMIT 0, {$nr_posts}";
}
add_filter( \'posts_limit\', \'wpse47861_intercept_query_limit\', 9999 );
注:两种功能均未测试。加:使用一个or 另一个。两者都应该放在您的函数中。php文件

SO网友:markratledge

对于query\\u posts,分页将无法正常工作,除非在页面模板中使用query\\u posts(),并适当设置“paged”查询变量:http://codex.wordpress.org/Template_Tags/query_posts

但是使用一个名为Custom Post Limits的插件并保持你的分类页面循环不变可能会更容易。您可以为每个类别设置不同的首页和分页限制。看见WordPress › Custom Post Limits « WordPress Plugins

SO网友:realmag777

我有一种灵活的方法,可以为每个/任何woprdpress站点页面设置任何per\\U页面值:

打开功能。当前wp主题的php

使用smth,如下一步:

*

add_filter(\'pre_option_posts_per_page\', function($num)
{
    if ($_SERVER[\'SCRIPT_URL\'] == \'/category/faq/\')
    {
    return 999;
    }

    return $num;
});
例如使用http://php.net/manual/ru/function.preg-match.php 对于$\\u服务器[\'SCRIPT\\u URL\'],您可以在站点上使用任何模式来实现目标

结束

相关推荐

NEXT_POSTS_LINK和PREVICE_POSTS_LINK问题

下面是作者的代码。php文件。问题是next_posts_link 和previous_posts_link 仅根据相关作者在博客中撰写的帖子数量生成链接,而不是根据查询中的帖子数量(包括页面和事件)生成链接。我使用WP\\u Query添加了推荐的自定义帖子类型“events”here. 我发现这种行为很奇怪,因为页面显示的是查询结果,但previous/next_posts_link\'s 正在做完全不同的事情。有人能看到我的错误吗?这是WordPress的问题吗。<?php get_heade