Woocommerce - 外部/联盟产品图片到外部链接(购买网址)

时间:2016-12-03 09:58:21

标签: php wordpress woocommerce woothemes affiliate

(警告:我不是程序员)直截了当。

我有一个产品目录http://adidassuperstar.cz,我希望图片(缩略图)指向会员链接 - 与图像下的购买按钮链接相同的链接。

我搜索了所有内容,但没有一个答案对我有用。但是,我找到了一些帮助我一半的东西。当我将这段代码插入到functions.php时,它就是这样:每个链接指向会员链接 - 我的意思是甚至是产品的标题。我只希望图片有联盟链接,而不是标题。标题应指向我网站上的产品页面。

以下是代码:

// Do not include this if already open!
/**
* Code goes in theme functions.php.
*/
add_action('template_redirect', 'redirect_external_products');
function redirect_external_products() {
    global $post;
    if (is_singular( 'product' ) &&
        ! empty( $post ) &&
        ($product = wc_get_product($post)) &&
         $product->is_type('external' )) {

        wp_redirect( $product->get_product_url() );
        exit;
    }
}

我只需要指定代码来仅重定向图像(缩略图)。如果你有一个线索如何做到这一点。请告诉我。

*其他信息(已更改6.12.2016):

文件:Product-thumbnails.php

<?php
    /**
     * Single Product Thumbnails
     *
     * @author         WooThemes
     * @package     WooCommerce/Templates
     * @version     2.3.0
     */

    if (! defined('ABSPATH'))
        exit; // Exit if accessed directly

    global $post, $product, $woocommerce;

    if (! Avada()->settings->get('disable_woo_gallery')) {
        include WC()->plugin_path() . '/templates/single-product/product-thumbnails.php';
        return;
    }

    $attachment_ids = $product->get_gallery_attachment_ids();

    if ($attachment_ids) {

?>

    <div id="carousel" class="flexslider">
        <ul class="slides">
            <?php
                // From product-image.php
                if (has_post_thumbnail()) {

                    $image_title = esc_attr(get_the_title(get_post_thumbnail_id()));
                    $image_link  = wp_get_attachment_url(get_post_thumbnail_id());
                    $image       = get_the_post_thumbnail
                                       ($post->ID,
                                        apply_filters('single_product_large_thumbnail_size',
                                                      'shop_thumbnail'),
                                            array(
                                                'title' => $image_title
                                            )
                                        );
                    $attachment_count = count($product->get_gallery_attachment_ids());

                    if ($attachment_count > 0) {
                        $gallery = '[product-gallery]';
                    }
                    else {
                        $gallery = '';
                    }

                    // Avada Edit
                    echo apply_filters(
                        'woocommerce_single_product_image_thumbnail_html',
                        sprintf('<li>%s</li>', $image),
                        $post->ID);

                } else {
                    echo apply_filters(
                             'woocommerce_single_product_image_html',
                             sprintf('<li><img src="%s" alt="Placeholder" /></li>',
                             wc_placeholder_img_src()),
                             $post->ID);
                }

                $loop = 0;
                // Avada Edit
                $columns = apply_filters('woocommerce_product_thumbnails_columns', 3);

                foreach ($attachment_ids as $attachment_id) {

                    // Avada Edit
                    /*$classes = array('zoom');

                    if ($loop == 0 || $loop % $columns == 0)
                        $classes[] = 'first';

                    if (($loop + 1) % $columns == 0)
                        $classes[] = 'last';
                    */
                    $classes[] = 'image-' . $attachment_id;

                    $image_link = wp_get_attachment_url($attachment_id);

                    if (! $image_link)
                        continue;

                    $image       = wp_get_attachment_image(
                                       $attachment_id,
                                       apply_filters('single_product_small_thumbnail_size',
                                                     'shop_thumbnail'));
                    $image_class = esc_attr(implode(' ', $classes));
                    $image_title = esc_attr(get_the_title($attachment_id));

                    // Avada Edit
                    echo apply_filters(
                        'woocommerce_single_product_image_thumbnail_html',
                        sprintf('<li>%s</li>', $image),
                        $attachment_id,
                        $post->ID,
                        $image_class);

                    $loop++;
                }
   ?>

        </ul>
    </div>

    <?php
}

// Omit closing PHP tag to avoid "Headers already sent" issues.

文件:product-image.php

<?php
/**
 * Single Product Image
 *
 * @author         WooThemes
 * @package     WooCommerce/Templates
 * @version     2.0.14
 */

if (! defined('ABSPATH'))
    exit; // Exit if accessed directly

global $post, $woocommerce, $product;

if (! Avada()->settings->get('disable_woo_gallery')) {
    include WC()->plugin_path() . '/templates/single-product/product-image.php';
    return;
}

?>

<div class="images">

    <div id="slider" class="fusion-flexslider">
        <ul class="slides">
            <?php
                $attachment_count = count($product->get_gallery_attachment_ids());

                if ($attachment_count > 0) {
                    $gallery = '[product-gallery]';
                }
                else {
                    $gallery = '[]';
                }

                if (has_post_thumbnail()) {

                    $image_title = esc_attr(get_the_title(get_post_thumbnail_id()));
                    $image_link  = wp_get_attachment_url(get_post_thumbnail_id());
                    $image       = get_the_post_thumbnail(
                                       $post->ID,
                                       apply_filters('single_product_large_thumbnail_size',
                                                     'shop_single' ),
                                       array(
                                           'title' => $image_title
                                       ));
                    $image_caption = get_post_field('post_excerpt',
                                                    get_post_thumbnail_id());

                    // Avada Edit
                    echo apply_filters('woocommerce_single_product_image_html',
                                       sprintf(
                                           '<li><a href="%s" itemprop="image" class="woocommerce-main-image zoom" title="%s" data-rel="iLightbox' .
                                             $gallery .
                                             '" data-title="%s" data-caption="%s">%s</a></li>',
                                           $image_link,
                                           $image_title,
                                           $image_title,
                                           $image_caption,
                                           $image),
                                       $post->ID);

                }
                else {
                    echo apply_filters('woocommerce_single_product_image_html',
                                       sprintf('<li><img src="%s" alt="Placeholder" /></li>',
                                               wc_placeholder_img_src()),
                                       $post->ID);

                }

                /**
                 * From product-thumbnails.php
                 */
                $attachment_ids = $product->get_gallery_attachment_ids();

                $loop = 0;
                // Avada Edit
                //$columns = apply_filters('woocommerce_product_thumbnails_columns', 3);

                foreach ($attachment_ids as $attachment_id ) {

                    // Avada Edit
                    /*
                    $classes = array('zoom');

                    if ($loop == 0 || $loop % $columns == 0)
                        $classes[] = 'first';

                    if (( $loop + 1 ) % $columns == 0)
                        $classes[] = 'last';
                    */
                    $classes[] = 'image-'.$attachment_id;

                    $image_link = wp_get_attachment_url($attachment_id);

                    if (! $image_link)
                        continue;

                    // Avada Edit
                    // modified image size to shop_single from thumbnail
                    $image       = wp_get_attachment_image(
                                       $attachment_id,
                                       apply_filters('single_product_small_thumbnail_size',
                                                     'shop_single'));
                    $image_class = esc_attr(implode(' ', $classes));
                    $image_title = esc_attr(get_the_title($attachment_id));
                    $image_caption = get_post_field('post_excerpt', $attachment_id);

                    // Avada Edit
                    echo apply_filters('woocommerce_single_product_image_html',
                                       sprintf(
                                           '<li><a href="%s" itemprop="image" class="woocommerce-main-image zoom" title="%s" data-rel="iLightbox' .
                                               $gallery .
                                               '" data-title="%s" data-caption="%s">%s</a></li>',
                                           $image_link,
                                           $image_title,
                                           $image_title,
                                           $image_caption,
                                           $image),
                                       $attachment_id,
                                       $post->ID,
                                       $image_class);
                    //echo apply_filters(
                    //         'woocommerce_single_product_image_thumbnail_html',
                    //          sprintf(
                    //              '<a href="%s" class="%s" title="%s" data-rel="prettyPhoto[product-gallery]">%s</a>',
                    //              $image_link,
                    //              $image_class,
                    //              $image_title,
                    //              $image),
                    //          $attachment_id,
                    //          $post->ID,
                    //          $image_class);

                    $loop++;
                }
            ?>
        </ul>
    </div>

    <?php do_action('woocommerce_product_thumbnails'); ?>

</div>

文件:Content-product.php

<?php
    /**
     * The template for displaying product content within loops
     *
     * This template can be overridden by copying it to
     * yourtheme/woocommerce/content-product.php.
     *
     * HOWEVER, on occasion WooCommerce will need to update template
     * files and you (the theme developer) will need to copy the
     * new files to your theme to maintain compatibility. We try
     * to do this as little as possible, but it does happen. When
     * this occurs the version of the template file will be bumped and
     * the readme will list any important changes.
     *
     * @see     http://docs.woothemes.com/document/template-structure/
     * @author  WooThemes
     * @package WooCommerce/Templates
     * @version 2.5.0
     */

    if (! defined( 'ABSPATH')) {
        exit; // Exit if accessed directly
    }

    global $product, $woocommerce_loop;

    // Store loop count we're currently on
    if (empty( $woocommerce_loop['loop'])) {
        $woocommerce_loop['loop'] = 0;
    }

    // Store column count for displaying the grid
    if (empty( $woocommerce_loop['columns'])) {
        $woocommerce_loop['columns'] = apply_filters('loop_shop_columns', 4);
    }

    // Ensure visibility
    if (! $product || ! $product->is_visible()) {
        return;
    }

    // Increase loop count
    $woocommerce_loop['loop']++;

    // Extra post classes
    $classes = array();
    if ( 0 === ($woocommerce_loop['loop'] - 1) % $woocommerce_loop['columns'] ||
         1 === $woocommerce_loop['columns'] ) {

        $classes[] = 'first';
    }
    if ( 0 === $woocommerce_loop['loop'] % $woocommerce_loop['columns'] ) {
        $classes[] = 'last';
    }

?>

<li <?php post_class( $classes ); ?>>

    <?php
        /**
         * woocommerce_before_shop_loop_item hook.
         *
         * @hooked woocommerce_template_loop_product_link_open - 10
         */
        do_action('woocommerce_before_shop_loop_item');

    ?>

    <?php if ('clean' != Avada()->settings->get('woocommerce_product_box_design')) : ?>
        <a href="<?php the_permalink(); ?>" class="product-images">
    <?php endif;?>

    <?php
        /**
         * woocommerce_before_shop_loop_item_title hook.
         *
         * @hooked woocommerce_show_product_loop_sale_flash - 10
         * @hooked woocommerce_template_loop_product_thumbnail - 10
         */
        do_action('woocommerce_before_shop_loop_item_title');
    ?>
    <?php if ('clean' != Avada()->settings->get('woocommerce_product_box_design')) : ?>
        </a>
    <?php endif; ?>

    <div class="product-details">
        <div class="product-details-container">
            <?php
                /**
                 * woocommerce_shop_loop_item_title hook.
                 *
                 * @hooked woocommerce_template_loop_product_title - 10
                 */
                do_action('woocommerce_shop_loop_item_title');
            ?>

            <div class="clearfix">
                <?php
                    /**
                     * woocommerce_after_shop_loop_item_title hook.
                     *
                     * @hooked woocommerce_template_loop_rating - 5
                     * @hooked woocommerce_template_loop_price - 10
                     */
                    do_action('woocommerce_after_shop_loop_item_title');
                ?>

            </div>
        </div>
    </div>

    <?php
        /**
         * woocommerce_after_shop_loop_item hook.
         *
         * @hooked woocommerce_template_loop_product_link_close - 5
         * @hooked woocommerce_template_loop_add_to_cart - 10
         */
        do_action('woocommerce_after_shop_loop_item');
    ?>

</li>

我使用WordPress主题:Avada

使用插件导入产品:WP All import

如果您需要更多信息,我会给您。请问:)

0 个答案:

没有答案