2015-01-03 1 views
0

Ниже приведен мой стандартный запрос для страниц.Игнорировать страницы woocommerce из запроса

$type = 'page'; 
$args = array (
'post_type' => $type, 
'post_status' => 'publish', 
'paged' => $paged, 
'posts_per_page' => 50, 
'ignore_sticky_posts'=> 1, 
); 

Когда я перечисляю все страницы на одной странице, как я могу игнорировать WooCommerce созданы страницы, как мой счет, Корзина, магазин ...?

ответ

0

Во-первых получить WooCommerce страницы идентификаторов

if(class_exists('WooCommerce')){ 
    $woopages = array(get_option('woocommerce_shop_page_id'),get_option('woocommerce_cart_page_id'),get_option('woocommerce_checkout_page_id'),get_option('woocommerce_pay_page_id'),get_option('woocommerce_thanks_page_id'),get_option('woocommerce_myaccount_page_id'),get_option('woocommerce_edit_address_page_id'),get_option('woocommerce_view_order_page_id'),get_option('woocommerce_terms_page_id')); 
} 

После этого использование запроса, как этого

$args = array (
'post_type' => $type, 
'post_status' => 'publish', 
'paged' => $paged, 
'posts_per_page' => 50, 
'post__not_in' => $woopages, 
'ignore_sticky_posts'=> 1, 
); 

Вот и все!

1

Вы можете использовать wordpress wp_list_pages для отображения все страницы. wp_list_pages имеет exclude параметр.

Так что с помощью этого параметра , вы можете исключить все страницы WooCommerce.

<?php 
    global $woocommerce; 

    $cart_url = $woocommerce->cart->get_cart_url(); //To get Cart URL 
    $cart_id = url_to_postid($cart_url); //Convert that cart URL in to an ID 

    $checkout_url = $woocommerce->cart->get_checkout_url(); //To get Checkout URL 
    $checkout_id = url_to_postid($checkout_url); //Convert that Checkout URL in to an ID 

    $shop_page_id = woocommerce_get_page_id('shop'); //Get an ID of shop page 

    $myaccount_page_id = get_option('woocommerce_myaccount_page_id'); //Get an ID of My account page 

    wp_list_pages('exclude='.$shop_page_id.','.$myaccount_page_id.','.$cart_id.','.$checkout_id.''); //To list all the pages 
?> 

Так с помощью кода выше, вы можете напечатать все страницы и в то же время вы можете игнорировать WooCommerce страницы.

Сообщите мне, если у вас есть какие-либо сомнения.

+0

Извините, но я не перечисляю только названия страниц. Я перечисляю содержимое страницы в одной теме страницы. Вот мой ниже код $ main_query = new WP_Query ($ args); if (have_posts()): while ($ main_query-> has_posts()): $ main_query-> the_post(); global $ post; $ post_id = get_the_ID(); – trikutin

+0

Попробуйте включить 'post__not_in' в свои' $ args'? –

+0

Вы можете увидеть ['post__not_in'] (http://codex.wordpress.org/Class_Reference/WP_Query#Post_.26_Page_Parameters) и его использование. Создайте один массив идентификаторов из моего кода и исключите этот массив. –

Смежные вопросы