如何获取作者模板之外的所有作者帖子

时间:2014-09-04 作者:user3705773

目前,我正试图在一个自定义页面中显示作者(e.x管理员)的所有帖子,其名称与列出的这些模板文件完全不同here.

所以在这个页面中,我使用WP query从管理员那里获得如下帖子:

$args = array(
    \'post_type\' => \'post\',
    \'posts_per_page\' => 10,
    \'post_status\' => \'publish\',
    \'author_name\' => \'admin\'
);

$author_query = new WP_Query( $args );
收到10篇帖子后效果很好,但问题在于分页,因为我无法获得正确的max_num_pages 在我的分页功能中:

global $wp_query;
echo $pages = $wp_query->max_num_pages; // Always return 0
当我这样做的时候print_r($wp_query); 它总是显示出来[max_num_pages] => 0[found_posts] => 1 其中与中的代码完全相同author.php 给了我[max_num_pages] => 1[found_posts] => 5.

那么,我是否需要将任何其他特定参数传递给WP查询或任何其他方法来克服此问题?

3 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

根据您在帖子中提供的信息,我相信您正在使用自定义页面。此处为php模板

Here is the the reasons you get the output as stated:

主查询在加载的每个页面上执行。对于每种类型的模板,主查询都非常具体。$wp_query 是否为main query

要测试主查询在所有特定模板上的唯一性,请添加print_r($wp_query); 对于所有归档页面(archive.php、category.php、author.php等),请编制索引。php和页面。php。如您所见,每个实例的结果都非常不同。要理解它是如何工作的,你必须阅读Query Overview 在法典中

好的,回到这里,当您使用$wp_query, 它显示页面主查询中的信息,而不是自定义查询中的信息。

要从自定义查询中获取信息,您必须print_r(VARIABLE USED FOR new WP_Query);, 在你的情况下print_r($author_query).

要获得分页以处理自定义查询,您需要通过paged 参数。此外,使用时next_posts_link(), 您必须指定$max_pages 参数

这是一个来自法典的工作示例。根据需要修改以适应您的论点等。

<?php
// set the "paged" parameter (use \'page\' if the query is on a static front page)
$paged = ( get_query_var( \'paged\' ) ) ? get_query_var( \'paged\' ) : 1;

// the query
$args = array(
    \'post_type\' => \'post\',
    \'posts_per_page\' => 10,
    \'post_status\' => \'publish\',
    \'author_name\' => \'admin\'
    \'paged\' => $paged
);

$author_query = new WP_Query( $args ); 
?>

<?php if ( $author_query->have_posts() ) : ?>

<?php
// the loop
while ( $author_query->have_posts() ) : $author_query->the_post(); 
?>
<?php the_title(); ?>
<?php endwhile; ?>

<?php

// next_posts_link() usage with max_num_pages
next_posts_link( \'Older Entries\', $author_query->max_num_pages );
previous_posts_link( \'Newer Entries\' );
?>

<?php 
// clean up after the query and pagination
wp_reset_postdata(); 
?>

<?php else:  ?>
<p><?php _e( \'Sorry, no posts matched your criteria.\' ); ?></p>
<?php endif; ?>

EDIT

This post 还可以分享更多关于主查询及其工作方式的信息

EDIT 2

我已经更新了代码,以显示您的问题中的具体内容。希望这有帮助

SO网友:Robert hue

以下是用于显示分页作者帖子的查询格式。您还必须将分页参数添加到分页。

<?php

    // fix pagination issue
    if ( get_query_var(\'paged\') ) { $paged = get_query_var(\'paged\'); }
    elseif ( get_query_var(\'page\') ) { $paged = get_query_var(\'page\'); }
    else { $paged = 1; }

    $args = array(
      \'post_type\' => \'post\',
      \'posts_per_page\' => \'10\',
      \'author_name\' => \'admin\',
      \'ignore_sticky_posts\' => 1,
      \'paged\' => $paged
    );

    $my_query = new WP_Query( $args );

    if ( $my_query->have_posts() ) :

      while ( $my_query->have_posts() ) : $my_query->the_post();

        get_template_part( \'content\', get_post_format() );

      endwhile;

      twentytwelve_content_nav( \'nav-below\' );

    else :

        get_template_part( \'content\', \'none\' );

    endif;

    wp_reset_postdata();

?>
在这段代码中,我假设您使用TwentyEleven\\u content\\u nav()函数来生成上一个、下一个链接。尽管您可以更改它以替换代码。

SO网友:TheDeadMedic

因为全球$wp_query 表示当前页面的查询(“主”查询),它与自定义$author_query.

如果要使用分页功能,可以通过临时设置$wp_query 自定义查询,然后重置:

global $wp_query, $wp_the_query;

$wp_query = $author_query;

// Pagination functions

$wp_query = $wp_the_query;

结束

相关推荐

如何在WordPress页面中使用PHP代码

WP的新用户。我在PHP中使用SQL数据动态创建HTML表。WordPress页面不允许使用PHP代码,出于安全原因,我一直被个人要求不要使用PHP插件。现在,如果我只需要运行一个PHP文件,我只需将其包含在自定义页面模板中即可。由于代码需要显示在“内容容器”(动态加载)中,因此我不完全理解将代码放在何处。<?php get_template_part( \'content\', \'page\' ); ?> 我注意到上面的代码正在调用该页面的内容容器。我应该在这里加载其他页面吗?还