在Wordpress中创建帖子页面
设置Wordpress博客的常见做法是创建一个页面,并在该页面上显示特定类别的帖子。这导致某些页面的行为与类别页面非常相似。
创建帖子页面的第一步是创建可供页面使用的页面模板。在模板目录中创建一个名为的文件,pageofposts.php并在其中添加以下注释。
这将导致它显示在您的Wordpress页面管理员的“模板”下拉列表中。这不会做很多事情,所以让我们添加一些其他功能。添加以下行以包括创建空白Wordpress页面所需的所有内容。
在get_sidebar()和get_footer()函数之间添加下一个代码段。基本上,这将构造一个查询,该查询将用于从数据库中获取正确的帖子。第一个if语句用于检测用户登陆到哪个页面。您将需要手工编写此部分的代码,但并不难。本质上,is_page()如果传递给它的值是当前页面的ID,则该函数返回true。然后,$cat变量将填充一个包含要显示类别的数组,该类别可以是单个类别,也可以是多个类别。然后将其添加到$args数组,该数组用于在简单的if语句之后创建新的WP_Query对象,以检测我们是否在查看页面。
$cat, 'caller_get_posts' => 1 ); if ( $paged > 1 ) { $args['paged'] = $paged; } $my_query = new WP_Query($args); ?>$paged变量包含我们当前正在查看的页码的整数,并由Wordpress设置。基本上,如果$paged变量大于1,我们需要在查询中包括它。
您可以在此处包括的一件事是打印出当前正在查看的页面的内容。以下代码将其打印出来。
', ''); ?>Read the rest of this page »'); ?> 'Pages: ', 'after' => '
', 'next_or_number' => 'number')); ?>接下来,我们包含一些代码来检测是否找到了任何帖子,如果找到了,我们将循环浏览它们并挑选出每个帖子的信息。这是标准的Wordpress“TheLoop”,可以从您网站上的任何其他页面复制。只要确保您使用$my_query对象进行调用have_posts()即可,否则,该函数将返回有关我们正在查看的页面而不是我们感兴趣的帖子的信息。这些函数have_posts()并the_post()为全局WP_Query对象运行相同的函数,它包含在$wp_query变量中。本质上,它们是调用$wp_query->的捷径have_posts()。
have_posts() ) : ?> have_posts() ) : $my_query->the_post(); ?> in_the_loop = true; ?>Not Found
Sorry, but you are looking for something that isn't here.
这里缺少一件事,即分页控件,通常称为下一个和上一个链接。这是因为由于创建这些链接(next_posts_link()和previous_posts_link())所涉及的普通功能仅查看当前保留的WP_Query对象,因此需要特别考虑,该对象在本例中包含我们的页面,而不包含我们想要浏览的帖子。将以下代码复制到上一行代码中,恰好在结束行之后。
max_num_pages; } if ( !$paged ) { $paged = 1; } $nextpage = intval($paged) + 1; if ( !is_single() && ( empty($paged) || $nextpage <= $max_page) ) { $attr = apply_filters( 'next_posts_link_attributes', '' ); echo '". preg_replace('/&([^#])(?![a-z]{1,8};)/', '&$1', '« Older Entries') .''; } ?>1 ) { $attr = apply_filters( 'previous_posts_link_attributes', '' ); echo '". preg_replace( '/&([^#])(?![a-z]{1,8};)/', '&$1', 'Newer Entries »' ) .''; } ?>将所有这些代码上传到您的内容目录,就可以开始使用了。每次您要创建一个显示一堆帖子的页面时,只需使用PageOfPosts模板创建该页面,并确保文件顶部的if语句捕获该页面并从正确的类别中选择帖子。
该模板还是WP_Query对象如何工作以及如何在不覆盖当前检索到的项目的情况下在页面上创建新查询的一个很好的例子。