【问题标题】:How to remove a function programmatically in a WordPress RSS feed?如何在 WordPress RSS 提要中以编程方式删除函数?
【发布时间】:2009-08-23 22:07:03
【问题描述】:

我正在尝试删除出现在 feed-rss2.php 中的 the_guid() 函数。我试过remove_action('rss2_item', 'the_guid')remove_filter 但没有任何反应。我也尝试过不同的钩子,比如the_content_rss...

函数出现在feed-rss2.php的第43行,由<item></item>括起来。

更新

echo current_filter(),发现钩子是do_feed_rss2。但我仍然无法删除该功能。

【问题讨论】:

  • 您是想摆脱整个GUID 节点还是只删除函数并将值替换为您自己的版本?
  • 把函数换成我的就行了。

标签: php wordpress rss


【解决方案1】:

您可以通过过滤器覆盖该函数的输出。

add_filter('get_the_guid','my_get_the_guid');
function my_get_the_guid($guid) {
    $my_guid = 'foo';
    return $my_guid;
}

使用它,您可以使用任何您想要的东西覆盖 GUID 输出。您不能删除 RSS 输出中的节点,但可以控制其内容。如果您想一起删除节点,您可以创建自己的 XML 模板,将其保留在您的主题上,然后使用 template_redirect 操作强制加载您的模板而不是默认模板。

希望有帮助!

【讨论】:

    【解决方案2】:

    Feed Wrangler 插件非常适合自定义 Feed:

    http://wordpress.org/extend/plugins/feed-wrangler/

    基本上,安装插件,用 slug 表示提要(例如:no-guid),然后将 feed-no-guid.php 文件添加到您的主题。您可以使用wp-includes/ 中的默认提要文件作为基础,然后删除或添加您想要的任何项目。这样一来,您就可以完全控制 Feed,并在未来获得清晰的升级路径。

    【讨论】:

      【解决方案3】:

      看起来像 /wp-includes/feed-rss2.php 中的第 40 行:

      <guid isPermaLink="false"><?php the_guid(); ?></guid>
      

      尝试删除它,看看会发生什么;它是文件中对 the_guid 的唯一引用

      【讨论】:

      • 删除没问题。我想通过插件或functions.php自动删除它(并用其他东西替换它),所以我不必在每次WordPress升级后手动更改它。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多