我创建了一个过滤器,在我的博客文章的图像上添加了一个pin按钮,这在玩了很多次之后就奏效了。几周后,我更新到3.6.1,过滤器停止工作。
新版本中是否有更改,阻止了对\\u内容的筛选工作?
function cd_insert_pinterest($content) {
global $post;
$postID = $post->ID;
if( is_singular() && is_main_query() ) {
$posturl = urlencode(get_permalink()); //Get the post URL
$pindiv = \'<span class="pinterest-button">\';
$pinurl = \'<a href="http://pinterest.com/pin/create/button/?url=\'.$posturl.\'&media=\';
$pindescription = \'&description=\'.urlencode(get_the_title());
$pinfinish = \'" class="pinning"></a>\';
$pinend = \'</span>\';
$pattern = \'/<img(.*?)src="(.*?).(bmp|gif|jpeg|jpg|png)" (.*?) width="(.*?)" height="(.*?)" \\/>/i\';
$replacement = $pindiv.$pinurl.\'$2.$3\'.$pindescription.$pinfinish.\'<img$1src="$2.$3" $4 width="$5" height="$6" />\'.$pinend;
$content = preg_replace( $pattern, $replacement, $content );
$newpattern = \'/<a(.*?)><span class="pinterest-button"><a(.*?)><\\/a><img(.*?)\\/><\\/span><\\/a>/i\';
$replacement = \'<span class="pinterest-button"><a$2></a><a$1><img$3\\/></a></span>\';
$content = preg_replace( $newpattern, $replacement, $content );
}
return $content;
}
add_filter( \'the_content\', \'cd_insert_pinterest\');
SO网友:OACDesigns
这似乎是您的正则表达式模式匹配图像的问题。
我修改了$pattern
它在测试页面I设置中起作用。
$pattern = \'/<img(.*?)src="(.*?).(bmp|gif|jpeg|jpg|png)"(.*?)width="(.*?)" height="(.*?)" \\/>/i\';
有一些额外的空间正在将其丢弃。
我建议使用RegEx测试工具来帮助您确保您的模式与来自wordpress的内容正确匹配。这是我用来检查你的图案的:
http://gskinner.com/RegExr/
另一方面,一般来说,很难说出使用两个preg\\u replace函数想要实现什么。我相信它可以大大简化。。。