从WooCommerce图库中删除精选图片

时间:2017-06-24 04:48:03

标签: php wordpress image woocommerce product

我尝试使用其他帖子的建议,但它们不起作用。我希望不在我的产品图片area/image库中显示精选产品图片,因为我使用标题中的精选图片作为背景图片,而且它太宽而无法在图库中显示。

到目前为止,这是最接近工作但我收到错误的事情。然而它确实做我需要的。

有任何方法可以解决这个问题,所以我没有收到错误吗?

这是我的代码:

add_filter('woocommerce_single_product_image_thumbnail_html', 'remove_featured_image', 10, 3);
function remove_featured_image($html, $attachment_id, $post_id) {
    $featured_image = get_post_thumbnail_id($post_id);
    if ($attachment_id != $featured_image) {
        return $html;
    }
    return '';
}

这是错误:

  

在/home/.../plugins/my-custom-functions/inc/php/functional.php(93)中删除了remove_featured_image()的参数3:eval()' d代码在第4行

     

警告:/home.../plugins/my-custom-functions/inc/php/functional.php(93)中的remove_featured_image()缺少参数3:第4行的eval()'代码

2 个答案:

答案 0 :(得分:2)

function val = gaussC(pI,dS,sigma) x = pI(:,1); %x values of all pixels y = pI(:,2); %y values of all pixels rho = dS(1); theta = dS(2); %Converting polar coordinates to rectangular coordinates to get mean value %in x and y direction exponent = [(x-rho*cos(theta)).^2 + (y-rho*sin(theta)).^2]./(2*sigma^2); val = exp(-exponent)./(sigma*sqrt(2*pi)); end 过滤器钩子只有 2个参数

所以你必须改变你的代码以避免错误,这样:

woocommerce_single_product_image_thumbnail_html

代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中。

过滤器挂钩woocommerce_single_product_image_thumbnail_html的参考:

答案 1 :(得分:1)

这就是我所做的,希望对您有所帮助。 我使用Meta Box插件在产品编辑页面(在Wordpress后端)中创建了一个自定义复选框。复选框基本上是“隐藏产品库中的特色图片”,这是代码(将其放置在functions.php文件中):

function hide_first_img( $meta_boxes ) {

$prefix = 'meta_box';

$meta_boxes[] = array(
    'id' => 'hide_img',
    'title' => esc_html__( 'Hide first image', 'custom_meta_boxes' ),
    'post_types' => array('product'),
    'context' => 'advanced',
    'priority' => 'default',
    'autosave' => 'false',
    'fields' => array(
        array(
            'id' => $prefix . '_hide_first_image',
            'name' => esc_html__( 'Hide first image in product gallery', 'custom_meta_boxes' ),
            'type' => 'checkbox',
            'desc' => esc_html__( 'Check to hide the first image in the gallery', 'custom_meta_boxes' ),
        ),
    ),
);

return $meta_boxes;
}
add_filter( 'rwmb_meta_boxes', 'hide_first_img' );

然后,我使用LoicTheAztec的代码(效果很好)仅在选中此复选框的情况下才删除图像,就像这样(放置在functions.php文件中):

function remove_featured_image($html, $attachment_id ) {

    if( rwmb_meta( 'meta_box_hide_first_image' )){
 
        global $post, $product;

        $featured_image = get_post_thumbnail_id( $post->ID );

        if ( $attachment_id == $featured_image )
            $html = '';

    }

    return $html;
}
add_filter('woocommerce_single_product_image_thumbnail_html', 'remove_featured_image', 10, 2);

最后,仅对于FLATSOME THEME用户,要隐藏图库中的第一个缩略图,我直接在子主题文件夹中编辑了以下文件:\ flatsome-child \ woocommerce \ single-product \ product-gallery-thumbnails。 php

对于默认的Woocomerce画廊或其他主题,也许有一些类似的文件:

// show first thumbnail only if meta box is NOT checked
<?php if( !rwmb_meta( 'meta_box_hide_first_image' )) : ?>

    <div class="col is-nav-selected first">
      <a>
        <?php
          $image_id = get_post_thumbnail_id($post->ID);
          $image =  wp_get_attachment_image_src( $image_id, apply_filters( 'woocommerce_gallery_thumbnail_size', 'woocommerce_'.$image_size ) );
        $image_alt = get_post_meta( $image_id, '_wp_attachment_image_alt', true );
          $image = '<img src="'.$image[0].'" alt="'.$image_alt.'" width="'.$gallery_thumbnail['width'].'" height="'.$gallery_thumbnail['height'].'" class="attachment-woocommerce_thumbnail" />';

          echo $image;
        ?>
      </a>
    </div>

  <?php endif; ?>

我可以确认它现在正在我的网站上正常运行。