我有一个插件,在这个插件中,我必须通过向_TITLE过滤器发送参数来动态更改页面标题

时间:2017-08-24 作者:Abhilash Narayan

我使用的是shortcode,我想通过使用自定义表从数据库中设置值来更改标题。我已尝试使用\\u标题过滤器,如下所示

add_filter(\'the_title\',\'set_page_title\', 10, 2);
function set_page_title($title, $id){
   if(in_the_loop()) {


         return \'sdfdsfdsf\';
   }
   return $title;
}
但我的问题是,我只想在一个特定的页面上更改它,而不是在所有页面上。

这是我的shortcode回调函数

function bmg_company_detail_shortcode($args, $content) {
    global $wpdb;
    $table_name = $wpdb->prefix . \'bmg_company\';
    $company_id = $_GET[\'id\'];
    $output = \'\';

    $result = $wpdb->get_results($wpdb->prepare("SELECT id,maincategoryid,name,website,yearfounded,supportpageurl,contactpage,country,about, isactive,contact_name,contact_email,contact_phone,support_phone,open_times,support_email, username, password  from $table_name where id=%s", $company_id));



  if($result) {
      foreach($result as $row) {
           set_page_title(\'\',$row->name);
          $output = \'
            <h3 class="bmg-company-title">\'. $row->name .\'</h3>

          \';
      }
  }

  return $output;
}
我想将参数发送到函数set\\u page\\u title,但这不起作用。我希望这只发生在名为“公司”的页面上。

2 个回复
SO网友:cameronjonesweb

您可以使用is_page() 函数仅在特定页面上更改它。我想你公司页面的头条是company

add_filter( \'the_title\',\'wpse_277956_the_title\', 10, 2 );

function wpse_277956_the_title( $title, $id ){
   if( in_the_loop() && is_page( \'company\' ) ) {    
         return bmg_company_detail_shortcode( false, false );
   }
   return $title;
}

SO网友:Abhilash Narayan

从页面的URL获取id使我得到了修复。

add_filter(\'the_title\',\'set_page_title\', 10, 2);
function set_page_title($title, $id){
   if(in_the_loop() && is_page( \'company\' )) {
       $cid = isset($_GET[\'id\']) ? $_GET[\'id\'] : \'\';  
       if($cid != \'\') {
            return get_company_name($cid);
       } else {
            return $title;   
       }
   }
   return $title;
}

结束

相关推荐

当返回值为空时,Apply_Filters为什么要返回非空字符串?

因为这个把我的键盘弄坏了。进行了正确的安装,将数据库上载到新的MySQL,并一直在正确使用子主题。但有件事困扰着我,我想不出来。在我的新安装上(ver2.whowhatwhy.com) 我故意将一些小部件留空。我想,当阅读default-widgets.php wp中的文件包括在该小部件上不会显示标题元素。相反,显示标题小部件是因为,出于某种原因,传递的值apply_filters 是一个空格,而不是空白值$instance[\'title\'] 为空。$title = apply_filters( \'