Setează imagine reprezentativă pentru șabloanele de arhivă

21 sept. 2012, 02:55:23
Vizualizări: 13.6K
Voturi: 7

Doresc să setez o imagine reprezentativă pentru șabloanele de arhivă ale temei mele. Din câte știu, nu există o modalitate de a face acest lucru în Adminul WordPress (ca în cazul Paginilor sau Articolelor).

Mă gândeam să scriu o funcție care să filtreze prin imaginile reprezentative încărcate și să potrivească șablonul cu numele fișierului. S-ar putea să fie puțin complex.

Știu de asemenea că există opțiuni pentru temă. Dar acest lucru pare a fi prea mult de gestionat.

Cum ați recomanda să faceți acest lucru pentru a facilita administrarea Imaginilor Reprezentative (Temă -> Antet) și ușurința în întreținere...

3
Comentarii

Doar pentru a clarifica: încerci să asociezi o imagine cu un șablon/ pagină de rezultate archive.php?

Ben HartLenn Ben HartLenn
21 sept. 2012 03:21:21

Da, pe scurt încerc să asociez imagini reprezentative cu șabloanele de arhivă.

Jason McCreary Jason McCreary
21 sept. 2012 05:47:24

Nu prea înțeleg. Vrei să setezi o imagine de antet pentru șablonul de arhivă? Dacă da, ar fi la fel de simplu ca if( is_archive() ) {..imaginea ta..}. Dacă vrei să o schimbi din backend, atunci într-adevăr trebuie să creezi o pagină de opțiuni pentru asta. (Poate există plugin-uri care fac asta, nu știu)

xsonic xsonic
21 sept. 2012 15:36:24
Toate răspunsurile la întrebare 6
0

Există multe tipuri de arhive în WordPress. Arhive de etichete, arhive după dată, arhive de categorii, arhive de termeni, arhive de autori. La ce tip de arhivă te referi?

Poți începe prin a încerca pluginul Taxonomy Images http://wordpress.org/extend/plugins/taxonomy-images/

18 oct. 2012 03:40:50
0

Acest lucru este vechi, dar este primul rezultat care apare în Google pe această temă.

Modul în care am rezolvat această problemă a fost să creez o pagină nouă. Nu îi dați același nume ca paginii de arhivă (WordPress nu apreciază paginile cu același nume ca pagina de arhivă, acest lucru cauzează probleme), o puteți numi oricum altfel. Setați imaginea reprezentativă și apoi apelați-o în șablonul de arhivă folosind acest cod:

$post_id = 8; 
$queried_post = get_post($post_id);
$src = wp_get_attachment_image_src(get_post_thumbnail_id($queried_post->ID), '') ;
$thumb_id = get_post_thumbnail_id($post_id);
?>
<img src="<?php echo $src[0]; ?>" class="img-responsive" />

Pentru a explica:

$post_id = 8;

este numărul ID al paginii tale noi.

$src = wp_get_attachment_image_src(get_post_thumbnail_id($queried_post->ID), '') ; 

găsește imaginea reprezentativă atașată acestei pagini

<img src="<?php echo $src[0]; ?>" class="img-responsive" /> 

afișează imaginea reprezentativă din pagina ta nouă.

4 oct. 2016 11:47:06
0

poți face asta prin CSS definind o regiune pentru imaginea de antet în archive.php și setând o imagine de fundal în style.css

sau poți folosi plugin-ul Dynamic Headers http://wordpress.org/extend/plugins/dynamic-headers/ (funcționează excelent chiar dacă nu a fost actualizat din 2010)

15 oct. 2012 22:09:15
0

Vin destul de târziu la această discuție, dar cred că acest plugin răspunde la întrebarea inițială: http://wordpress.org/plugins/categories-images/

Permite unui administrator să selecteze o 'imagine reprezentativă' pentru o anumită categorie / etichetă / taxonomie în panoul de editare al taxonomiei. Apoi, poate fi utilizată în archive.php al unui temă (de exemplu) prin afișarea z_taxonomy_image_url();.

Dacă preferi să creezi propria soluție, poți verifica codul din acel plugin ca punct de plecare.

7 mar. 2014 17:08:46
0

Cred că ar trebui să alegi metoda manuală, cam așa:

  1. intră pe pagina de "EDITARE" a fiecărei categorii, iar în descriere, pune astfel:
    [image url="https://upload.wikimedia.org/wikipedia/commons/0/0c/Bunker_in_Albanian_Alps.jpg"]
  1. obține imaginea pentru categorie:
    if (is_archive())   {
        if (!empty($GLOBALS['wp_query']->queried_object->description) )  { 
            $cat_description =$GLOBALS['wp_query']->queried_object->description); 
                //notă: din alte pagini, poți obține descrierea categoriei cu:  get_term('1533' , 'category')->description;  
            preg_match('/url\=\"(.*?)\"/si', $cat_description, $new);
            if(!empty($new[1])) {
                $found_image= $new[1];
            }
        }
    }

acum, poți folosi acea imagine oriunde, în head sau în pagină...

4 oct. 2016 12:12:15
0

YOAST! Premium face asta din cutie.

Totuși, eu folosesc ACF, unde pot crea o pagină de opțiuni, unde am adăugat un câmp repeater unde pot seta o imagine reprezentativă pentru fiecare tip de postare.

Apoi, cu funcția de mai jos adăugată în functions.php, apelez meta tag-urile necesare pe arhivele tipurilor de postări pentru care am definit o imagine reprezentativă.

function custom_featured_archive_image() {
    $o = get_field("featured_images", "option");
    if (is_array($o)) {
        foreach($o as $option) {
            if (is_post_type_archive($option["post_type"])) {
                $image_id = $option["image"];
                $image_url = wp_get_attachment_image_src($image_id, "original");
                $mime_type = get_post_mime_type($image_id);
                
                echo '
                    <meta property="og:image" content="'.$image_url[0].'">
                    <meta property="og:image:width" content="'.$image_url[1].'">
                    <meta property="og:image:height" content="'.$image_url[2].'">
                    <meta property="og:image:type" content="'.$mime_type.'">
                    <meta name="twitter:image" content="'.$image_url[0].'">
                ';

            }
        }
    }
}
add_action('wp_head', 'custom_featured_archive_image', 0);
1 sept. 2022 21:09:55