WP-Title过滤器不分配变量

时间:2011-10-10 03:04:01

标签: wordpress php

我想将术语名称设置为变量

if(isset($wp_taxonomies)) {
    $term = get_term_by(
        'slug', 
         get_query_var('term'), 
         get_query_var('taxonomy')
    );
    if($term) {
        // do stuff
    }
} 

function assignPageTitle(){     
    return $term>name;
}
add_filter('wp_title', 'assignPageTitle');
get_header();

此代码位于taxonomy.php文件中,$term>name;返回名称,但只有当我回显时,标题上才会显示以下错误:

  

注意:在 12 /home/jshomesc/public_html/wp-content/themes/jshomes/taxonomy.php 中使用未定义的常量名称 - 假定为'name' >

     

注意:未定义的变量: /home/jshomesc/public_html/wp-content/themes/jshomes/taxonomy.php 中的术语 12

1 个答案:

答案 0 :(得分:1)

有几个问题:

  1. 要访问术语的name属性,语法就像$term->name一样。

  2. assignPageTitle函数不知道您刚刚在其上方检索的全局$term变量。它正在尝试检索尚未定义的本地name变量的$term属性。

  3. 要解决此问题,请添加global关键字(并检查是否已填充):

    function assignPageTitle(){  
    
        // Now the function will know about the $term you've retrieved above  
        global $term;
    
        // Do we have a $term and name?
        if(isset($term, $term->name)){
            return $term->name;
        }
        return "No term for you...";
    }
    

    您可以阅读有关PHP variable scoping的更多信息以获取帮助。