替换HTML输出中的WordPress URL域名(以进行SEO优化)

19 浏览
0 Comments

替换HTML输出中的WordPress URL域名(以进行SEO优化)

WordPress拥有强大的过滤器支持,可以获取各种特定的内容片段并在输出之前进行修改。例如,the_content过滤器可以让您访问帖子在输出到屏幕之前的标记。我正在尝试找到一个通用过滤器,在最终输出之前对整个标记进行最后一次修改。我已经多次浏览过滤器列表,但没有找到合适的过滤器。大家有没有了解的呢?

0
0 Comments

问题的出现原因:WordPress没有一个“最终输出”的过滤器,但可以通过一些方法来实现。下面的示例是我为一个项目创建的一个“必须使用”插件中的代码。该插件通过遍历所有打开的缓冲区级别,关闭它们并捕获它们的输出来工作。然后,它触发“final_output”过滤器,输出经过过滤的内容。不幸的是,WordPress几乎执行了完全相同的过程(关闭打开的缓冲区),但实际上没有捕获缓冲区进行过滤(只是刷新它),所以额外的“shutdown”操作将无法访问它。因此,下面的操作优先于WordPress。

解决方法:创建一个“必须使用”插件,通过遍历所有打开的缓冲区级别,关闭它们并捕获它们的输出。然后,通过触发“final_output”过滤器来输出经过过滤的内容。可以使用以下代码作为插件的示例:


可以通过在“final_output”过滤器上挂钩来对最终输出进行操作。例如,可以使用以下代码将“foo”替换为“bar”:


需要注意的是,这些代码使用了匿名函数,只支持PHP 5.3或更新的版本。如果使用的是PHP 5.2或更早的版本,则应该升级到更新的版本。

这个解决方法在版本3.8中进行了测试,并且在很多项目中得到了使用,没有遇到任何问题。

0
0 Comments

问题的出现的原因是WordPress中没有钩子可以用于替换HTML输出中的URL域名。

解决方法是使用输出缓冲来捕获最终的HTML,并使用替换函数来替换URL域名。可以使用PHP的ob_start()函数和ob_end_flush()函数来实现。

具体的解决方法如下:

<?php
// 从php.net的例子中获取回调函数
function callback($buffer) {
  // 将所有的苹果替换成橙子
  return (str_replace("apples", "oranges", $buffer));
}
ob_start("callback");
?>
<html><body>
<p>It's like comparing apples to oranges.</p>
</body></html>
<?php ob_end_flush(); ?>
/* 输出结果:
   <html><body>
   <p>It's like comparing oranges to oranges.</p>
   </body></html>
*/

此外,还可以使用register_shutdown_function()函数来结束缓冲,并获取HTML内容。然而,这种方法的一个缺点是无法在回调函数中调用ob_start()ob_clean()等函数,而这些函数对于特定的缓存逻辑是必需的。

以上就是解决WordPress中替换HTML输出中URL域名的问题的方法。

0
0 Comments

问题的原因是要在WordPress的HTML输出中替换URL域名以进行SEO优化。解决方法是使用上述给出的代码。

这段代码注册了两个动作 - `buffer_start`和`buffer_end`。`buffer_start`在html的头部结束时执行,参数`callback`函数在输出缓冲结束时调用,这发生在页面的页脚处,当第二个注册的动作`buffer_end`执行时。

`callback`函数是你添加代码来更改输出值(`$buffer`变量)的地方。然后你只需要返回修改后的代码,页面就会显示出来。

需要注意的是,确保为`buffer_start`、`buffer_end`和`callback`使用唯一的函数名称,以免与其他插件中可能存在的函数冲突。可以为示例添加前缀或后缀,例如`buffer_start_so_772510`或`so_772510_callback`(我更喜欢后缀,因为这样更容易阅读)。这样,当代码出现在其他地方时,我们就知道它来自哪里。

这段代码在页脚元素之后存在要修改或删除的内容时无法正常工作。我建议使用kwoodfriend的解决方案,因为它更安全(例如,您可以确保自己是最后一个操作输出的人)。

至于是否有办法在代码中包含头部,以便代码也可以替换头部,目前没有给出明确的解决方案。

0