如果使用的是经典编辑器,则找到的代码可以正常工作。它接受POST数据(如POST HTTP请求)并在其进入数据库之前进行转换。因此,除了只更新某个元字段外,它也只在向前添加代码时起作用。任何旧链接都不受影响。
假设你可能想影响现有链接和新链接,你可以过滤the_content
相反这也适用于经典编辑器,但也适用于块编辑器。
这应该会让您走上正确的道路——您只需要找到正确的正则表达式来标识Amazon链接的查询字符串。(如果您已经知道没有一个Amazon链接有查询字符串,那么可以完全跳过正则表达式,继续执行下面的操作。)str_replace()
步骤。)
<?php
// Add a filter to `the_content`, which is called when pulling the post data out of the database
add_filter(\'the_content\', \'wpse_357790_add_amazon_affiliate\');
function wpse_357790_add_amazon_affiliate($content) {
// See if "amazon.com" is found anywhere in the post content
if(strpos($content, \'amazon.com\') !== false) {
// Capture all Amazon links and their query strings
// TO DO: work out the correct regex here. This next line is not complete.
preg_match_all(\'\\?tag=[^&]+(&|")\', $content, $matches);
// Add the affiliate query string to each URL
foreach($matches as $url) {
$content = str_replace($url, $url . \'?tag=myafftag-02\', $content);
}
}
// Always return the content, even if we didn\'t change it
return $content;
}
?>
优点:可以与任何一个编辑器配合使用,过滤所有帖子内容,处理所有已发布但尚未创建的内容。