Нет встроенной функции для получения просматриваемой страницы последней категории. Но у меня есть некоторые идеи о том, как это можно решить.
Сначала нужно создать настраиваемое действие, проверить, является ли страница страницей категории, и установить идентификатор категории в данные сеанса, если это так. Затем нажмите кнопку
/* Set up session */
add_action( 'init', 'wp_check_for_product_cat_sess');
function wp_check_for_product_cat_sess(){
if(!session_id()) {
session_start();
}
}
/* Set session variable when on Category or Product page */
add_action( 'wp', 'wp_check_for_product_cat');
function wp_check_for_product_cat(){
global $wp_query;
if( is_product_category() ){ // This is Category; use my ID
$_SESSION['wp_last_cat'] = $wp_query->get_queried_object()->term_id;
}
if( is_product() ){ // This is Product; use my ID to get my Categories
$cats = get_the_terms( $wp_query->get_queried_object(), 'product_cat' ) ;
if( count( $cats ) > 0 ){
foreach($cats as $one_cat ){
$_SESSION['wp_last_cat'] = $one_cat->term_id;
}
}
}
if( is_cart() ){
// Here we output only on Cart page, as debug tool */
var_dump( $_SESSION['wp_last_cat'] );
}
}
. Затем вы замените код действия:
$shop_page_url = "get_permalink( wc_get_page_id( 'shop' ) )";
Должно стать:
if( isset( $_SESSION['wp_last_cat'] ) ){
$shop_page_url = get_term_link( $_SESSION['wp_last_cat'], 'product_cat' );
} else {
$shop_page_url = get_permalink( wc_get_page_id( 'shop' ) );
}
Во-вторых, чтобы получить последний элемент, добавленный в корзину, и использовать этот элемент для извлечения его URL-адреса категории.