web-dev-qa-db-fra.com

Boucle personnalisée pour un type de post personnalisé

J'utilise WP 4.0 et Headway comme thème. J'ai créé un type de message personnalisé appelé "propriété" et je cherche à créer la boucle en 2 colonnes. mais je ne sais pas quoi ajouter au code suivant pour y arriver. J'aimerais aussi ajouter une pagination.

J'ai aussi d'autres informations à placer dans la boucle. je travaille juste à le faire fonctionner correctement.

Voici le code qui fonctionne actuellement pour moi ... sans colonnes.

<?php $loop = new WP_Query( array( 'post_type' => 'property', 'posts_per_page' => -1, 'category' => 'current' ) ); ?>
<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
<div class="pindex">
    <div class="pimage">
        <a href="<?php the_permalink(); ?>"><?php if ( has_post_thumbnail() ) {the_post_thumbnail();} ?></a>
    </div>
    <div class="ptitle">
        <h2><?php echo get_the_title(); ?></h2>
    </div>
</div>
<?php endwhile; wp_reset_query(); ?>
6
user3331701

Il y a quelques problèmes dans votre requête.

  1. Il n'y a pas de paramètre nommé category. Vous pouvez utiliser ces suivants.

    cat (int) - use category id.
    category_name (string) - use category slug (NOT name).
    category__and (array) - use category id.
    category__in (array) - use category id.
    category__not_in (array) - use category id.
    
  2. Si vous avez besoin de paginer votre requête, vous ne devez pas utiliser posts_per_page' => -1. Cela écrasera la pagination et renverra tous les messages.

  3. Une dernière chose, vous recherchez une vignette de message au mauvais endroit. Vous devriez le vérifier avant le conteneur d'image.

J'ai donc modifié votre requête et voici comment elle sera. Je suppose que votre slug de catégorie est current comme vous l'avez utilisé dans votre requête.

<?php
    $loop = new WP_Query( array( 'post_type' => 'property', 'category_name' => 'current', 'ignore_sticky_posts' => 1, 'paged' => $paged ) );
    if ( $loop->have_posts() ) :
        while ( $loop->have_posts() ) : $loop->the_post(); ?>
            <div class="pindex">
                <?php if ( has_post_thumbnail() ) { ?>
                    <div class="pimage">
                        <a href="<?php the_permalink(); ?>"><?php the_post_thumbnail(); ?></a>
                    </div>
                <?php } ?>
                <div class="ptitle">
                    <h2><?php echo get_the_title(); ?></h2>
                </div>
            </div>
        <?php endwhile;
        if (  $loop->max_num_pages > 1 ) : ?>
            <div id="nav-below" class="navigation">
                <div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">&larr;</span> Previous', 'domain' ) ); ?></div>
                <div class="nav-next"><?php previous_posts_link( __( 'Next <span class="meta-nav">&rarr;</span>', 'domain' ) ); ?></div>
            </div>
        <?php endif;
    endif;
    wp_reset_postdata();
?>

Cela devrait renvoyer tous les messages de la catégorie current avec la pagination. Si vous devez recevoir des publications de plus d'une catégorie, vous pouvez utiliser le paramètre category__in au lieu de category_name.

'category__in' => array( 2, 6 )

Notez que category__in n'accepte que les identifiants de catégorie.

9
Robert hue