web-dev-qa-db-fra.com

URL de logo personnalisé | Aidez-moi à imprimer l'URL du logo personnalisé que j'ai inséré dans mon thème

J'essaie d'utiliser les composants séparés de la fonction_custom_logo () pour créer mon propre affichage pour le logo.

s'il vous plaît quelqu'un peut-il m'informer de la manière dont je peux accéder à l'URL et à la référence d'image se séparer les unes aux autres?

Beaucoup de gens ont demandé comment changer l'URL qui n'est pas la question dont j'ai besoin d'une réponse. Je souhaite pouvoir manipuler le code comme celui-ci (il s'agit d'un exemple de base de mes plans, vous pouvez donc comprendre les deux composants que je souhaite pouvoir tirer parti):

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

J'utilise un thème vierge, avec le logo et le lien déjà en place dans le dos de WordPress.

Utilisation de cet extrait dans mon en-tête entraîne le logo et le lien pour afficher comme vous l'attendez:

<?php the_custom_logo(); ?>

Merci à tous les contributeurs, Jason.

1
Jason Is My Name

Utilisation wp_get_attachment_image_src Pour obtenir les propriétés de l'image et l'URL:

$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];

Edit : Ajout d'informations supplémentaires en fonction de votre commentaire.

L'URL pointe de l'ordre est simplement faite avec home_url:

esc_url( home_url( '/' ) );

Une autre chose souvent oubliée lorsque vous utilisez cette méthode, honore le contenu de l'alt si elle est définie dans le média:

$alt = get_post_meta( $logo, '_wp_attachment_image_alt', true );
if ( empty( $alt ) ) {
    // Use site title if no alt is provided.
    $alt = get_bloginfo( 'name', 'display' );
}

J'encourage à regarder la source de get_custom_logo car il utiliserait la majeure partie de cela.

Il convient également de mentionner si vous développez ce thème pour la libération sur WordPress.org/themes - C'est une obligation d'utiliser the_custom_logo ou alors get_custom_logo Surveillez votre propre solution.

Pour cette raison, il existe un filtre pour la sortie HTML dans get_custom_logo, qui pourrait être préférable d'utiliser et de remplacer les bits dont vous avez besoin. La fonction get_custom_logo (utilisé par the_custom_logo) Aussi gérer un peu plus que multisite et que l'espace réservé est présent pour l'aperçu du personnalisateur. L'utilisation serait quelque chose comme ceci:

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;
} );

Cela lirait une valeur du thème_mod custom_logo_url qui pourrait provenir d'un contrôle de personnalisation et modifie la classe de .custom-logo-link à .box-link Dans votre exemple.

2
Tim Elsass