php - 从我的 Wordpress 插件中更改 wp_title

标签 php wordpress plugins

我的一个房地产经纪人的 wp 插件快完成了, 我在网站上搜索了 404 等,我注意到我的属性(property)详细信息页面被搜索到了,其中所有 45 个页面标题都是:(详细信息 | 站点名称)(页面标题是根据通过查询字符串传递的 ID 动态显示的)

现在我已经修复了我的好 url,url 看起来像这样......

wpsite.com/details/20043/property+for+sale+in+this+area

其中...

  • propid = 20043
  • propname = property+for+sale+in+this+area

这两个都是用于重写 url 的查询字符串值。

'query_vars' => array('propid', 'propname'),
'rules' => 
array( '(.+?)/([^/]+)/([^/]+)/?$' => 'index.php?pagename=$matches[1]&propid=$matches[2]&propname=$matches[3]' )
);

现在,当加载属性详细信息页面时,我正在尝试连接到 wordpress 过滤器 wp_title 但这并不像我预期的那样工作..

这是我用来生成标题的代码

function wp_myplugin_property_title()
{
    $wp_acquaint_id = get_option("wp_system_id");
    $propid = get_query_var('propid');
    if(isset($propid)){
        $seotitle = wp_myplugin_seo_title($propid);
    }else{
        $seotitle = "TEST Title";   
    }
    return $seotitle;   
}

if( is_page('details') ){
    add_filter('wp_title', wp_myplugin_property_title, 100);
}

该函数中使用的函数:wp_myplugin_seo_title($propid) 生成我想使用的实际标题...

function wp_myplugin_seo_title($propid)
{
    $wp_acquaint_id = get_option("wp_acquaint_id");
    $xml = wp_myplugin_get_property($propid);
    foreach($xml->PropertiesDataSet->Properties as $node) {
        include('xml_loop.php');

        if($bedrooms==0){ }else{ $seo_title.= $bedrooms." bedroom "; }

        $seo_title.= wp_myplugin_get_property_type($type_id)." "; //ie:flat
        $seo_title.= str_replace("(","",$street);
        $seo_title.= " ".$town." | ".get_bloginfo('name');
    }
    return $seo_title;
}

我发现在过滤器周围放置 if(is_page()) 后,页面标题不会改变,如果我删除 is_page, Prop 详细信息页面标题工作正常但是!!!

在属性列表页面上,页面标题循环遍历该页面上的所有属性并生成大约 1000 个字符长的页面标题..!

我一直在寻找更好的方法来处理这个问题,但任何帮助都会很棒..

干杯

马蒂

ps: 目前正在运行 Yoast 的 wordpress seo! 这就是为什么我在 add_filter 中将优先级设置为 100 只是为了看看它是否会覆盖标题..

最佳答案

在 functions.php 中使用 is_page 是行不通的,因为它在 wp 知道它将要呈现的页面之前运行,或者即使它是一个开始的页面。将 is_page() 粘贴到函数中,它应该可以工作。喜欢:

function wp_myplugin_property_title()
{ 
  if( is_page('details') ){
    $wp_acquaint_id = get_option("wp_system_id");
    $propid = get_query_var('propid');
    if(isset($propid)){
        $seotitle = wp_myplugin_seo_title($propid);
    }else{
        $seotitle = "TEST Title";   
    }
    return $seotitle;   
  }
}


add_filter('wp_title', wp_myplugin_property_title, 100);

关于php - 从我的 Wordpress 插件中更改 wp_title,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7878187/

相关文章:

php - 使用预订和租赁系统插件禁用 WooCommerce 中的每小时价格

javascript - 在 HTML 页面上嵌入 VLC 插件

jquery插件: converting functions into a plugin?

xpath - SandcaSTLe 帮助文件生成器插件 “XPath Reflection File Filter” : How to?

php - MySQL 查询在 phpmyadmin 中工作,但在 php 中不工作

php - 如何知道MySQL更新命令是否找到了记录?

javascript - 嗅探 "Print Screen" key 以将其内容自动附加到撰写的邮件上

mysql - 如何从自定义mysql数据库自动导入wordpress内容?

php - 未发现错误的增加 - Yoast 的 WordPress SEO

php - Cloudflare 不会通过 CURL 请求缓存页面