0

現在、アフィリエイト製品に Woocommerce プラグインを使用しています。たとえば、メイン ページのサムネイルをクリックして直接 amazon にアクセスできるようにしたいと考えています。現在、クリックすると私のサイトの製品詳細ページに移動するように設定されています。そこからアマゾンのページに飛びます。ただし、クリック数は少ないほど良いです。

そのため、content-product.php ページでフックを見つけました。私がしたことは、すべてを URL でラップし、カスタム フィールドを使用して URL に追加することでした。意図したとおりに機能しません。セール フラッシュ オプションの 1 つを使用した場合にのみ、URL が amazon に移動します。オフにすると、URL は amazon ではなく、私のサイトの製品ページに移動します。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() でループして、製品タイプのクエリを介して外部製品をターゲットにします。このコードは、外部製品を新しいタブで開くことも考慮しています。

コードが以前のように見えたものの 1 つのバージョンを投稿し、次に追加と変更を加えた別のバージョンを投稿します。私のテーマでは、貼り付けたコードの最初の行は 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 に答える