我有几个子类别(第3级)子类别下的几个帖子,当然还有一个以上类别的parnet类别。
我想为所有帖子制作一个特殊的single.php页面,但是
<?php if(in_category($id)) { include 'special-single-page.php'; }
仅适用于该类别下的帖子,不适用于子类别子类别中的帖子。
是否有办法为父类别的几个子类别下的帖子添加文件?
答案 0 :(得分:1)
显然,wordpress有一个现成的脚本。它是这样的:
<?php if ( in_category( $id ) || post_is_in_descendant_category( $id ) ) {
// your code goes here
}
?>
但您需要在主题的function.php文件中添加一个函数。这是要添加的功能:
<?php
if ( ! function_exists( 'post_is_in_descendant_category' ) ) {
function post_is_in_descendant_category( $cats, $_post = null ) {
foreach ( (array) $cats as $cat ) {
// get_term_children() accepts integer ID only
$descendants = get_term_children( (int) $cat, 'category' );
if ( $descendants && in_category( $descendants, $_post ) )
return true;
}
return false;
}
}
?>
答案 1 :(得分:0)
查看get_category_parents()
我不知道代码的完整结构,但下面是一些帮助您入门的代码,但您可能需要对其进行调整。我不确定它是否有效。
$parents = explode('/', get_category_parents( $id ));
if(!isset($parents)) {
if(in_category($id)) {
include 'special-single-page.php';
}
} else {
if(in_category($parents[0])) {
include 'special-single-page.php';
}
}
或类似的东西。
有一点阅读,你可能会找到一个更好的方法来做到这一点。 http://codex.wordpress.org/Function_Reference/get_category_parents