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

问题描述:

目前,我正在为会员产品使用Woocommerce插件。例如,我希望能够点击主页上的缩略图并直接转到亚马逊。目前它的设置是这样的,一旦点击它,我的网站上的产品详细信息页面。从那里你可以到达亚马逊页面。然而,点击次数越少越好。Woocommerce产品的自定义字段网址选项缩略图

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

所以我试图寻找当前控制缩略图的<a href="<?php the_permalink(); ?>">。我将函数追溯到woocommerce-template.php文件。那就是我陷入死胡同的地方。我不确定当前缩略图的位置。

这是我修改后的代码,在内容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(); 
} 
} 

想通了一个工作。由于SalesFlash图像是被触发的图像,我只是使用空白的PNG图像覆盖产品图像的顶部。把我所有的产品都变成了销售物品,它很有效。不完美,但我不需要销售图标。

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

本上的内容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 

我也做了同样的事情中环路/添加到cart.php的“添加更多” 和 “详细信息” 中的线21 get_permalink()和57 $link分别替换它们像这样的按钮: LINE 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_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); 

get_permalink()更换再次$产品 - > product_url $链接。 我没有问题,直到现在。我想知道你是否最终找到了一个明确的解决方案,所以我们可以为thumnails和产品图像做同样的事情,而不在其上添加空白图像。我没有太多的代码,所以如果有人知道如何将一个外部woocommerce.php

文件位置:可湿性粉剂内容/主题/“您的主题” /主题/ woocommerce正面page.Thank你

文件名上的产品图片链接。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()); 

代码:

与已在上面添加的代码外,替换()与$ product_url get_permalink的所有实例。

+0

请保持不相关的网址出现可能被视为垃圾邮件的答案。谢谢。 – Drew