如何在另一个wordpress函数中嵌入wordpress函数?

时间:2010-11-24 23:11:08

标签: php wordpress-theming nested

我正在处理一个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' ); }' ); ?>

两者都不起作用。

4 个答案:

答案 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应该可以使用。