设置自定义页面而不是 category/archive 个页面
Set custom pages instead of category/archive pages
我正在尝试设置自定义页面而不是 Wordpress 的默认 category/archive 页面。
我已将以下脚本复制到主题中 function.php,我提到该站点使用 The7 主题。
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' );
我从here那里拿来的,这是bencergazda的解决方案。
现在,在脚本之后,如果我创建一个与类别页面具有相同 url 的页面,它会自动替换它。
问题是脚本仅限于主要(父)类别。
我想创建一个子页面(比方说示例。com/cars/european/german),它会自动替换相同的子类别页面。
我的问题是如何修改脚本以包含子类别。
您可以使用模板轻松完成此操作。使用子主题并制作一个名为 category-$slug.php 的模板,并将 $slug 替换为您要为其制作页面的 slug。你也可以只做一个category.php。有关更多选项,请检查此 template hierarchy.
运行 试试这个:
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
global $post; $post->ID = $matchingPage->ID;
query_posts( 'page_id=' . $matchingPage->ID );
include( get_template_directory() . '/page.php');
die();
}
add_filter( 'category_template', 'loadPageFirst' );
我正在尝试设置自定义页面而不是 Wordpress 的默认 category/archive 页面。
我已将以下脚本复制到主题中 function.php,我提到该站点使用 The7 主题。
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' );
我从here那里拿来的,这是bencergazda的解决方案。
现在,在脚本之后,如果我创建一个与类别页面具有相同 url 的页面,它会自动替换它。
问题是脚本仅限于主要(父)类别。
我想创建一个子页面(比方说示例。com/cars/european/german),它会自动替换相同的子类别页面。
我的问题是如何修改脚本以包含子类别。
您可以使用模板轻松完成此操作。使用子主题并制作一个名为 category-$slug.php 的模板,并将 $slug 替换为您要为其制作页面的 slug。你也可以只做一个category.php。有关更多选项,请检查此 template hierarchy.
运行 试试这个:
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
global $post; $post->ID = $matchingPage->ID;
query_posts( 'page_id=' . $matchingPage->ID );
include( get_template_directory() . '/page.php');
die();
}
add_filter( 'category_template', 'loadPageFirst' );