在不影响菜单标题的情况下向标题添加过滤器

时间:2013-05-01 作者:Wern Ancheta

嗨,我和the_title 过滤器我有以下代码:

function zen_title_filter($title){

    if(is_singular()){
        if(!empty($_GET[\'asin\'])){
            if($title == \'Product Details Page\' || $title == \'Compare Products Page\'){
                $title = zen_get_titles();

            }

        }

    }

    return $title;
}

add_filter(\'the_title\', \'zen_title_filter\');
如您所见,此过滤器会更新“产品详细信息”页面和“比较产品”页面的菜单标题。但我所期望的行为是,它应该只更新帖子本身的标题,而不更新菜单标题,在这种情况下,菜单标题也与帖子标题相同。有什么想法吗?

enter image description here

UPDATE

实际上,我正在动态生成页面。使用页面作为模板。因此,post id就是页面的id。我所做的是向内容添加过滤器,并使用新内容完全替换页面的内容:

add_filter(\'the_content\', function($content){
  if(is_page(\'compare\')){
   $asin = esc_attr($_GET[\'asin\']);
   $data = get_data($asin);
   $smarty->assign(\'item_data\', $data);
   $content = $smarty->fetch(\'file.tpl\');
  }
  return $content;
});

2 个回复
最合适的回答,由SO网友:Andy Adams 整理而成

由于您正在动态生成内容,我们可以使用全局标志来告知我们何时需要应用标题。

add_filter(\'the_content\', function($content){
  if(is_page(\'compare\')){
   global $asin_doing_template;

   // mark that we\'re doing a template
   $asin_doing_template = true;

   $asin = esc_attr($_GET[\'asin\']);
   $data = get_data($asin);
   $smarty->assign(\'item_data\', $data);
   $content = $smarty->fetch(\'file.tpl\');

   // set it back to false
   $asin_doing_template = false;
  }
  return $content;
});

function zen_title_filter( $title ){
    global $asin_doing_template;

    if( is_singular() && $asin_doing_template ){
        if( $title == \'Product Details Page\' || $title == \'Compare Products Page\' ){
            $title = zen_get_titles();
        }
    }

    return $title;
}

add_filter( \'the_title\', \'zen_title_filter\' );
如果这样做了,请告诉我!

SO网友:TheoPlatica

You can use this:

function change_title($title) {
    if( in_the_loop() && !is_archive() ) { //skipping Menu Items and Archive page
        return $title.\'<span class="after_title_ss9"></span>\';              
    }

    return $title;

}
add_filter(\'the_title\', array($this, \'change_title\'), 10, 2); 
结束

相关推荐

向函数添加APPLY_FILTERS有什么不利影响吗?

我将回顾我以前的WordPress主题,使函数可过滤,并添加函数\\u exists检查。我有没有想过这会导致现有代码出现问题?// Dummy function if ( ! function_exists( \'custom_func\' )) { function custom_func() { $output = \"Something Awesome\"; return apply_filters(\'custom_func