如何为特定POST类型禁用W3总缓存图像延迟加载?

时间:2020-01-01 作者:Kimsea Sok

我正在为我的WordPress站点使用W3 Total Cache插件。我已经启用了延迟加载设置选项,但我想禁用特定帖子类型的选项。如何挂钩并禁用它?

2 个回复
SO网友:Arpit Patel

您可以使用此筛选器,

function ar_lazyload_deactivate() {
    if ( is_singular( \'posttype name\' ) ) {
        add_filter( \'do_rocket_lazyload\', \'__return_false\' );
    }
}
add_filter( \'wp\', __NAMESPACE__ . \'\\ar_lazyload_deactivate\' );

SO网友:Constantin

这个答案可能有点晚了,但这里是这样的:W3 Total Cache将跳过延迟加载具有类“”的图像;不要偷懒;。这意味着您可以钩住get_the_post_thumbnail() 滤器post_thumbnail_html 并将类添加到图像中。

下面是一个示例:

/**
 * Disable W3 Total Cache lazy load for post type "post"
 *
 * @param string $html
 * @param int $post_id
 * @param int $image_id
 * @param string|int[] $size
 * @param string|array $attr
 */
function _post_thumbnail_html( $html, $post_id, $image_id, $size, $attr ){

    if( !empty( $html ) ){
        $post = get_post( $post_id );

        if( \'post\' === $post->post_type ){
            if( isset( $attr[\'class\'] ) ){
                $attr[\'class\'] .= \' no-lazy\';
            }else{
                if( !is_array( $attr ) ){
                    $attr = array();
                }

                $attr[\'class\'] = \'no-lazy\';
            }

            $html = wp_get_attachment_image( $image_id, $size, false, $attr );
        }

    }

    return $html;
}
add_filter( \'post_thumbnail_html\', \'_post_thumbnail_html\', 10, 5 );

相关推荐

wordpress hooks

我目前正在使用woocommerce主题,Hotel(https://woocommerce.com/products/hotel/).我最近刚刚创建了一个主页和一个博客页面,其解释方式如下:https://www.wpbeginner.com/wp-tutorials/how-to-create-a-separate-page-for-blog-posts-in-wordpress/现在我想做的是:创建一个带有固定元素的主页,这些元素永远不会改变(如照片),然后添加一些动态元素(如博客中的帖子)……假设