Visual Composer 将 ?id= 添加到列和行的背景图像
Posted
技术标签:
【中文标题】Visual Composer 将 ?id= 添加到列和行的背景图像【英文标题】:Visual Composer adds ?id= to background images of columns and rows 【发布时间】:2017-09-04 13:53:00 【问题描述】:我正在尝试加速使用 Visual Composer 插件的 WordPress 网站。在 GTmetrix 结果中我看到了这个:
从一致的 URL 提供资源
https://example.com/wp-content/uploads/2015/02/sfondo_form.jpg?id=15129
带有查询字符串?id=XXX
的图像是Visual Composer 中列的背景。如何禁用它?
所有这些查询都在 VC 自定义简码中。看下图:
【问题讨论】:
【参考方案1】:如果这可能对任何人都有帮助 - 我修改了正则表达式查询以获取所有背景样式:
$value = preg_replace('/(url\(\S+\.(jpg|jpeg|png|svg|gif))\?id=\d+(\))/', '$1$3', $value);
【讨论】:
【参考方案2】:背景样式保存在post_meta
表中。以下是 VC 在页面正文中添加自定义 CSS 的方法:
$shortcodes_custom_css = get_post_meta( $id, '_wpb_shortcodes_custom_css', true );
if ( ! empty( $shortcodes_custom_css ) )
$shortcodes_custom_css = strip_tags( $shortcodes_custom_css );
echo '<style type="text/css" data-type="vc_shortcodes-custom-css">';
echo $shortcodes_custom_css;
echo '</style>';
所以我们可以根据需要过滤 post_meta
值和 VC 输出:
add_filter('get_post_metadata', 'theme_prefix_vc_fix_shortcodes_custom_css', 10, 4);
function theme_prefix_vc_fix_shortcodes_custom_css($value, $object_id, $meta_key, $single)
if ($meta_key!='_wpb_shortcodes_custom_css' || is_admin())
return $value;
// filter data for _wpb_shortcodes_custom_css only and not for admin
remove_filter('get_post_metadata', 'theme_prefix_vc_fix_shortcodes_custom_css', 10);
$value = get_metadata('post', $object_id, $meta_key, $single);
// we need to remove filter here because get_metadata function use "get_post_metadata" hook so we will have loop if not remove filter
if ($value)
// you can use another regular expression, this is what I created quickly
$value = preg_replace("/(background-image[:\s]+url\(\S+\.(jpg|jpeg|png|svg|gif))\?id=\d+(\))/", "$1$3", $value);
add_filter('get_post_metadata', 'theme_prefix_vc_fix_shortcodes_custom_css', 10, 4);
return $value;
或者,您可以使用the_content
过滤器从文档正文的背景图像中删除?id=XXXX
。
【讨论】:
以上是关于Visual Composer 将 ?id= 添加到列和行的背景图像的主要内容,如果未能解决你的问题,请参考以下文章
Wordpress Visual Composer Strech 行和方向 RTL