所以我正在使用Wordpress在大型媒体网站上工作。我想创建自定义类别页面,而不是始终使用总括性模板。
我知道我可以复制php文件,重命名并自定义它们。但我遇到了一种更简单的方法,特别是在允许非编码类型进行更改方面。这看起来有点太容易了......
所以我要说我现在的固定链接/ URL如下所示:
POSTS: domain.com/2016/10/postname.html
CATEGORIES: domain.com/c/category-name/
PAGES: domain.com/page-name/
我发现我可以创建一个页面并给它永久链接/ c /,因此它看起来像这样:
domain.com/c/
我发现如果我创建一个子页面,使用/ c /作为父页面,它看起来像这样:
domain.com/c/page-name/
如果我将此页面作为类别提供相同的SLUG,然后单击进入该页面,该页面将覆盖该类别。更具体地说,假设我有一个名为视频的类别,然后我在/ c /父页面下创建了一个名为视频的页面,这种情况发生了:
The PAGE at /c/videos/
overrides the CATEGORY at /c/videos.
这似乎太好了,不是真的吗?任何人都可以看到我不会这样做的任何原因,特别是当该网站将来被非编码类型使用时,他们希望能够使用仪表板而不是后端进行简单的更改?
提前致谢。
答案 0 :(得分:1)
这需要在主题的function.php文件中添加一个小的过滤器。 我已从StakeOverflow的另一个答案中获取了此代码,您可以阅读here
function loadPageFirst() {
// get the actual category
$actualCategory = get_category( get_query_var('cat') );
// get the page with the same slug
$matchingPage = get_page_by_path( $actualCategory->slug );
// If no match, load the normal listing template and exit (edit if you are using a custom listing template, eg. category.php)
if (!$matchingPage) {
include( get_template_directory() . '/archive.php');
die();
}
// Make a new query with the page's ID and load the page template
query_posts( 'page_id=' . $matchingPage->ID );
include( get_template_directory() . '/page.php');
die();
}
add_filter( 'category_template', 'loadPageFirst' );