web-dev-qa-db-fra.com

WP_Query Pages d'exclusion avec Order is

J'ai un WP_Query personnalisé avec les arguments suivants

$args = array(
    'post_type' => 'page',
    'post_status' => 'publish',
    'meta_key' => 'tile-home',
    'meta_value' => 1,
    'orderby' => 'menu_order',
    'order' => 'ASC'
);

Cela sélectionne toutes les pages publiées dont le champ personnalisé tile-home est réglé sur 1 et les commande par l'attribut de page Order .

Comment puis-je éditer les arguments dans l'ordre (s'il vous plaît, pardonnez-moi le jeu de mots) pour exclure toutes les pages pour lesquelles menu_order est défini sur 0?

1
MKay

Vous pouvez définir une variable where comme ceci si votre table est wp_posts

function _20170112( $where ){    

  $where = $where . ' AND wp_posts.menu_order > 0 ';             
  return $where;
}

Et mettez en sandwich votre requête avec ceci:

$args = array(      
    'post_type' => 'page',
    'post_status' => 'publish',
    'meta_key' => 'tile-home',
    'meta_value' => 1,
    'orderby' => 'menu_order',
    'order' => 'ASC'
);


add_filter( 'posts_where', '_20170112' );
$q = new WP_Query($args);
remove_filter( 'posts_where', '_20170112' );
2
prosti