web-dev-qa-db-fra.com

get_theme_mod renvoie un nombre plutôt que mon fichier image

C’est la première fois que j’essaie d’implémenter un panneau personnalisé dans le personnalisateur, alors soyez nu avec moi, je vous prie de… bref, je suis un enfant qui tourne mon site et je veux apporter une modification de base au thème parent de mes articles de blog. La façon dont cela fonctionne maintenant est que lorsque vous survolez un article de blog, il y a une icône de police géniale qui apparaît au milieu de la superposition ... ce que je prévois de faire est de remplacer l'icône de police géniale par mon image téléchargée personnalisée qui s'impose. script pour le personnalisateur.

J'ai ajouté avec succès la section à la personnalisation et cela me permet de télécharger mon logo, mais lorsque j'essaie de sortir l'image téléchargée dans le thème avec:

<?php echo get_theme_mod( 'hbps_blog_overlay_logo' ); ?>

... il affiche simplement un numéro - Je ne suis même pas sûr de ce à quoi le numéro fait référence?

Ceci est mon balisage complet dans le functions.php de mon thème enfant:

// Register Hotbox Customizer Options
function hbps_customize_register( $wp_customize ) {

    $wp_customize->add_panel( 'hbps_custom_panel',
        array(
            'title' => __( 'Extra Options' ),
            'description' => esc_html__( 'Additional options for the Flexia theme.' ), 
            'priority' => 90, 
        )
    );

    $wp_customize->add_section( 'hbps_blog_section',
        array(
            'title' => __( 'Blog Extras' ),
            'description' => esc_html__( 'Additional options for the blog section.' ),
            'panel' => 'hbps_custom_panel', 
            'priority' => 160, 
        )
    );

    $wp_customize->add_setting( 'hbps_blog_overlay_logo',
        array(
            'default' => '',
            'transport' => 'refresh',
            'sanitize_callback' => 'absint',
        )
    );

    $wp_customize->add_control( new WP_Customize_Cropped_Image_Control( $wp_customize, 'hbps_blog_overlay_logo',
        array(
            'label' => __( 'Post Overlay Logo' ),
            'description' => esc_html__( 'Upload a custom logo for the masonry layout that will appear when hovering over a blog post. - Recommended Size: 60x60 px' ),
            'section' => 'hbps_blog_section',
            'width' => 60,
            'height' => 60,
            'button_labels' => array( 
                'select' => __( 'Select Logo' ),
                'change' => __( 'Change Logo' ),
                'default' => __( 'Default' ),
                'remove' => __( 'Remove' ),
                'placeholder' => __( 'No logo selected' ),
                'frame_title' => __( 'Select Logo' ),
                'frame_button' => __( 'Choose Logo' ),
            )
        )
    ) );

}
add_action( 'customize_register', 'hbps_customize_register' );

Exemple de publication de blog en "état de survol":

 Example Blog Post 

Exemple de nouvelle section Customizer:

 enter image description here 

Question supplémentaire:

Je ne suis pas sûr qu'il y ait moyen de contourner cela, mais le code que je tente de modifier est contenu dans un plugin, pas le thème parent, malheureusement. Le développeur qui a créé le thème a proposé la version pro en ajoutant le plugin qui ajoute globalement les fonctionnalités supplémentaires ... y a-t-il un moyen de le faire à partir du thème de mon enfant? Je n'arrive pas à trouver un moyen qui n'implique pas directement l'édition du code des plugins, ce que je préfère ne pas faire.

Merci pour votre aide, Shaun

1
Mr.Brown

get_theme_mod ne renvoie pas le code HTML d'une image et ne renvoie pas l'URL de cette image. Alors, quel est ce nombre? C'est l'identifiant de la pièce jointe sélectionnée.

De cette façon, vous pouvez décider comment utiliser la valeur sélectionnée. Alors, comment afficher l'image?

Si vous souhaitez imprimer l'image, vous pouvez procéder comme suit:

if ( get_theme_mod( 'hbps_blog_overlay_logo' ) > 0 ) { 
    echo wp_get_attachment_image( get_theme_mod( 'hbps_blog_overlay_logo' ), 'full' ); 
}

Et pour afficher uniquement l'URL de ce fichier:

if ( get_theme_mod( 'hbps_blog_overlay_logo' ) > 0 ) { 
    echo wp_get_attachment_image_url( get_theme_mod( 'hbps_blog_overlay_logo' ), 'full' ); 
}
3
Krzysiek Dróżdż