我正在处理一个wordpress主题,我正在尝试调用父类别的名称以提取相应的页面模板。
我可以使用call函数来回显正确的名称,但是当我尝试嵌套它时,函数不会运行。我看到我需要使用{},因为我已经在php中,但它仍然无法正常工作。有人能把我拉直吗?
这给出了正确的输出:
<?php $category = get_the_category();
$parent = get_cat_name($category[0]->category_parent);
if (!empty($parent)) {
echo '' . $parent;
} else {
echo '' . $category[0]->cat_name;
}
?>
。 。 。所以我用它创建了一个category_parent.php文件。
这就是我试图将它嵌套在:
<?php get_template_part( ' ' ); ?>
像这样:
1
<?php get_template_part( '<?php get_template_part( 'category_parent' ); ?>' ); ?>
或者
2
<?php get_template_part( '{get_template_part( 'category_parent' ); }' ); ?>
两者都不起作用。
答案 0 :(得分:1)
我真的不知道这是不是你想要的,因为我没有试着理解你在做什么。但是,一般来说,你这样做:
<?php get_template_part( get_template_part( 'category_parent' ) ); ?>
编辑:
我查看了get_template_part()
在WP中所做的事情,我认为Felix Kling的答案就是你所需要的。将内容发送到屏幕并将其分配给变量之间存在很大差异。
<?php
echo 'filename';
?>
如果您包含该文件,则会在浏览器中看到filename
。 PHP对此一无所知。 (好吧,如果你使用了输出缓冲功能,那就可以了,但除此之外......)
但是,如果您执行以下操作:
<?php
$x = 'filename';
?>
您现在可以在函数中使用它:
<?php
get_template_part($x);
?>
所以Felix告诉你要做的就是将你当前拥有的逻辑放入一个函数中。在这个例子中:
<?php
function foo()
{
return 'filename';
}
get_template_part(foo());
?>
现在无论foo()
次返回任何值,都会发送到您的get_template_part()
。
拿你的代码:
$category = get_the_category();
$parent = get_cat_name($category[0]->category_parent);
if (!empty($parent)) {
$name = $parent;
} else {
$name = $category[0]->cat_name;
}
get_template_part($name);
您可以接受Felix的回答并将其放入名为category_parent.php
的文件中,然后将其用作:
require_once 'category_parent.php'
get_template_part(getName());
答案 1 :(得分:1)
老实说,我对Wordpress并不熟悉,但在我看来,你可以做到:
function getName() {
$category = get_the_category();
$parent = get_cat_name($category[0]->category_parent);
if (!empty($parent)) {
return '' . $parent;
} else {
return '' . $category[0]->cat_name;
}
}
get_template_part(getName());
答案 2 :(得分:1)
konforce关于语法是正确的,就像konforce一样,我不知道你想要做什么。你不需要使用{}因为你没有尝试动态命名变量,你当然不需要使用<?php ?>
转义到php,因为(1)你已经在php中了(2)它将停止解释PHP并假设html第二次击中第一个'?&gt;'。
嵌套函数没有特殊的语法。简单地:
get_template_part(get_template_part('category_parent'));
是语法,但我不知道函数是什么或做什么,所以我不知道这是否有效。
要调试,为什么不试试这个:
$parent = get_template_part('category_parent');
echo 'parent: ' . $parent . '<br />';
$result = get_template_part($parent);
echo 'result: ' . $result . '<br />';
答案 3 :(得分:-1)
在php字符串中使用变量时,您需要使用双引号(“)。我认为选项2应该可以使用。