web-dev-qa-db-fra.com

Filtres de taxonomie de type de message personnalisé

Je me bats vraiment pour reconstituer cette fonctionnalité et j'espère que quelqu'un pourra m'aider ou me fournir des extraits pour m'y rendre.

Donc, je crée une section sur un site Web où des histoires sont publiées, j'ai créé un type d'article personnalisé pour la section histoires et des taxonomies pour les types d'histoire (catégorie) et les balises d'histoires (les balises). Tout fonctionne bien et affiche correctement à cet égard.

Voici les détails de la configuration:

  • Type de message personnalisé: histoires
  • Taxonomie personnalisée (la catégorie): type d'histoire
  • Taxonomie personnalisée (les balises): story-tags

Je dois pouvoir filtrer les publications sur une page de destination en fonction de 4x options:

  • Taxonomie du type d’histoire (chapitre ou extrait, vedette, flash-fiction, micro-fiction, poème, nouvelle)
  • Histoire Tags Taxonomie (Debut, Funny, True Story)
  • par mois (janvier, février, mars, etc.)
  • Trier par (le plus lu, le plus récent)

Donc un exemple: S'il vous plaît, montrez-moi toutes les histoires de fiction marquées de manière amusante en juin et triez-les par plus de lecteurs.

Je ne suis pas pointilleux où les résultats sont affichés tant qu'ils sont exacts.

La page de résultats serait alors intitulée "Vos résultats"

Merci pour votre temps jusqu'ici ...

1
Roy Barber

Je voudrais jeter un oeil à cette page du Codex:

http://codex.wordpress.org/Class_Reference/WP_Query

Je pense que vous devez redéfinir query_posts () pour votre page d'arrivée et contrôler différentes requêtes à l'aide d'instructions if (), en fonction des zones d'un formulaire (devinez que vous utilisez un formulaire?) A été renseigné. Par exemple:

// Carry pagination through
$args = array(
  'paged' => ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1
);

// Check if 'story-type' was searched for
if ( !empty( $_POST['story_type'] ) )
  $args['story-type'] = $_POST['story_type'];

// Check if 'story-tags' was searched for
if ( !empty( $_POST['story_tags'] ) )
  $args['story-tags'] = $_POST['story_tags'];

// Check if a year was selected
if ( !empty( $_POST['date_year'] ) )
  $args['year'] = $_POST['date_year'];

// Check if a month was selected
if ( !empty( $_POST['date_month'] ) )
  $args['month'] = $_POST['date_month'];

// Override $wp_query
query_posts( $args );

Le tri se fait de la même manière - consultez "order" et "orderby".

1
Mike F

Vous voudrez probablement ignorer cette réponse. J'ai lu la question complètement faux.

Vous aurez besoin de la requête tax_query dans un WP_Query. Vous trouverez des exemples dans la section Paramètres de taxonomie sur la documentation WP_Query sur le Codex.

Un exemple (tiré du Codex) de recherche de plusieurs taxonomies:

$args = array(
'post_type' => 'post',
'tax_query' => array(
    'relation' => 'AND',
    array(
        'taxonomy' => 'movie_genre',
        'field' => 'slug',
        'terms' => array( 'action', 'comedy' )
    ),
    array(
        'taxonomy' => 'actor',
        'field' => 'id',
        'terms' => array( 103, 115, 206 ),
        'operator' => 'NOT IN'
    )
)
); 
$query = new WP_Query( $args );
0
Craig Burgess