GET_THEME_MOD返回的是数字,而不是我的图像文件

时间:2018-06-18 作者:Mr.Brown

这是我第一次尝试在自定义程序中实现自定义面板,所以请与我赤裸裸。。。简而言之,我正在对我的网站进行儿童主题化,并希望对我博客帖子的父主题进行基本修改。它现在的工作方式是,当你将鼠标悬停在一篇博客文章上时,会有一个字体很棒的图标显示在覆盖的中间。。。我计划做的是用我的自定义上传图像替换字体awesome图标,我会为自定义程序编写脚本。

我已成功地将该部分添加到定制器,它允许我上载徽标,但当我尝试将上载的图像输出到主题中时:

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

新Customizer部分的示例:

enter image description here

Extra Question:

不确定是否有办法解决这个问题,但我试图修改的代码包含在插件中,不幸的是,不是父主题。制作该主题的开发人员通过添加插件提供了pro版本,该插件可以聚合添加额外的功能。。。有什么办法可以从我的孩子主题中做到这一点吗?我似乎找不到一种不直接编辑插件代码的方法,而我不喜欢这样做。

谢谢你的帮助,肖恩

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

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

结束

相关推荐

Child-theme breaks site

所以,我有一个子主题,里面除了所需的CSS文件之外什么都没有。一旦我激活了这个儿童主题,我的整个网站就关闭了。最后我有两个问题:激活一个只有CSS的子主题怎么能破坏我的网站</我怎样才能回到我原来的主题</这些是网站给我的错误:Warning: require_once(/wp-content/themes/interio_child/admin/options-framework.php) [function.require-once]: 无法打开流:中没有此类文件或目录/wp-c