URL-ul Logo-ului Personalizat | Ajută-mă să afișez URL-ul logo-ului personalizat inserat în tema mea
Î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.

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.

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:
