Я пытаюсь создать новую вкладку в разделе «Моя учетная запись» WooCommerce. Новая вкладка предназначена для отображения заказов на товары для товаров в определенной категории. В WooCommerce я создал несколько продуктов и добавил их в категорию «Бронирование». Я бы хотел, чтобы новые заказы на продукты "Бронирования" появлялись только на новой вкладке. Все остальные заказы должны отображаться на обычной вкладке «Заказы».
Witin массив $ filters Я попробовал следующее, чтобы отфильтровать только продукты бронирования:
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'operator' => 'IN',
'terms' => array('bookings'),
),
)
Но это не приводит к отображению контента.
Это то, что у меня пока есть в functions.php:
//Register new endpoints to use inside My Account page
function my_account_new_endpoints() {
add_rewrite_endpoint( 'bookings', EP_ROOT | EP_PAGES );
}
add_action( 'init', 'my_account_new_endpoints' );
//Get new endpoint content
function bookings_endpoint_content() {
$filters = array(
'post_status' => 'any',
'post_type' => 'shop_order',
'posts_per_page' => 200,
'paged' => 1,
'orderby' => 'modified',
'order' => 'ASC'
);
$loop = new WP_Query($filters);
while ($loop->have_posts()) {
$loop->the_post();
$order = new WC_Order($loop->post->ID);
foreach ($order->get_items() as $key => $lineItem) {
echo '<br>' . 'Product Name : ' . $lineItem['name'] . '<br>';
echo 'Product ID : ' . $lineItem['product_id'] . '<br>';
echo 'subtotal : ' . $lineItem['subtotal'] . '<br>';
if ($lineItem['variation_id']) {
echo 'Product Type : Variable Product' . '<br>';
} else {
echo 'Product Type : Simple Product' . '<br>';
}
}
}
}
add_action( 'woocommerce_account_bookings_endpoint', 'bookings_endpoint_content' );
// Edit my account menu order
function my_account_menu_order() {
$menuOrder = array(
'orders' => __( 'Your Orders', 'woocommerce' ),
'bookings' => __( 'Bookings', 'woocommerce' ),
'downloads' => __( 'Download', 'woocommerce' ),
'edit-address' => __( 'Addresses', 'woocommerce' ),
'edit-account' => __( 'Account Details', 'woocommerce' ),
'customer-logout' => __( 'Logout', 'woocommerce' ),
'dashboard' => __( 'Dashboard', 'woocommerce' )
);
return $menuOrder;
}
add_filter ( 'woocommerce_account_menu_items', 'my_account_menu_order' );