web-dev-qa-db-fra.com

Comment utiliser les images en vedette sur index.php?

Dans "Paramètres de lecture", j'ai choisi le menu déroulant des pages statiques d'une page que j'ai créée comme page de publication.

J'ai mis les fichiers html, php et css de mon page.php dans index.php pour le styler. Je ne parviens pas à obtenir l'image sélectionnée. Le php que j'utilise pour l'obtenir sur page.php ne fonctionne pas. Il ne rend aucun html. De plus, <?php the_title(); ?> affiche le titre du dernier article de blog, et non le titre de la page que j'ai basculée.

C’est ainsi que je génère l’image présentée sur page.php

            <div class="single-image-anchor">
                <?php if (has_post_thumbnail( $post->ID ) ): ?>
                <?php $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'single-post-thumbnail' ); ?>
                <div class="single-image" style="background-image: url('<?php echo $image[0]; ?>')">
                <?php endif; ?>
            </div>

Je suis assez nouveau sur Wordpress alors merci d'avance.

1
RLM

Ce n'est pas facile à faire, car une fois que vous avez défini une page spécifique comme une agrégation de messages (une page de messages), wordpress "oublie" les informations initiales obtenues de la page elle-même et se comporte comme s'il s'agissait d'une maison normale. page d'un blog. Cela signifie que toutes les variables globales utilisées dans la boucle seront non ne seront pas réactualisées et n’indiqueront pas la page elle-même. Par conséquent, une API telle que the_title qui repose sur les informations globales ne renverra pas les mêmes valeurs que si elle était une page normale.

Pour résoudre ce problème, vous devez créer un modèle de page spécifique à utiliser avec cette page. Dans celui-ci, utilisez get_option( 'page_for_posts' ) comme paramètre post id utilisé pour tous les appels d'API que vous passez. Ainsi, au lieu de has_post_thumbnail( $post->ID ), vous aurez has_post_thumbnail( get_option( 'page_for_posts' ) ).

2
Mark Kaplun
             <div class="page-section clear">
                <div class="single-image-anchor">
                <?php if (get_option( 'page_for_posts' ) ): ?>
                <?php $image = wp_get_attachment_image_src( get_post_thumbnail_id( get_option( 'page_for_posts' )), 'single-post-thumbnail' ); ?>
                <div class="single-image" style="background-image: url('<?php echo $image[0]; ?>')">
                <?php endif; ?>
                </div>
            </div>
        <h1 class='title'><?php if(get_option( 'page_for_posts' ) ) echo get_the_title( get_option( 'page_for_posts' ) ); ?> </h2>
        <h1><?php _e( 'Latest Posts', 'html5blank' ); ?></h1> 
0
RLM

Un exemple est Twenty Fifteen qui utilise une balise de modèle dans les fichiers content.php comme ceci:

twentyfifteen_post_thumbnail();

Et puis la fonction pour la balise template dans inc/template-tags.php:

if ( ! function_exists( 'twentyfifteen_post_thumbnail' ) ) :
/**
 * Display an optional post thumbnail.
 *
 * Wraps the post thumbnail in an anchor element on index views, or a div
 * element when on single views.
 *
 * @since Twenty Fifteen 1.0
 */
function twentyfifteen_post_thumbnail() {
    if ( post_password_required() || is_attachment() || ! has_post_thumbnail() ) {
        return;
    }

    if ( is_singular() ) :
    ?>

    <div class="post-thumbnail">
        <?php the_post_thumbnail(); ?>
    </div><!-- .post-thumbnail -->

    <?php else : ?>

    <a class="post-thumbnail" href="<?php the_permalink(); ?>" aria-hidden="true">
        <?php
            the_post_thumbnail( 'post-thumbnail', array( 'alt' => get_the_title() ) );
        ?>
    </a>

    <?php endif; // End is_singular()
}
endif;

Je ne suis pas sûr de comprendre votre question de titre, mais vous pouvez jeter un coup d'œil dans le fichier archive.php et vous verrez ce code afficher le titre de la page d'archive:

<header class="page-header">
        <?php
            the_archive_title( '<h1 class="page-title">', '</h1>' );
            the_archive_description( '<div class="taxonomy-description">', '</div>' );
        ?>
    </header><!-- .page-header -->
0
Brad Dalton