Woocommerce产品缩略图的自定义字段URL选项

时间:2013-06-25 18:29:28

标签: php wordpress hook woocommerce custom-fields

目前我正在使用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();
}
}

3 个答案:

答案 0 :(得分:1)

文件名:woocommerce.php

文件位置:wp-content / themes /&#39; your-theme&#39; /theme/woocommerce.php

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

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

添加/修改前的代码:

    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());

已添加代码:

Temp/
Library/ 
ExportedObj/
obj/
*.svd
*.userprefs
/*.csproj
*.pidb
*.suo
/*.sln
*.user
*.unityproj
*.booproj
.DS_Store
._*
Thumbs.db

代码修改:

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

答案 1 :(得分:0)

找出解决方法。由于SalesFlash图像是被触发的图像,我只是使用空白的PNG图像覆盖产品图像的顶部。将我的所有产品转变为销售商品并且有效。不完美,但我还是不需要销售图标。

但如果有人知道正确的编程解决方案,我会改变它。感谢。

答案 2 :(得分:-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' )) );
  

使用$ product-&gt; product_url替换get_permalink()   和在线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);
  

再次使用$ product-&gt; product_url替换$ link。   直到现在我还没有问题。我想知道你是否最终找到了一个明确的解决方案,所以我们可以为thumnails和产品图像做同样的事情,而不在它们上面添加一个空白图像。我的代码不多,所以如果有人知道如何放置外部我会很感激链接到首页上的产品图片。谢谢

相关问题