我正在尝试创建一个。我的网站上特定类别的php文件。而不是加载单个。php文件我希望WP在名为single-category-53的文件中返回该类别。php(实际类别id=53)。我允许在网站上选择多个类别,在Hikari的permalink插件的帮助下,我们为permalink选择了合适的类别。由于这个原因,我无法引用类别的任何内置函数,因为Wordpress默认为数字顺序。下面的代码通过if工作($catp==53)。。。我已经证实了这一点。问题似乎在于将单一类别称为53。php文件,或者我没有正确执行嵌套的if语句。
我已经确认我上传了单类别53。php文件到子主题目录。
非常感谢您在更正代码方面提供的任何帮助!
// A function which displays a specific catergory equal to the _category_permalink
function ag_templates($single_template) {
global $wpdb;
$table = $wpdb->prefix . "postmeta" ;
$query = $wpdb->prepare( "SELECT * FROM {$table}
WHERE `post_id` = %d
AND `meta_key` LIKE \'_category_permalink\' ",
$post->ID );
$perma = $wpdb->get_row( $query );
$catp = $perma->meta_value;
if ($catp == 53) {
if ( file_exists (STYLESHEETPATH . "/single-category-53.php") )
$single_template = STYLESHEETPATH . "/single-category-53.php"; }
return $single_template;
}
add_filter( "single_template", "ag_templates" ) ;
// End specific category template function.
最合适的回答,由SO网友:Milo 整理而成
我想这正是你想要的:
function ag_templates( $template = \'\' ){
global $post;
$meta = get_post_meta( $post->ID, \'_category_permalink\', true );
if( 53 == $meta ){
$template = locate_template(
array( "single-category-53.php", $template ),
false
);
}
return $template;
}
add_filter( \'single_template\', \'ag_templates\' );