web-dev-qa-db-fra.com

Comment interrogez-vous des messages sans rien en commun?

Nous pouvons obtenir plusieurs publications manuellement dans une page, mais celle-ci est générée dans un modèle, APRÈS que la requête par défaut ait renvoyé autre chose (page/publication, etc.).

Comment interroger plusieurs publications dans une requête publique, qui ne partagent aucune taxonomie ou quoi que ce soit d'autre?

par exemple. par ID:

http://example.com/?p=23,18,2,199,6,8

Je travaille déjà en analysant une variable dans un modèle page-name.php, mais une fois que le modèle est obtenu, il est trop tard pour le générer, par exemple. canoniques.

J'imagine que ce serait quelque chose de similaire à une recherche, sauf que la recherche est une relation de 1 à plusieurs posts et que cela nécessite une requête multiple en message unique (chaque).

Merci.

1
sergio

Peut-être recherchez-vous le paramètre post__in dans WP_Query.

$query = new WP_Query(array(
    'post__in' => array(23,18,2,199,6,8)
);

Et alors:

while ( $query->have_posts() ) {
    $query->the_post();
    /* post loop */
}

Jetez un coup d'œil à la documentation . = D

Pour les requêtes publiques:

post__in n'est pas interrogeable par défaut, vous pouvez donc simplement valider et copier $_GET['post__in'] sur le point d'ancrage de l'action parse_query, et laisser la chose se produire.

add_action('parse_query', 'wpse59828_parse_query');
function wpse59828_parse_query($query) {
    if (empty($_GET['post__in']))
        return $query;

    $posts = explode(',', $_GET['post__in']);
    $post__in = array();
    foreach ($posts as $p) {
        $post__in[] = intval($p);
    }

    $query->query_vars['post__in'] = $post__in;
    return $query;
}

Ensuite, vous accéderiez simplement à ceci:

http://mywebsite.com/?post__in=23,18,2,199,6,8

Veuillez noter que, dans ce cas, vous ne pourrez pas définir l'ordre de publication dans les versions de WordPress antérieures à 3.5 ( # 13729 ). Utilisez ce plugin si vous en avez besoin.

5
vmassuchetto
$tax_query = array (
    array (
        'taxonomy' => 'product_cat',
        'field' => 'slug',
        'terms' => $cat_name
        )
    );

$args = array( 'tax_query' => $tax_query, 'numberposts' => -1);
$lastposts = get_posts( $args );
0
robin