Requête pour un type de publication personnalisé? [fermé]

12

J'ai installé le plug-in d'interface utilisateur personnalisée de type publication . Après l'activation de ce plugin, j'ai créé un type de message personnalisé appelé portfolio . Maintenant, je veux utiliser ceci sur la page portfolio du front-end. Comment récupérer toutes les publications de type personnalisé portfolio ?

    
posée shalu 06.01.2011 - 11:14

3 réponses

19
query_posts( array( 'post_type' => array('post', 'portfolio') ) );

qui affiche les publications normales et les publications à l'intérieur de portfolio type

ou

query_posts('post_type=portfolio');

pour seulement portfolio .

Utilisation normale dans une requête WP - lisez le Codex: enlace et enlace

<?php 
    query_posts(array( 
        'post_type' => 'portfolio',
        'showposts' => 10 
    ) );  
?>
<?php while (have_posts()) : the_post(); ?>
        <h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>
        <p><?php echo get_the_excerpt(); ?></p>
<?php endwhile;?>
    
réponse donnée Martin-Al 06.01.2011 - 11:33
13

La réponse tardive, car la réponse principale utilise query_posts() , ce qui devrait ne jamais être fait.

Utiliser un filtre

Utilisez le filtre pre_get_posts et définissez simplement le type de message portfolio pour la requête principale. Utilisez Balises conditionnelles pour déterminer où vous souhaitez que ce filtre soit appliqué.

Exemple rapide

<?php
defined( 'ABSPATH' ) OR exit;
/* Plugin Name: (#6417) "Portfolio" post type in query */

add_filter( 'pre_get_posts', 'wpse_6417_portfolio_posts' );
function wpse_6417_portfolio_posts( $query )
{
    if (
        ! $query->is_main_query()
        // Here we can check for all Conditional Tags
        OR ! $query->is_archive() // For e.g.: Every archive will feature both post types
    )
        return $query;

    $query->set( 'post_type', array( 'post', 'portfolio' ) );

    return $query;
}

Clause de non-responsabilité

Le code ci-dessus est un plugin, mais vous pouvez simplement vous en servir dans le fichier functions.php de votre thème (ce qui n'est pas recommandé).

    
réponse donnée kaiser 27.05.2013 - 15:42
4

Ajoutez ce code à votre fichier de fonctions thème pour enfants (recommandé) pour ajouter vos pages CPT uniques à votre boucle principale

.
add_action( 'pre_get_posts', 'add_custom_post_types_to_loop' );

function add_custom_post_types_to_loop( $query ) {

if ( is_home() && $query->is_main_query() )

$query->set( 'post_type', array( 'post', 'portfolio' ) );

return $query;

}

Source enlace

Ou créer une personnalisation modèle de page archive-portfolio.php qui n’affichera que vos pages CPT. Cela ne doit être fait que si vous n'avez pas ajouté de page d'archive à l'aide des paramètres du plug-in.

Exemple: 'has_archive' = > vrai,

Vous pouvez également contrôler le nombre de pages affichées et leur ordre d'affichage sur la page d'archive à l'aide de ce code:

add_action( 'pre_get_posts', 'cpt_items' );

function cpt_items( $query ) {

if( $query->is_main_query() && !is_admin() && is_post_type_archive( 'portfolio' ) ) {

$query->set( 'posts_per_page', '8' );

$query->set( 'order', 'ASC' );

    }

}
    
réponse donnée Brad Dalton 11.12.2013 - 01:02

Lire d'autres questions sur les étiquettes