我的页面标准查询如下。
$type = 'page';
$args = array (
'post_type' => $type,
'post_status' => 'publish',
'paged' => $paged,
'posts_per_page' => 50,
'ignore_sticky_posts'=> 1,
);
当我在一个页面中列出所有页面时,如何忽略woocommerce创建的页面,例如“我的帐户”,“购物车”,“商店”......?
答案 0 :(得分: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页面。
如果您有任何疑问,请告诉我。
答案 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,
);
这就是全部!