programing

woocommerce 브레드 크럼 누락 숍 링크

subpage 2023. 3. 20. 23:13
반응형

woocommerce 브레드 크럼 누락 숍 링크

WordPress 사이트에서 Woocommerce(내부 페이지)를 사용하고 있으며, 숍 페이지의 URL 구조는 다음과 같습니다.

mysite/shop/

woocommerce 페이지의 breadcrumb에는 다음과 같은 홈링크만 표시됩니다.You are here:집입니다

및 제품 페이지 URL:

Mysite/제품 카테고리/카테고리_name/

내 숍 페이지 브레드 크럼 쇼:

You are here: Home 

또, 제 카테고리 페이지의 브레드 크럼은 다음과 같이 표시됩니다.

You are here: Home

다음과 같이 표시해야 합니다.

고객님의 위치:홈/쇼핑/카테고리_이름

퍼멀링크 옵션을 확인했는데 괜찮은 것 같아요. 브레드 크럼을 확인했어요.php template file은 그 shop() 페이지가 제 사이트의 홈페이지라고 생각하시는 것 같습니다.

브레드 크럼을 편집해야 하는 경우 어떻게 수정해야 합니까?php 또는 내 설정에 오류가 있습니까?잘 부탁드립니다.

2019년에 이것을 더듬는 사람이라면, 만약 당신이 영구 링크를 변경하거나 테마 파일을 편집하고 싶지 않다면, "Home" 브레드 크럼 뒤에 항목을 추가하는 훨씬 쉬운 방법이 있다.이게 완벽한 해결책은 아닐지 몰라도 나한테는 효과가 있었어.

WC_Breadcrumb 클래스는 브레드 크럼을 반환하기 전에 필터링하기 때문에 후크인하여 배열을 변경할 수 있습니다.$crums 배열은 [[title, url], [title, url]의 배열일 뿐입니다.

add_filter( 'woocommerce_get_breadcrumb', function($crumbs, $Breadcrumb){
        $shop_page_id = wc_get_page_id('shop'); //Get the shop page ID
        if($shop_page_id > 0 && !is_shop()) { //Check we got an ID (shop page is set). Added check for is_shop to prevent Home / Shop / Shop as suggested in comments
            $new_breadcrumb = [
                _x( 'Shop', 'breadcrumb', 'woocommerce' ), //Title
                get_permalink(wc_get_page_id('shop')) // URL
            ];
            array_splice($crumbs, 1, 0, [$new_breadcrumb]); //Insert a new breadcrumb after the 'Home' crumb
        }
        return $crumbs;
    }, 10, 2 );

디버깅을 하고 있었는데 안타깝게도 Woocommerce(2.3.8 버전)는 후크를 사용하여 브레드 크럼 어레이를 직접 조정하지 않습니다.따라서 permalinks 구조를 변경하지 않고 표시된 브레드 크럼을 수정하려면 플러그 인에서 브레드 크럼 템플릿파일을 복사하는 것이 가장 좋습니다(/woocommerce/templates/global/breadcrumb.php를 테마로 합니다( )./theme_name/woocommerce/global/출력 루프가 시작되기 전에 링크를 포함하는 코드를 추가합니다.상품 카테고리, 태그, 세부 사항만 가능하지만 다른 조건도 추가 가능합니다.

<?php
/**
 * Shop breadcrumb
 *
 * @author      WooThemes
 * @package     WooCommerce/Templates
 * @version     2.3.0
 * @see         woocommerce_breadcrumb()
 */

if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

if ( $breadcrumb ) {

    // add shop home url to breadcrumbs
    if( is_product_category() || is_product_tag() || is_product() ) {
        $shop_page_id = wc_get_page_id( 'shop' );
        $shop_home_arr = array( get_the_title($shop_page_id), get_permalink($shop_page_id));

        // insert to breadcrumbs array on second position
        array_splice($breadcrumb, 1, 0, array($shop_home_arr));
    }

    echo $wrap_before;

    foreach ( $breadcrumb as $key => $crumb ) {

        echo $before;

        if ( ! empty( $crumb[1] ) && sizeof( $breadcrumb ) !== $key + 1 ) {
            echo '<a href="' . esc_url( $crumb[1] ) . '">' . esc_html( $crumb[0] ) . '</a>';
        } else {
            echo esc_html( $crumb[0] );
        }

        echo $after;

        if ( sizeof( $breadcrumb ) !== $key + 1 ) {
            echo $delimiter;
        }
    }
    echo $wrap_after;
}

이것은 훨씬 더 쉽게 할 수 있다.이에 따라 permalinks 설정을 변경하면 됩니다(문제 3145의 github 참조).

다음 기준을 충족합니다.

// If permalinks contain the shop page in the URI prepend the breadcrumb with shop 
if (
  $shop_page_id
  && strstr( $permalinks['product_base'], '/' . $shop_page->post_name )
  && get_option( 'page_on_front' ) !== $shop_page_id
 ) {
   $prepend = $before 
     . '<a href="' . get_permalink( $shop_page ) . '">' 
     . $shop_page->post_title . '</a> ' 
     . $after . $delimiter;
 }

그렇지 않으면 추가되지 않습니다.

이를 적용하려면 다음 주소로 이동해야 합니다.

→ WordPress 백엔드 → 설정 → Permalinks

또한 woocommace permalinks 설정을 다음 중 하나로 설정합니다.

  • 숍 베이스
  • 카테고리가 있는 상점 베이스
  • 커스텀 베이스

후자를 사용하는 경우 slug shop / shop / ...①은 앞에 붙여야 합니다.

문제 6584:

경고: preg_match(): wc-core-functions의 알 수 없는 수식자 't'입니다.533행의 php

예를 들어 "Custom Base"가 "/shop/product/..."와 같은 경우 발생합니다.이를 수정한 커밋이 있으며 마스터에서는 사용할 수 있지만 2.2.8은 사용할 수 없습니다.

슬러그 부품 숍은 현지화된 것과 같은 다른 것으로 대체할 수도 있습니다.

머리글에 빵 부스러기 코드가 있다는 걸 알아냈어내 courture 테마 폴더의 php와 그 테마의 작성자는 제품이나 제품 카테고리 페이지에 코드를 쓰지 않았기 때문에 추가했습니다.

elseif (is_single() && get_post_type() == 'product'){   
$posts_page_id = get_option('page_for_posts');
$posts_page_url = get_permalink($posts_page_id); 
echo '<li>';$bar = "shopping";
if(get_option_tree('blog_name', '', false))
/*$bar=get_option_tree('blog_name', '', false);*/ 
echo "<a href=".home_url()."/shopping/>$bar</a></li>";
echo "<li>";
the_title();
echo"</li>";
}

및 제품 카테고리 페이지

if (is_tax()) { 
$posts_page_id = get_option('page_for_posts');
$posts_page_url = get_permalink($posts_page_id); 
echo '<li>';$bar = "Shopping";
if(get_option_tree('blog_name', '', false)) 
echo "<a href=".home_url()."/shopping/>$bar</a> > </li>" ; 
echo "<li>"; 
woocommerce_page_title(); 
echo"</li>";}

woocommerce 디폴트 페이지가 아닌 커스텀 페이지를 사용하고 있기 때문에 blog_name을 취득한 행에 코멘트를 달았습니다.다른 방법이 있는지는 모르겠지만, 이 테마에 있는 대부분의 코드는 widget css에서도 프로페셔널하지 않은 것을 알 수 있었습니다.

언급URL : https://stackoverflow.com/questions/17530026/woocommerce-breadcrumb-missing-shop-link

반응형