忽略来自查询的woocommerce页面

时间:2015-01-03 21:20:15

标签: woocommerce wordpress

我的页面标准查询如下。

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

当我在一个页面中列出所有页面时,如何忽略woocommerce创建的页面,例如“我的帐户”,“购物车”,“商店”......?

2 个答案:

答案 0 :(得分:1)

您可以使用wordpress wp_list_pages来显示所有页面wp_list_pagesexclude参数。

因此,借助参数,您可以排除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页面。

如果您有任何疑问,请告诉我。

答案 1 :(得分:0)

首先获取woocommerce页面ID

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,
);

这就是全部!