web-dev-qa-db-ja.com

get_theme_modは私の画像ファイルではなく数値を返しています

カスタムパネルをカスタマイザに実装しようとしたのは今回が初めてです。つまり、私のサイトでは子供向けのテーマになっていて、ブログ投稿の親テーマを基本的に変更したいのです。それが今うまくいく方法は、ブログ投稿の上にマウスを移動したときに、オーバーレイの真ん中に表示される素晴らしいフォントアイコンがあるということです。カスタマイザ用のスクリプト。

このセクションをカスタマイザに正常に追加したので、ロゴをアップロードできますが、アップロードした画像をテーマに出力しようとすると、次のようになります。

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

...数字を表示するだけです - 数字がまだ何を参照しているのかわからないのですが。

これは私の子供のテーマのfunctions.phpで私の完全なマークアップです:

// 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' );

「ホバー状態」のブログ投稿の例:

Example Blog Post 

新しいカスタマイザセクションの例:

enter image description here 

追加の質問:

これを回避する方法があるかどうかはわかりませんが、Imが修正しようとしているコードが残念ながら親テーマではなくプラグインに含まれています。テーマを作った開発者は、追加機能を集約的に追加するプラグインを追加することによってプロバージョンを提供しました...私の子供のテーマからこれをする方法はありますか?私はIdがしたくないプラグインコードを直接編集することを含まない方法を見つけることができないようです。

ご協力ありがとうございます、ショーン

1
Mr.Brown

get_theme_modは画像のHTMLコードを返さず、その画像のURLも返しません。それで、その数は何ですか?選択した添付ファイルのIDです。

これにより、選択した値の使い方を決めることができます。それでは、画像の表示方法は?

画像を印刷したい場合は、次のようにします。

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

そしてそのファイルのURLだけを表示するには:

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