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

将 PHP 代码插入 Visual Composer

WpBakery (Visual Composer) - 响应式最佳实践

Visual Composer 图像轮播无法正确循环

在页面上呈现Visual Composer短代码

php ShortCodes和Visual composer