사용자 정의 템플릿을 사용하는 WooCommerce 상점 페이지 [닫기]


9

질문을하기 전에 /programming/15025213/wordpress-woocommerce-template-file-overiding 에서 질문을 이미했음을 알려 드리고자합니다.

웹 사이트를 개발하기 위해 WooCommerce 플러그인을 사용하고 있습니다. WooCommerce는 모든 것이 정상입니다. 내 요구 사항에 따라 WooCommerce 대시 보드에서 내 홈페이지를 상점 페이지로 만들기 위해 홈페이지를 상점 기본 페이지로 구성했습니다. 이제 내 요구 사항은 관리자 측에서 업로드해야 할 이미지를 배치하고 이미지 위에 텍스트를 표시하는 것입니다. 이 기능을 위해 Google을 검색했으며 일부 사람들은 WordPress Advanced Custom Fields 사용을 제안했습니다 . 방금 설치했습니다.

이제 WooCommerce가 내 사용자 지정 테마를 사용하지 않는 것을 보았습니다. 자체 사용자 지정 테마를 사용하고 있습니다. Advanced Custom Fields 플러그인을 사용하여 이미지와 텍스트를 보여주고 싶기 때문에 이미지와 텍스트에 대한 쿼리를 사용하려면 고유 한 사용자 정의 템플릿이 필요합니다. 그런 다음 다시 솔루션을 구글을 통해 검색하고 난 그냥 테마의 사본을 만들 수있는 제안을 가지고 page.phpwoocommerce.php한 후 바로 코드를 교체하십시오 :

     <?php while ( have_posts() ) : the_post(); ?>

      <?php get_template_part( 'content', 'page' ); ?>

      <?php comments_template( '', true ); ?>

    <?php endwhile; // end of the loop. ?>

<?php woocommerce_content(); ?>

나는 그렇게했지만 여전히 고급 사용자 정의 필드에서 사용자 정의 필드를 얻지 못했습니다 . 친절하게 도와주세요. 어떤 제안이나 도움이 있으면 감사하겠습니다. 감사.

이미지 및 텍스트에 대한 고급 사용자 정의 필드를 표시하는 코드는 다음과 같습니다.

<?php $product_tab_banner = get_field('product_tab_banner');
    if($product_tab_banner): ?>
   <?php var_dump($product_tab_banner); ?>
    <div class="nt-highlighted-products">
    <img src="<?php echo $product_tab_banner['url']; ?>" alt="<?php echo $product_tab_banner['alt']; ?>"  width="<?php echo $product_tab_banner['sizes']['featured_product-width'];?>" height="<?php echo $product_tab_banner['sizes']['featured_product-height'];?>" title="<?php echo $product_tab_banner['title']; ?>" />
    </div>
  <?php endif; ?>

WordPress TwentyEleven 테마를 사용하고 있습니다.


아마도 WC 문서 에 힌트가있을 것입니다.
brasofilo 2013

@brasofilo 나는 문서를 검색했지만 아무런 단서도 얻지 못했습니다 ...
NewUser

이것이 도움 되는지 확인하십시오 .
brasofilo

네, 시도했지만 다음과 같이 보입니다Fatal error: Cannot redeclare show_template() (previously declared
NewUser

함수 이름에 실수가있었습니다. 방금 수정했습니다.
brasofilo

답변:


5

귀하의 질문을 통해 woocommerce 가 사용자 정의 템플릿을 사용하지 않을 것이라고 말하고 싶습니다 . 자체 템플릿을 사용합니다. 워드 프레스 고급 사용자 정의 필드 플러그인 을 사용하려면 기능이 페이지 및 게시물에서만 작동한다는 것을 말하고 싶습니다. 그래서으로 woocommerce 고급 사용자 정의 필드 기능을 사용할 수 없습니다 자신 만의 템플릿을 사용 할 수 없습니다.

이제 다른 것을하십시오. 당신이 당신의 제품을 보여주고 싶은 곳에 자신 만의 커스텀 템플릿을 만드십시오. 그런 다음 http://docs.woothemes.com/document/woocommerce-shortcodes/ 사이트로 이동 하십시오. 여기 에서 woocommerce단축 코드 를 볼 수 있습니다 . 사용자 정의를 통해 거의 모든 제품을 쉽게 표시 할 수 있습니다. 이제이 단축 코드 를 사용 하여 제품을 표시하십시오. 여기에서 woocommerce 가 사용자 정의 템플릿을 사용 하고 있음을 알았습니다 . 이제 자신의 템플릿이므로 고급 사용자 정의 필드를 쉽게 사용할 수 있습니다. 그거 분명해? 당신이 이해할 수없는 것이 있으면 저에게 회신하십시오. 이것이 도움이되기를 바랍니다.


11

문제를 올바르게 이해하고 있는지 잘 모르겠지만 여기에 문제를 재현하려는 시도가 있습니다.

먼저 WooCommerce 문서의이 부분을 ​​고려하십시오 .

당신이 이러한 템플릿의 편집 일을하려면 단순히라는 이름의 테마 내에서 디렉토리에 복사 /woocommerce같은 파일 구조, 예를 들어 이동 유지 /templates/cart/cart.php에를 themename/woocommerce/cart/cart.php. 복사 된 파일은 이제 WooCommerce 기본 템플릿 파일보다 우선합니다.

둘째 , 복제 단계는 다음과 같습니다.

  • WP 3.5.1, TwentyEleven 1.5, WooCommerce 1.6.6 및 AdvancedCustomFields 4.0.0 사용
  • 읽기 설정 ( /wp-admin/options-reading.php) 에서 "Shop"페이지를 정적 프론트 페이지로 설정하십시오.
  • 이미지 필드 ( product_tab_banner) 가 포함 된 ACF 필드 그룹을 리턴 값을 "이미지 오브젝트"로 설정하고 포스트 유형 "제품"에 표시되도록 설정하십시오.

해결책 :

  • 다음 폴더를 작성하십시오. /wp-content/twentyeleven/woocommerce/
  • 파일 /wp-content/plugins/woocommerce/templates/content-product.php 을 새로 생성 된 폴더로 복사하십시오.
  • 이 사본에 코드를 넣으십시오. content-product.php
$product_tab_banner = get_field('product_tab_banner');
if($product_tab_banner): ?>
    <div class="nt-highlighted-products">
    <img src="<?php echo $product_tab_banner['url']; ?>" 
        alt="<?php echo $product_tab_banner['alt']; ?>"  
        width="<?php echo $product_tab_banner['sizes']['featured_product-width'];?>" 
        height="<?php echo $product_tab_banner['sizes']['featured_product-height'];?>" 
        title="<?php echo $product_tab_banner['title']; ?>" />
    </div>
<?php endif; ?>

제품 페이지는 다음과 같습니다.

제품 페이지
클릭하면 확대

그리고 여기 사이트의 결과 :

사이트 결과


"Shop"페이지를 사용자 정의하려면 파일 /wp-content/plugins/woocommerce/templates/archive-product.php을 테마 /woocommerce/폴더에 복사하십시오.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.