0

目前我正在为附属产品使用 Woocommerce 插件。例如,我希望能够单击主页上的缩略图并直接转到亚马逊。目前它已经设置好,一旦点击它就会转到我网站上的产品详细信息页面。从那里你可以进入亚马逊页面。但是,点击次数越少越好。

所以我在 content-product.php 页面中找到了钩子。我所做的是将整个内容包装在一个 URL 中,并使用一个自定义字段来添加 URL。没有按预期工作。发生的情况是,该 URL 仅在使用其中一种促销闪存选项时才会转到亚马逊。关闭后,该 URL 不会转到亚马逊,而是转到我网站上的产品页面。我不知道在哪里放置 URL 包装器。

所以我尝试寻找<a href="<?php the_permalink(); ?>">当前控制缩略图去向的那个。我将函数追溯到 woocommerce-template.php 文件。那是我遇到死胡同的地方。我不确定当前缩略图在哪里。

这是我修改后的代码,它部分在 content-product.php 页面中起作用:

<div class="thumbnail-wrapper">
        <a href="<?php echo get_post_meta( $post->ID, 'URLThumb', true ); ?>">
        <?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' );
        ?>  
        </a>
</div>

这是缩略图功能,我似乎无法进一步深入查找<a href="<?php the_permalink(); ?>">要更改的现有功能。这是在 woocommerce-template.php 页面上。

if ( ! function_exists( 'woocommerce_template_loop_product_thumbnail' ) ) {

/**
 * Get the product thumbnail for the loop.
 *
 * @access public
 * @subpackage  Loop
 * @return void
 */
function woocommerce_template_loop_product_thumbnail() {
    echo woocommerce_get_product_thumbnail();
}
}
4

3 回答 3

1

文件名:woocommerce.php

文件位置:wp-content/themes/'your-theme'/theme/woocommerce.php

解决方案:通过查询产品类型定位外部产品,外部时循环$product_url,简单/变量时循环get_permalink()。此代码还说明在新选项卡中打开外部产品。

我将发布一个版本的代码之前的样子,然后发布另一个带有我的添加和修改的版本。在我的主题中,我粘贴的第一行代码位于 woocommerce.php 中的第 374 行(这将根据您的主题而有所不同,并且某些主题可能没有修改后的 woocommerce.php 文件。如果是这种情况,只需拖动 woocommerce .php 从插件到您的主题目录。

添加/修改前的代码:

function woocommerce_template_loop_product_thumbnail() {

global $product, $woocommerce_loop;


$i = 0;
$attachments = array();

$attachments[] = get_post_thumbnail_id();
$attachments = array_merge( $attachments, $product->get_gallery_attachment_ids() );

$original_size = wc_get_image_size( 'shop_catalog' );


if ( $woocommerce_loop['view'] == 'masonry_item' ) {
    $size = $original_size;
    $size['height'] = 0;
    YIT_Registry::get_instance()->image->set_size('shop_catalog', $size );
}

switch  ( $woocommerce_loop['products_layout'] ) {

    case 'zoom':
        if( isset( $attachments[1] ) ) {

            echo '<a href="' . get_permalink() . '" class="thumb">' . woocommerce_get_product_thumbnail() . '</a>';
            echo '<div class="attachments-thumbnail">';
            while( $i < 3 ){
                if( ! isset( $attachments[ $i ] ) ) break;
                $src = wp_get_attachment_image_src( $attachments[ $i ], 'shop_catalog' );
                $active = ( $i == 0 ) ? 'active' : '';
                echo '<div class="single-attachment-thumbnail ' . $active . '" data-img="' . $src[0] . '">';
                yit_image( "id=$attachments[$i]&size=shop_thumbnail&class=image-hover" );
                echo '</div>';
                $i++;
            }
            echo '</div>';
        }
        else {
            echo '<a href="' . get_permalink() . '" class="thumb">' . woocommerce_get_product_thumbnail() . '</a>';
        }
        break;

    case 'flip':
        if( isset( $attachments[1] ) ) {
            echo '<a href="' . get_permalink() . '" class="thumb backface"><span class="face">' . woocommerce_get_product_thumbnail() . '</span></a>';
            echo '<span class="face back">';
            yit_image( "id=$attachments[1]&size=shop_catalog&class=image-hover" );
            echo '</span></a>';
        }
        else {
            echo '<a href="' . get_permalink() . '" class="thumb"><span class="face">' . woocommerce_get_product_thumbnail() . '</span></a>';
        }
        break;
}

添加/修改后的代码:

    function woocommerce_template_loop_product_thumbnail() {

global $product, $woocommerce_loop;

if(!is_single() ) {
    if( $product->is_type( 'external' ) ){
    $product_url = $product->get_product_url() . '"target="_blank""';
        } else( $producenter code heret_url = get_permalink());
} else ($product_url = get_permalink());

$i = 0;
$attachments = array();

$attachments[] = get_post_thumbnail_id();
$attachments = array_merge( $attachments, $product->get_gallery_attachment_ids() );

$original_size = wc_get_image_size( 'shop_catalog' );


if ( $woocommerce_loop['view'] == 'masonry_item' ) {
    $size = $original_size;
    $size['height'] = 0;
    YIT_Registry::get_instance()->image->set_size('shop_catalog', $size );
}

switch  ( $woocommerce_loop['products_layout'] ) {

    case 'zoom':
        if( isset( $attachments[1] ) ) {

            echo '<a href="' . $product_url . '" class="thumb">' . woocommerce_get_product_thumbnail() . '</a>';
            echo '<div class="attachments-thumbnail">';
            while( $i < 3 ){
                if( ! isset( $attachments[ $i ] ) ) break;
                $src = wp_get_attachment_image_src( $attachments[ $i ], 'shop_catalog' );
                $active = ( $i == 0 ) ? 'active' : '';
                echo '<div class="single-attachment-thumbnail ' . $active . '" data-img="' . $src[0] . '">';
                yit_image( "id=$attachments[$i]&size=shop_thumbnail&class=image-hover" );
                echo '</div>';
                $i++;
            }
            echo '</div>';
        }
        else {
            echo '<a href="' . $product_url . '" class="thumb">' . woocommerce_get_product_thumbnail() . '</a>';
        }
        break;

    case 'flip':
        if( isset( $attachments[1] ) ) {
            echo '<a href="' . $product_url . '" class="thumb backface"><span class="face">' . woocommerce_get_product_thumbnail() . '</span></a>';
            echo '<span class="face back">';
            yit_image( "id=$attachments[1]&size=shop_catalog&class=image-hover" );
            echo '</span></a>';
        }
        else {
            echo '<a href="' . $product_url . '" class="thumb"><span class="face">' . woocommerce_get_product_thumbnail() . '</span></a>';
        }
        break;
}

添加的代码:

  if( $product->is_type( 'external' ) ){
    $product_url = $product->get_product_url() . '"target="_blank""';
        } else( $product_url = get_permalink());
} else ($product_url = get_permalink());

代码修改:

除了上面添加的代码之外,将 get_permalink() 的所有实例替换为 $product_url。

于 2015-12-18T05:10:45.707 回答
0

想出了一个解决办法。由于触发的是 SalesFlash 图像,因此我只是使用空白 PNG 图像覆盖在产品图像之上。把我所有的产品都变成了销售商品,而且效果很好。不完美,但无论如何我都不需要销售图标。

但是,如果有人确实知道适当的编程解决方案,我会更改它。谢谢。

于 2013-07-24T17:29:26.117 回答
-1

这在 content-product.php 中为我工作,无需询问元数据

  <div class="thumbnail-wrapper"><a href="<?php echo $product->product_url; ?>">
    <?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' );
        ?>  </a>
    </div

我在 loop/add-to-cart.php 中为第 21 行get_permalink()和第 57行中的“添加更多”和“详细信息”按钮做了同样的事情,$link分别替换它们如下:第 27行

$details  = sprintf('<a href="%s" rel="nofollow" title="%s" class="details">%s</a>', get_permalink(), apply_filters('yit_details_button', __( 'Details', 'yit' )), apply_filters('yit_details_button', __( 'Details', 'yit' )) );

将 get_permalink() 替换为 $product->product_url 并在第 57 行

   $add_to_cart = sprintf('<a href="%s" rel="nofollow" class="view-options" title="%s">%s</a>', apply_filters( 'yit_external_add_to_cart_link_loop', $link, $product ), $label, $label);

再次将 $link 替换为 $product->product_url 。到目前为止,我没有任何问题。我想知道你是否终于找到了一个明确的解决方案,这样我们就可以对缩略图和产品图像做同样的事情,而不需要在它们上面添加一个空白图像。我的代码不多,所以如果有人知道如何放置外部图像,我将不胜感激首页产品图片上的链接。谢谢

于 2013-09-24T08:20:59.673 回答