WooCommerce 엔드포인트를 완전히 비활성화합니다.
P粉596191963
2023-08-27 23:22:49
<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>
다음 두 가지 방법으로 할 수 있습니다:
백그라운드 설정에 null 값을 입력하세요
WooCommerce > 설정 > 고급으로 이동하여 계정 엔드포인트 입력 상자에서 특정 엔드포인트에 대한 값을 삭제하고 빈 값을 저장할 수 있습니다.
이렇게 하면 계정 페이지에 엔드포인트 페이지나 메뉴 항목이 표시되지 않고, 해당 URL을 방문하면 방문한 URL에 홈페이지가 표시됩니다.
쿼리 변수 설정 해제
필터 후크를 사용하여 쿼리 변수를 설정 해제할 수 있습니다. 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 페이지가 표시되지 않습니다.
답은: 네, 그렇습니다! 내 후크가 잘못 작성되었습니다. 이제 wp 후크를 사용합니다. 이것이 합법적인가요?
으아악이것이 해결책입니다.