URL-ul Logo-ului Personalizat | Ajută-mă să afișez URL-ul logo-ului personalizat inserat în tema mea

22 ian. 2020, 19:10:02
Vizualizări: 19.8K
Voturi: 1

Încerc să folosesc componentele separate ale funcției the_custom_logo() pentru a crea propria mea afișare pentru logo.

Poate cineva să mă informeze cum pot accesa URL-ul și referința imaginii separat una de cealaltă?

Mulți oameni au întrebat cum să schimbe URL-ul, ceea ce nu este întrebarea la care am nevoie de răspuns. Doresc să pot manipula codul în acest fel (acesta este un exemplu de bază al planurilor mele, pentru a înțelege cele două componente pe care doresc să le pot extrage):

<div class="site-branding">
    <a href="<?php get_custom_logo_url(); ?>" class="box-link">
        <img src="<?php get_custom_logo_src(); ?>" class="site-logo" alt="Logo">
    </a>
</div>

Folosesc o temă blank, cu logo-ul și link-ul deja configurate în backend-ul WordPress.

Folosind acest fragment în header-ul meu, logo-ul și link-ul se afișează așa cum te-ai aștepta:

<?php the_custom_logo(); ?>

Mulțumesc tuturor contributorilor, Jason.

0
Toate răspunsurile la întrebare 1
2

Folosește wp_get_attachment_image_src pentru a obține proprietățile și URL-ul imaginii:

$logo = get_theme_mod( 'custom_logo' );
$image = wp_get_attachment_image_src( $logo , 'full' );
$image_url = $image[0];
$image_width = $image[1];
$image_height = $image[2];

Editare: Adăugare mai multe informații bazate pe comentariul tău.

URL-ul către care indică este creat simplu cu home_url:

esc_url( home_url( '/' ) );

Un alt lucru adesea uitat când se utilizează această metodă este respectarea conținutului atributului alt dacă este setat în media:

$alt = get_post_meta( $logo, '_wp_attachment_image_alt', true );
if ( empty( $alt ) ) {
    // Folosește titlul site-ului dacă nu este furnizat un alt.
    $alt = get_bloginfo( 'name', 'display' );
}

Aș recomanda să te uiți la sursa funcției get_custom_logo deoarece ar folosi mare parte din acestea.

De asemenea, merită menționat că dacă dezvolți această temă pentru lansare pe WordPress.org/themes - este o cerință să folosești the_custom_logo sau get_custom_logo în loc să creezi propria soluție.

Din acest motiv, există un filtru pentru ieșirea HTML în get_custom_logo, care ar putea fi cel mai bine să-l folosești și să înlocuiești părțile de care ai nevoie. Funcția get_custom_logo (folosită de the_custom_logo) gestionează și alte aspecte precum multisite și asigură existența placeholder-ului pentru previzualizarea din personalizator. Utilizarea ar arăta cam așa:

add_action( 'get_custom_logo', function( $html ) {
    $new_url = 'href="' . get_theme_mod( 'custom_logo_url', esc_url( home_url( '/' ) ) ) .'"';
    $new_link_class = 'class="box-link"';
    $html = str_replace( 'href="' . esc_url( home_url( '/' ) ) . '"', $new_url, $html );
    $html = str_replace( 'class="custom-logo-link"', $new_link_class, $html );
    return $html;
} );

Aceasta ar citi o valoare a theme_mod custom_logo_url care ar putea veni de la un control din personalizator și schimbă clasa din .custom-logo-link în .box-link în exemplul tău.

22 ian. 2020 19:37:00
Comentarii

Aceasta este o metodă excelentă de a gestiona imaginea, există vreo modalitate de a obține link-ul asociat cu sigla temei (nu link-ul către logo, ci unde va pointa acesta)? Am nevoie de ambele. Adaugă asta în răspunsul tău ca să te pot upvota și accepta c:

Jason Is My Name Jason Is My Name
23 ian. 2020 11:09:01

Este exact ceea ce aveam nevoie, prietene, apreciez actualizarea și extinderea la textul alternativ. Te rog să-mi dai un upvote la întrebare dacă ți-a plăcut să răspunzi!

Jason Is My Name Jason Is My Name
23 ian. 2020 12:58:51