从查询中忽略 woocommerce 页面

Ignore woocommerce pages from query

我的页面标准查询如下。

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

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

您可以使用 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 页面。

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

首先获取 woocommerce 页面 ID's

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

就这些了!