web-dev-qa-db-fra.com

Existe-t-il un moyen de commander des publications et des types de publication personnalisés en un seul groupe?

J'ai essayé plusieurs plugins qui semblent prétendre faire cela (comme celui-ci ), mais ils ne font pas ou sont très pauvres dans leur implémentation et causer des problèmes (celui lié semble sélectionner au hasard.

J'ai un WP_Query dans mon index.php comme suit:

<?php
if ( get_query_var('paged') ) $paged = get_query_var('paged');  
if ( get_query_var('page') ) $paged = get_query_var('page');

$query = new WP_Query( array( 'post_type' => array('post','secondposttype'), 'paged' => $page ) );

if ( $query->have_posts() ) : ?>

En tant que telle, ma page d’accueil affiche des publications ordinaires et des publications du type de publication personnalisé "type de publication".

J'utilise également des scripts de nombre conditionnel afin de pouvoir personnaliser ce qui apparaît, etc.:

<?php if ($count == 1) : ?>

La solution que nous utilisons actuellement est le plugin Q2W3 Post Order, qui fonctionne très bien s’il n’ya qu’un un type de message. J'ai essayé d'ajouter automatiquement une valeur de taxonomie personnalisée à de nouvelles publications/publications de type publication personnalisée, interrogeant cette taxonomie personnalisée dans mon index.php, puis en utilisant Q2W3 Post Order pour commander des publications dans cette taxonomie, mais cela ne fonctionne tout simplement pas (en plus, cela se sent beaucoup plus hacky que cela ne devrait être).

Ma question est la suivante: existe-t-il un moyen de commander des publications et des types de publication personnalisés sous forme de grande liste? De telle sorte que, lorsque je les interroge comme ci-dessus, je puisse commander leur affichage? J'aurais du mal à croire que vouloir faire cela soit rare.

EDIT: Je vais donner un exemple de ce que je veux faire. Je souhaite afficher les publications et les publications du deuxième type de publication sur la page d'accueil via un WP_Query. Et je veux pouvoir contrôler cela pour que l'ordre puisse aller comme ceci:

  1. Poste 1 de type "poste"
  2. Poste 1 du type "secondposttype"
  3. Poste 2 de type "secondposttyle"
  4. Post 2 à partir de "post" post type
  5. Poste 3 du type "secondposttype"

Et puis, un autre jour, je souhaiterais peut-être que l'ordre soit:

  1. Poste 3 du type "secondposttype"
  2. Poste 1 de type "poste"
  3. Poste 2 de "poste" type de poste "
  4. Poste 1 du type "secondposttype"
  5. Post 2 de type "secondposttype" post

Il existe des plugins qui commandent un type de publication, afin que vous puissiez choisir la publication qui apparaît en premier, deuxième, troisième, quatrième, etc. Je souhaite simplement pouvoir grouper les publications et certains autres types de publication, de manière à ce qu'elles n'apparaissent pas dans une seule. stream (ce qui est possible via WP_Query) mais qu'ils peuvent être commandés dans n'importe quel ordre et que les posts et les posts du deuxième type de posts sont traités comme un seul et même pour les besoins de la commande.

1
Edmund Heaphy

En termes de requête, c'est assez simple à faire, mais vous devrez créer votre propre interface pour créer l'ordre des publications, ce qui devrait en fin de compte enregistrer les ID de publication dans un tableau dans l'ordre dans lequel vous souhaitez les afficher. :

$post_ids = array( 42, 13, 23, 99 );

Ensuite, il suffit d'obtenir une "page" de ces identifiants:

// current page number
$paged = 1;
// number of posts per page
$posts_per_page = 2;
// starting position
$offset = ( $paged - 1 ) * $posts_per_page;
// extract page of IDs
$ids_to_query = array_slice( $post_ids, $offset, $posts_per_page );

Puis passez ces identifiants à la requête via post__in, et orderby le tableau post__in:

$args = array(
    'post_type' => array( 'post','secondposttype' ),
    'post__in' => $ids_to_query
    'orderby' => 'post__in',
    'ignore_sticky_posts' => 1,
    'posts_per_page' => $posts_per_page
);
$ordered_posts = new WP_Query( $args );
2
Milo