web-dev-qa-db-fra.com

Résultats de recherche Wordpress pour plusieurs types de publication

Je souhaite afficher posts et attachments dans les résultats de la recherche. Fondamentalement, j'ai besoin de quelque chose qui dit if le message a une vignette, montrez-le. else affiche l'image de la pièce jointe (car ils ne possèdent pas de vignettes et sont extraits directement de la bibliothèque multimédia).

C'est ce que j'ai essayé sursearch.php, mais cela n'a pas fonctionné:

<?php if ( have_posts() ) : ?>
    <?php while ( have_posts() ) : the_post(); ?>

        <?php
            echo '<a class="search-item">';
            if( has_post_thumbnail() ) { 
                $image_src = the_post_thumbnail( 'custom-size', array( 'class' => "img-style" ) );
            }
            else {
                $image_src = wp_get_attachment_image_src( 'custom-size', array( 'class' => "img-style" ) );
                echo '</a>';
            }
        ?>

    <?php endwhile; ?>
<?php endif; ?>
1
BlueHelmet

La fonction wp_get_attachment_image_src() s'attend à ce que vous transmettiez également une sorte d'ID de pièce jointe. Elle ne récupère pas l'image HTML dont nous avons besoin. Nous devrions plutôt utiliser wp_get_attachment_image() .

SI une publication a une miniature de publication, saisissez-la.
SINON SI le message a des images jointes, prenez la première.
ELSE peut-être afficher un espace réservé? J'ai défini le cas else en haut de la boucle par défaut.

if( have_posts() ) {
    while( have_posts() ) {
        the_post();
        $image_html = ''; // assign placeholder url here?

        if( has_post_thumbnail() ) {
            $image_html = get_the_post_thumbnail( $post->ID, 'custom-size', array( 'class' => 'img-style' ) );
        } else { // We don't have a thumbnail - grab attachments
            $media = get_posts( array(
                'post_type'         => 'attachment',
                'posts_per_page'    => 1,
                'post_status'       => 'any',
                'post_parent'       => $post->ID
                'post_mime_type'    => array( 'image/jpeg', 'image/gif', 'image/png', 'image/bmp', 'image/tiff', 'image/x-icon' );
            ) );

            if( ! empty( $media ) ) {
                $image_html = wp_get_attachment_image( $media[0]->ID, 'cusotm-size', false, array( 'class' => 'img-style' ) );
            }
        }

        if( ! empty( $image_html ) ) {
            echo '<a href="'. get_permalink() . '">' . $image_html . '</a>';
        }
    }
}

Remarque, je n'ai pas testé ce qui précède, alors n'hésitez pas à l'affiner.

1
Howdy_McGee