2014-01-15 1 views
2

후크가있는 Woocommerce 템플릿을 편집하는 데 약간의 문제가 있습니다. 기본적으로 product-image 템플릿을 변경하여 업로드 된 제품 이미지에 링크하는 대신 제품 게시물에 연결합니다.후크가있는 템플릿 무시

현재 product-image.php woocommerce 템플릿은

global $post, $woocommerce, $product; 

?> 
<div class="images"> 

<?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_single'), array(
      'title' => $image_title 
      )); 
     $attachment_count = count($product->get_gallery_attachment_ids()); 

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

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

    } else { 

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

    } 
?> 

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

</div> 

내가 게시물에 대한 링크에 %s을 변경하려면 echo apply_filters('woocommerce_single_product_image_html', sprintf('<a href="%s" itemprop="image" class="woocommerce-main-image zoom" title="%s" rel="prettyPhoto' . $gallery . '">%s</a>', $image_link, $image_title, $image), $post->ID);을 적용하는 방법이 확실하지 있습니다.

내가 사용하고 후크는 다음과 같습니다

add_action('woocommerce_product_thumbnails', 'custom_links'); 

function custom_links() { 
//code 
} 

누군가가 나를이 몇 가지 방향을 얻을 수 있도록 수 있을까요?

답변

1

필터가 아닌 작업을 호출하고 있습니다. 또한 잘못된 것을 부르고 있습니다.

변경이 :

add_filter('woocommerce_single_product_image_html', 'custom_links', 10, 2); 

2이 함수의 인수 개수를 표시하고 custom_links() 같은 것을해야한다 :

function custom_links($link, $post_id) { 
    $pattern = '/(?<=href=")([^"]*)/'; 
    $replacement = get_permalink($post->ID); 
    return preg_replace($pattern, $replacement, $link); 
} 

을 처리를 이것에

add_action('woocommerce_product_thumbnails', 'custom_links'); 

필요에 따라 $link 변수 및 th 그것을 반환하십시오.

+0

응답 해 주셔서 감사합니다. 함수가 작동하는 것처럼 보입니다. 그러나'$ link'의 값을 변경하면 그림이 제거됩니다. href를 어떻게 변경하고 src를 그대로 둘 수 있습니까? – Chris

+0

@Chris $ link 변수에 ""과 같은 HTML이 포함되어 있기 때문입니다. preg_replace() (또는 다른 문자열 함수)를 사용하여 URL 만 수정하거나 전체 문자열을 다시 생성하십시오. 제품 ID가 있습니다. 이미지 및 URL을 가져 와서 문자열을 다시 실행하십시오. – ViszinisA

+0

$ 링크 문자열을 바꿀 때 치명적인 오류가 발생합니다. I.E. 그것을 이미지에 보여주기 위해서, 그것도 포스트에 링크하지 말아라'function custom_links ($ link, $ post_id) { $ link = ""; return $ link; }'나는 여기에 규칙이 없다고 생각합니다. – Chris

관련 문제