我正在建立一个个人网站来主持我的大学工作,个人项目和照片等。
菜单是由pages
和links
组成的层次结构。以我的大学页面为例。我想要实现的是显示与模块代码相关的帖子page's
slug
。
我使用了以下链接http://codex.wordpress.org/Page_Templates#A_Page_of_Posts并设法让它工作但我已经将模块代码硬编码到模板中,这意味着每个模块我都必须有一个单独的模板,唯一的将从一个文件到另一个文件不同的是5个字符,这对于重用代码来说并不是很好。
我要问的是,有没有办法从我正在查看的页面获取 slug
并将其用于WP_Query
参数。< / p>
如果您转到http://michaelnorris.co.uk/并查看菜单结构。导航到大学 - &gt;第三年 - &gt;单个项目,您会注意到网址为http://michaelnorris.co.uk/uni/three/ci301,其中ci301
是Individual Project
的模块代码。我希望在每个模块页面上都有这个系统,这样我就可以标记posts
并将它们显示在相关模块中。
答案 0 :(得分:0)
好吧,我实际上是自己找到了答案,但对于其他想要做同样事情的人。以下是一个解决方案。
Wordpress.org Codex http://codex.wordpress.org/Page_Templates#A_Page_of_Posts
上的解决方案将文件命名为pageofposts.php
并编辑Wordpress仪表板中的页面,并将模板(在下拉列表中)设置为“帖子页面”。宾果!
<?php
/*
Template Name: Page Of Posts
*/
/* This example is for a child theme of Twenty Thirteen:
* You'll need to adapt it the HTML structure of your own theme.
*/
get_header(); ?>
<div id="primary" class="content-area">
<div id="content" class="site-content" role="main">
<?php
/* The loop: the_post retrieves the content
* of the new Page you created to list the posts,
* e.g., an intro describing the posts shown listed on this Page..
*/
global $post;
$slug = get_post( $post )->post_name;
if ( have_posts() ) :
while ( have_posts() ) : the_post();
// Display content of page
get_template_part( 'content', get_post_format() );
wp_reset_postdata();
endwhile;
endif;
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
// Change these category SLUGS to suit your use. category_name is comma separated.
'tag' => $slug,
'paged' => $paged
);
$list_of_posts = new WP_Query( $args );
?>
<?php if ( $list_of_posts->have_posts() ) : ?>
<?php /* The loop */ ?>
<?php while ( $list_of_posts->have_posts() ) : $list_of_posts->the_post(); ?>
<?php // Display content of posts ?>
<?php get_template_part( 'content', get_post_format() ); ?>
<?php endwhile; ?>
<?php twentythirteen_paging_nav(); ?>
<?php else : ?>
<?php get_template_part( 'content', 'none' ); ?>
<?php endif; ?>
</div><!-- #content -->
</div><!-- #primary -->
<?php get_footer(); ?>