使用WP函数更改WordPress元标记描述

时间:2013-01-18 作者:Andrea Moro

我承认这听起来像是一个常见的问题,但事实并非如此。只是想让你明白,我不需要安装众多SEO插件中的一个,也不需要在内容发布之前在框中更改它。

我的情况如下:

我有一个页面,Querystring可能会更改页面上显示的内容,如果是这样的话,我想对元描述和标题也这样做。

在普通模板文件中,我可能会查找querystring并粘贴if条件。问题是模板不是我的,当它更新时,我的更改将丢失。所以我想了一个稍微复杂一点的解决方案。

使用Wordpress php\\u exec插件,我将在内容部分嵌入php行,将任务委托给它们,但使用普通的Wordpress核心函数。这是必须的,因为我不能在内容区域中使用简单的if条件,不能在页面中没有两个元描述或标题,后者添加到错误的位置。

所以我需要做的是理解Wordpress是如何在最终的HTML中添加这两个元的。这是否与add\\U操作(“wp\\U head”,…此处的内容)有关?

作为附加信息,我没有使用Yoast SEO插件,所以我不能依赖他的任何附加功能。

谢谢你的帮助Andrea

1 个回复
SO网友:s_ha_dum

我不理解您试图使用PHP\\u Exec,尤其是将其嵌入页面的内容部分。这太晚了,无法改变<head> 文档的。以下是您面临的问题,从您的主要问题开始:

所以我需要做的是理解Wordpress是如何在最终的HTML中添加这两个元的。这是否与add\\U操作(“wp\\U head”,…此处的内容)有关?

WordPress不添加meta 标记到<head> 至少不是大多数。它确实添加了一些东西--管理栏样式表、元生成器、一些提要--但没有标题、描述,也没有大部分内容。您的主题可以做到这一点,并且可能会也可能不会以您可以轻松操纵的方式做到这一点。理想情况下,您可以使用几个不同的挂钩--wp_head, the_title, 可能还有其他几个--在<head> 文档的一部分,但一些主题并没有让它变得那么容易。有时事情被硬编码到主题中。

假设一切都对您有利,您可以通过以下方式更改标题:

function alter_title_wpse_82196($title) {
  global $_GET;
  // if condition for you parameter
  if (...) {
     $title = \'whatever\';
  }
  return $title;
}
add_filter(\'the_title\',\'alter_title_wpse_82196\');
并添加类似的描述。

function add_descr_wpse_82196() {
  global $_GET;
  // if condition for you parameter
  if (...) {
     $description = \'properly constructed meta description tag\';
  }
  echo $description;
}
add_action(\'wp_head\',\'add_descr_wpse_82196\');
但这是一个粗略的指南。主题特性可能会带来麻烦。

结束