찾다

 >  Q&A  >  본문

WooCommerce 엔드포인트를 완전히 비활성화합니다.

<p>온라인에서 많이 검색했지만 아직 답변을 찾지 못했습니다. 그래서 저는 여기 전문가들에게 의존하고 있습니다. </p> <p>일부 WooCommerce 엔드포인트를 비활성화하고 싶습니다. 인터넷에서는 아래와 같이 <code>wooCommerce_account_menu_items</code> 후크를 통해 WooCommerce 메뉴 항목을 설정 해제할 수 있다고 알려왔습니다. </p> <pre class="brush:php;toolbar:false;">add_filter ( 'woocommerce_account_menu_items', 'my_remove_my_account_links' ); 함수 my_remove_my_account_links( $menu_links ){ /*** 특정 줄을 제거하려면 해당 줄의 주석 처리를 제거하세요. * WooCommerce 내 계정 화면의 엔드포인트.*/ //unset( $menu_links['dashboard'] ) // 대시보드 제거 //unset( $menu_links['edit-address'] ) // 주소 //unset( $menu_links['결제 방법'] ) // 결제 방법 삭제 //unset( $menu_links['orders'] ) // 주문 제거 //unset( $menu_links['downloads'] ) // 다운로드 비활성화 //unset( $menu_links['edit-account'] ) // 계정 세부정보 탭 제거 //unset( $menu_links['customer-logout'] ) // 로그아웃 링크 제거 $menu_links를 반환합니다. }</pre> <p>그러나 여기서 가장 큰 문제는 프런트 엔드의 메뉴 링크만 제거된다는 것입니다. 직접 URL을 통해 설정되지 않은 엔드포인트에 계속 액세스할 수 있습니다. 따라서 <code>https://example.de/myaccount/[unset-endpoint]</code>를 입력해도 콘텐츠에 계속 액세스할 수 있습니다. </p> <p>직접 URL을 통해 리디렉션에 액세스하는 방법을 찾았습니다. 결제 방법 템플릿(/woocommerce/templates/myaccount/결제-methods.php)에 있는 후크 <code>woocommerce_before_account_pay_methods</code>를 사용하여 대시보드로 다시 리디렉션했습니다. </p> <pre class="brush:php;toolbar:false;">함수 리디렉션_forbidden_access_account_endpoints(){ wp_redirect(wc_get_account_endpoint_url('대시보드')); } add_action('woocommerce_before_account_pay_methods', 'redirect_forbidden_access_account_endpoints');</pre> <p>이 방법은 매우 유용하지만 <code>결제 방법</code> 엔드포인트에서만 작동합니다. 네이티브 <code>downloads</code> 엔드포인트와 사용자 정의 엔드포인트로 동일한 작업을 시도했지만 성공하지 못했습니다. </p> <p>제 질문은: 비활성화된 특정 WooCommerce 엔드포인트에서 대시보드로 URL 액세스를 리디렉션하는 안정적인 솔루션이 있습니까? </p>
P粉596191963P粉596191963457일 전605

모든 응답(2)나는 대답할 것이다

  • P粉725827686

    P粉7258276862023-08-28 21:32:12

    다음 두 가지 방법으로 할 수 있습니다:

    1. 백그라운드 설정에 null 값을 입력하세요
      WooCommerce > 설정 > 고급으로 이동하여 계정 엔드포인트 입력 상자에서 특정 엔드포인트에 대한 값을 삭제하고 빈 값을 저장할 수 있습니다.

      이렇게 하면 계정 페이지에 엔드포인트 페이지나 메뉴 항목이 표시되지 않고, 해당 URL을 방문하면 방문한 URL에 홈페이지가 표시됩니다.

    2. 쿼리 변수 설정 해제
      필터 후크를 사용하여 쿼리 변수를 설정 해제할 수 있습니다. https://github.com/woocommerce/woocommerce/blob/trunk/plugins/woocommerce/includes/class-wc-query.php#L85
      라인 85에서 모든 쿼리 변수가 포함된 함수를 찾을 수 있습니다.

      https://github.com/woocommerce/woocommerce/blob/trunk/plugins/woocommerce/includes/class-wc-query.php#L232
      그리고 232번째 줄에서는 필터도 포함된 쿼리 변수를 가져오는 함수를 찾을 수 있습니다. 필터를 사용하고 필수 엔드포인트를 설정 해제할 수 있습니다.

      이 방법을 사용하는 경우 탐색 메뉴 항목에서 해당 항목의 설정을 해제해야 하며 고유 링크 설정도 다시 저장해야 합니다.

      그리고 해당 엔드포인트의 URL을 방문하면, 방문한 URL의 홈페이지가 보입니다.

    두 경우 모두 404 페이지가 표시되지 않습니다.

    회신하다
    0
  • P粉217629009

    P粉2176290092023-08-28 15:42:08

    답은: 네, 그렇습니다! 내 후크가 잘못 작성되었습니다. 이제 wp 후크를 사용합니다. 이것이 합법적인가요?

    으아악

    이것이 해결책입니다.

    회신하다
    0
  • 취소회신하다