Wordpress 自定义图像控件不起作用

Wordpress Customize Image Control Not Working

我目前正在创建一个 Wordpress 主题,但 运行 遇到了麻烦。我正在使用主题自定义页面上传主徽标和移动徽标。然后应在页面上使用这些徽标。我让它工作了 20 分钟,但他们停止工作了。

这是我在 function.php 中自定义的注册函数:

function wpalpha_customize_register( $wp_customize ) {

  $wp_customize->add_section( 'wpalpha_logo_section' , array(
    'title'                 =>  __('Logos', 'wpalpha'),
    'description'           =>  __('Upload logos to replace the default site logos.'),
    'panel'                 =>  'design_settings',
    'priority'              =>  10,
    'capability'            =>  'edit_theme_options',
    'theme_supports'        =>  '',
  ) );

  $wp_customize->add_setting('wpalpha_desktop_logo', array(
    'type'                  =>  'theme_mod',
    'capability'            =>  'edit_theme_options',
    'theme_supports'        =>  '',
    'default'               =>  get_template_directory_uri().'/img/header/shield_text.png',
    'sanitize_callback'     =>  '',
    'sanitize_js_callback'  =>  '',
    'transport'             =>  'refresh',
  ));
  $wp_customize->add_control(new WP_Customize_Image_Control($wp_customize, 'wpalpha_desktop_logo', array(
    'label'                 =>  __('Choose Logo', 'wpalpha'),
    'section'               =>  'wpalpha_logo_section',
    'settings'              =>  'wpalpha_desktop_logo',
    'context'               =>  'wpalpha-desktop-logo',
  )));

  $wp_customize->add_setting('wpalpha_mobile_logo', array(
    'type'                  =>  'theme_mod',
    'capability'            =>  'edit_theme_options',
    'theme_supports'        =>  '',
    'default'               =>  get_template_directory_uri().'/img/header/shield.png',
    'sanitize_callback'     =>  '',
    'sanitize_js_callback'  =>  '',
    'transport'             =>  'refresh',
  ));
  $wp_customize->add_control(new WP_Customize_Image_Control($wp_customize, 'wpalpha_mobile_logo', array(
    'label'                 =>  __('Choose Logo', 'wpalpha'),
    'section'               =>  'wpalpha_logo_section',
    'settings'              =>  'wpalpha_mobile_logo',
    'context'               =>  'wpalpha-mobile-logo',
  )));
}

add_action('customize_register', 'wpalpha_customize_register');

这是我在 header.php 中使用它的地方:

<a class="navbar-brand" href="<?php echo home_url(); ?>">

  <?php if(get_theme_mod('wpalpha_desktop_logo') != ''): ?>
  <img class="desktop dlp_logo" src="<?php echo esc_url(get_theme_mod('wpaplpha_desktop_logo')); ?>">
  <?php endif; ?>

  <?php if(get_theme_mod('wpalpha_mobile_logo') != ''): ?>
  <img class="mobile dlp_logo" src="<?php echo esc_url(get_theme_mod('wpaplpha_mobile_logo')); ?>">
  <?php endif; ?>

</a>

这是我的代码输出的内容:

<img class="desktop dlp_logo" src="">
<img class="mobile dlp_logo" src="">

此图显示自定义页面上的选项有效,但我的徽标不再显示(左上角的小方框应该是徽标):(显然我做的不够好网站到 post 一张图片,这样你就可以关注这个 link...)

http://i.stack.imgur.com/C38O6.jpg

请帮忙! 谢谢

更新#1:

当我更改 Wordpress 后端站点上的徽标时,我的数据库似乎不再更新。我忘记更新选项了吗?我以为这些功能内置了。

更新#2:

<?php echo var_dump(get_theme_mod('wpalpha_desktop_logo')); ?>

这个 var_dump() returns 'string(82) "http://localhost:8888/wp-content/themes/adenicboy-alpha/img/header/shield_text.png"' 所以我真的很困惑为什么这不起作用...

起始锚标记缺少“<”。这可能会导致显示所附内容出现问题。尝试改变这个

a class="navbar-brand" href="<?php echo home_url(); ?>">

至此

<a class="navbar-brand" href="<?php echo home_url(); ?>">

我想出办法了!

我能够通过调用 get_theme_mod() 并将结果存储在字符串中而不是在 src 区域内调用它来使其工作。然后我将字符串回显到 src 区域。

<a class="navbar-brand" href="<?php echo home_url(); ?>">

  <?php if(get_theme_mod('wpalpha_desktop_logo') != ''): ?>
    <?php $wpalpha_desktop_logo = esc_url(get_theme_mod('wpalpha_desktop_logo')); ?>
    <img class="desktop dlp_logo" src="<?php echo $wpalpha_desktop_logo; ?>">
  <?php endif; ?>

  <?php if(get_theme_mod('wpalpha_mobile_logo') != ''): ?>
    <?php $wpalpha_mobile_logo = esc_url(get_theme_mod('wpalpha_mobile_logo')); ?>
    <img class="mobile dlp_logo" src="<?php echo $wpalpha_mobile_logo; ?>">
  <?php endif; ?>

</a>

如果有人遇到类似问题,我强烈建议您在 get_theme_mod() 上使用 var_dump()。