it-swarm.com.de

Wie verwende ich vorgestellte Bilder auf index.php?

Unter "Leseeinstellungen" habe ich das Dropdown-Menü für statische Seiten einer Seite ausgewählt, die ich als Postseite erstellt habe.

Ich habe das HTML, PHP und CSS aus meiner page.php in index.php eingefügt, um es zu stylen. Ich kann das abgebildete Bild nicht bekommen. Das PHP, mit dem ich es auf page.php bekomme, funktioniert nicht. Es wird kein HTML gerendert. Außerdem ruft <?php the_title(); ?> den Titel des letzten Blogposts auf, nicht den Seitentitel der Seite, auf die ich umgeschaltet habe.

So generiere ich das auf page.php gezeigte Bild

            <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>

Ich bin ziemlich neu in Wordpress, also danke im Voraus.

1
RLM

Dies ist nicht trivial, da WordPress die anfänglichen Informationen, die es von der Seite selbst erhält, "vergisst" und sich so verhält, als wäre es ein normales Zuhause, wenn Sie eine bestimmte Seite als Zusammenfassung von Posts (als Posts-Seite) festgelegt haben Seite eines Blogs. Dies bedeutet, dass alle in der Schleife verwendeten globalen Variablen nicht übersetzt werden und nicht die Seite selbst anzeigen. Daher geben APIs wie the_title, die auf den globalen Informationen beruhen, nicht die gleichen Werte zurück, die sie hätten, wenn sie vorhanden wären war eine normale Seite.

Um dies zu lösen, müssen Sie eine bestimmte Seitenvorlage erstellen, die für diese Seite verwendet wird. Verwenden Sie dabei get_option( 'page_for_posts' ) als Post-ID-Parameter für alle von Ihnen ausgeführten API-Aufrufe. Anstelle von has_post_thumbnail( $post->ID ) haben Sie 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

Ein Beispiel ist Twenty Fifteen, bei dem ein Template-Tag in den content.php-Dateien wie folgt verwendet wird:

twentyfifteen_post_thumbnail();

Und dann die Funktion für das Template-Tag in 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;

Ich bin mir nicht sicher, ob ich Ihre Titelfrage verstehe, aber Sie können einen Blick in die Datei archive.php werfen und den folgenden Code sehen, um den Titel der Archivseite anzuzeigen:

<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