Support » Allgemeine Fragen » Copyrighthinweis für Kategorienbilder aus der Mediathek anzeigen

  • Gelöst radarin

    (@radarin)


    Hallo zusammen.

    Das Theme ‚Lovecraft‘ zeigt im Header jeweils das Bild der Kategorie oder des Beitrags (in der Einzelanzeige) an. Da ich für Beiträge und Kategorien Bilder verwende, für welche ich die Quelle angeben sollte, verwende ich dafür in der Mediathek das Feld ‚Beschriftung‘. Mit

    <?php if ( $caption = get_post( get_post_thumbnail_id() )->post_excerpt ) : ?>
       <p class="caption-head"><?php echo $caption; ?></p>
    <?php endif; ?>

    gebe ich den Text an der entsprechenden Stelle aus. Das funktioniert für Beitragsbilder. In der Einzelansicht als auch in der Listenansicht. Wie aber hole ich den Text aus der DB, wenn es sich um das Kategorienbild handelt? Im Codex bin ich nicht fündig geworden, und den Code ‚logisch‘ anzupassen hat nicht die korrekte Lösung ergeben.

    Gruß René

    • Dieses Thema wurde geändert vor 4 Jahren, 2 Monaten von radarin.
    • Dieses Thema wurde geändert vor 4 Jahren, 2 Monaten von radarin.
Ansicht von 15 Antworten - 1 bis 15 (von insgesamt 16)
  • Thread-Starter radarin

    (@radarin)

    Folgendermassen habe ich den Code in der header.php:

    <?php if ( is_singular() && has_post_thumbnail() ) :
    			$thumb = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'post-image-cover' );
    			$post_image = $thumb['0']; 
    			?>
    		
    			<div class="header-image bg-image" style="background-image: url(<?php echo esc_url( $post_image ); ?>)">
    				
    				<?php the_post_thumbnail( 'post-image' ); ?>
    				
    			</div>
    			
    			<!-- Bildunterschrift Headerbild wenn eine Seite oder ein einzelner Beitrag angezeigt wird -->
    			<div class="caption-category">Seite / Beitrag:
    			
    			
    			<!-- Bildunterschrift Headerbild in der Einzelanzeige -->
    		     <?php if ( $caption = get_post( get_post_thumbnail_id() )->post_excerpt ) : ?>
                       <?php echo $caption; ?>
                 <?php endif; ?>
    			
    			
    			</div>
    		
    		<?php else : 
    
    			$header_image = get_header_image() ? get_header_image() : get_template_directory_uri() . '/images/header.jpg';
    			
    			?>
    		
    			<div class="header-image bg-image" style="background-image: url( <?php echo $header_image ?> );">
    				
    				<img src="<?php echo $header_image; ?>" />
    				
    			</div>
    			
    			<!-- Bildunterschrift Headerbild wenn eine Kategorie angezeigt wird -->
    			<!-- Fehler: Statt der Bildunterschrift für die Kategorie wird diejenige der ersten Beitrages ausgegeben -->
    			<div class="caption-category">Kategorie:
    			
    			<?php if ( $caption = get_post( get_post_thumbnail_id() )->post_excerpt ) : ?>
                       <?php echo $caption; ?>
                <?php endif; ?>
    			
    			
    			</div>
    			
    		
    		<?php endif; ?>

    Bei der Anzeige von Seiten und einzelnen Beiträgen passt der Text welcher aus dem Feld ‚Beschriftung‘ übernommen wird, da hier jeweils auch nur ein einziges Beitragsbild geladen wird.

    Bei der Anzeige einer Kategorie wird das Bild der Kategorie geladen, sowie die Beitragsbilder der enthaltenen Beiträge. Da wird statt des Textes für das Kategoriebild der Text des ersten angezeigten Beitrages angezeigt.

    • Diese Antwort wurde geändert vor 4 Jahren, 2 Monaten von radarin.

    Hallo,
    grundsätzlich ist mir klar, was du meinst. Aber es wäre einfacher, wenn du noch die URL oben einträgst, dann können wir uns das auch ansehen und dir sicher besser helfen.
    get_post( get_post_thumbnail_id() )->post_excerpt ) – die Codierung bezieht sich ja auch eindeutig auf einen Beitrag und nicht auf eine Kategorie. Man müsste also etwas in der Art finden:
    get_category( get_category_thumbnail_id() )->category_excerpt )
    Aber wie gesagt: nur theoretisch. Eine konkrete Lösung konnte ich mangels Zeit gerade nicht finden.
    Viele Grüße
    Hans-Gerd

    Thread-Starter radarin

    (@radarin)

    Hallo Hans-Gerd, in der Richtung hab ich auch schon rum gewerklet. Leider hat mir weder der Codex, noch Google weiter geholfen. Und wenn ich andere Themes teste scheint das bist jetzt nirgends ein Thema zu sein, jedenfalls nicht bei den ‚offiziellen‘ vom Entwicklerteam.

    Mit dem spontan vorgeschlagenen Code stoppt die Verarbeitung der Seite. Deshalb bin ich damit auch selber schon nicht weiter gekommen.

    Die direkte URL zu einer Kategorie lautet blog.darin.ch/category/spotter. Unter dem grossen Bild ganz oben müsste ‚Plainspotter an der Air 19 in der Steyermark, Foto: René A. Da Rin‚ stehen. Jetzt wird da der Text vom zuerst gelisteten Beitrag angezeigt.

    • Diese Antwort wurde geändert vor 4 Jahren, 2 Monaten von radarin.
    • Diese Antwort wurde geändert vor 4 Jahren, 2 Monaten von radarin.

    Ich hab mal rasch das Theme installiert und schaue mir die Kategorie „Allgemein“ an. Dort wird das Header-Bild angezeigt, dass ich (standardmäßig) im Customizer in der Einstellung „Header-Bild“ vorgegeben habe. Wie bekommst du denn überhaupt hin, dass für die Kategorien Beitragsbilder angezeigt werden – das Theme scheint das nicht herzugeben?

    Thread-Starter radarin

    (@radarin)

    Beiträge > Kategorien, da kann ich für jede Kategorie ein individuelles Bild definieren. Und soweit ich das überschaue hab ich dafür kein Plugin eingesetzt. Ich überprüfe das mal auf einer Testinstallation.

    Beiträge > Kategorien, da kann ich für jede Kategorie ein individuelles Bild definieren.

    Nicht ohne weitere Plugins. Deshalb meine Rückfrage.

    Thread-Starter radarin

    (@radarin)

    Stimmt, bei anderen Seiten hab ich das nicht drin. Spontan weiss ich jetzt auch nicht welches Plugin dafür verantwortlich ist. Ich mach mich mal auf die Suche, mögliche Kandidaten mal testweise raus nehmen… Ich weiss nicht mehr ob ich diese Funktionalität bewusst gesucht habe oder ob es Zufall ist.

    Thread-Starter radarin

    (@radarin)

    ok, das war offensichtlich eine bewusste Entscheidung, verantwortlich dafür ist das Plugin ‚Unique headers‘, wordpress.org/plugins/unique-headers/.

    Wie auch immer …

    <?php if ( is_singular() && has_post_thumbnail() ) : …

    … wird nicht in Kategorie-Archiven auftauchen.

    Thread-Starter radarin

    (@radarin)

    Meine Vermutung liegt auch darin, dass das Problem bereits vor dem eigentlichen Abfragen des Feldes ‚Beschriftung‘ zu suchen ist.

    Ja, nur wenn du unvollständige Angaben machst, lässt sich das eben schwer nachvollziehen.

    Ich würde bei dem Plugin ansetzen, schauen wie das Fetured Image hinzugefügt wird und versuchen, diese Daten abzurufen.

    Das Featured Image wird mit einem Filter eingefügt, der die Customizer-Einstellung für das Header-Bild überschreibt. Lesenswerter Beitrag dazu vom David: https://websupporter.net/wahle-das-headerbild-abhangig-von-der-seite/

    Nur zur Demo:

    // Ausgabe im Footer – du wirst das statt 
    // dessen im Header-Template ausgeben wollen.
    add_action( 'wp_footer', 'my_tax_meta' );
    
    function my_tax_meta() {
            // welche Kategorie sehen wir?
    	$category = get_queried_object();
    	$cat_id   = $category->term_id;
    	
            // wie ist das Taxonomy-Meta mit dem Schlüssel 
            // "taxonomy-header-image" (vom Plugin vorgegeben)
            // Taxonomy-Meta == ID des Beitragsbilds für die Kategorie!
            $meta     = get_term_meta( $cat_id, 'taxonomy-header-image' );
    
            // DB-Inhalt zum Bild mit dieser ID
    	$attachment = get_post( $meta[0] );
    	$caption    = $attachment->post_excerpt;
    	
            // Ausgabe des Texts	
    	echo $caption;
    }

    Hier fehlen natürlich if-Statements, die abfragen, ob eine Kategorie angezeigt wird, ob ein Beitragsbild vorhanden ist und ob das Beitragsbild eine Beschriftug hat. Außerdem wirst du dass statt im Footer irgendwo in deinem header.php-Template unterbringen wollen.

    Thread-Starter radarin

    (@radarin)

    Dass ich dafür ein Plugin im Einsatz habe, war mir bei der Fragestellung nicht präsent. Bin davon ausgegangen, dass es sich um eine Standardfunktion handelt. Aber dann ist klar, dass die Frage so nicht beantwortet werden kann.

    Vielen Dank für die Vorlage, Diese funktioniert recht gut. Das Prüfen ob es eine Kategorie ist, habe ich hin gekriegt. Das Abfragen ob ein Bild und auch Text vorhanden ist, scheint mir auf den ersten Blick nicht nötig zu sein. Ist da nichts, wird einfach auch nichts ausgegeben. Produziert mir auch nirgends einen Fehler und hat auf die weitere Verarbeitung und Darstellung der Seite keinen Einfluss.

    • Diese Antwort wurde geändert vor 4 Jahren, 2 Monaten von radarin.

    Schön.

    Und was machen wir hier, wenn ein Problem gelöst ist? Na? 😉

    Thread-Starter radarin

    (@radarin)

    Hier noch die komplette Lösung. Der Code in der header.php:

    <!-- Bildunterschrift Headerbild wenn eine Kategorie angezeigt wird -->
    <?php if ( is_category() && has_post_thumbnail() ) { $thumb = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'post-image-cover' );
    $post_image = $thumb['0']; }
    ?>
    			
    <!-- Bildunterschrift für die Kategorie anzeigen -->
    <div class="caption-category">
      <?php echo uniqueheaders_tax_meta(); ?>
    </div>

    Und in der functions.php:

    // Diese Funktion ist abhängig vom Plugin 'Unique Headers'
    // https://de.wordpress.org/plugins/unique-headers/
    add_action( 'head_image_description', 'uniqueheaders_tax_meta' );
    
    function uniqueheaders_tax_meta() {
      // handelt es sich um eine Kategorie?
      if (is_category()){       
      // welche Kategorie sehen wir?
    	 $category = get_queried_object();
    	 $cat_id   = $category->term_id;
    	
            // wie ist das Taxonomy-Meta mit dem Schlüssel 
            // "taxonomy-header-image" (vom Plugin vorgegeben)
            // Taxonomy-Meta == ID des Beitragsbilds für die Kategorie!
            $meta     = get_term_meta( $cat_id, 'taxonomy-header-image' );
            
            // DB-Inhalt zum Bild mit dieser ID
    	    $attachment = get_post( $meta[0] );
    	    $caption = $attachment->post_excerpt;
       
      }	 // end is_category
         // Ausgabe des Texts	
    	 return $caption;
    }
Ansicht von 15 Antworten - 1 bis 15 (von insgesamt 16)
  • Das Thema „Copyrighthinweis für Kategorienbilder aus der Mediathek anzeigen“ ist für neue Antworten geschlossen.