WordPress - 向定制器添加第二个徽标
WordPress - add second logo to customizer
我想在我的主题中添加不同的徽标,当用户滚动页面时,这些徽标将用于粘性页眉。
我试着像这里那样做:https://wordpress.stackexchange.com/a/256985/185092
我编辑了 Underscores 主题,所以我将代码添加到 customizer.php,整个函数如下所示:
function mytheme_customize_register( $wp_customize ) {
$wp_customize->get_setting( 'blogname' )->transport = 'postMessage';
$wp_customize->get_setting( 'blogdescription' )->transport = 'postMessage';
$wp_customize->get_setting( 'header_textcolor' )->transport = 'postMessage';
if ( isset( $wp_customize->selective_refresh ) ) {
$wp_customize->selective_refresh->add_partial(
'blogname',
array(
'selector' => '.site-title a',
'render_callback' => 'mytheme_customize_partial_blogname',
)
);
$wp_customize->selective_refresh->add_partial(
'blogdescription',
array(
'selector' => '.site-description',
'render_callback' => 'mytheme_customize_partial_blogdescription',
)
);
}
$wp_customize->add_setting('sticky_header_logo');
$wp_customize->add_control(new WP_Customize_Image_Control($wp_customize, 'sticky_header_logo', array(
'label' => 'Sticky Header Logo',
'section' => 'title_tagline',
'settings' => 'sticky_header_logo',
'priority' => 8
)));
}
add_action( 'customize_register', 'mytheme_customize_register' );
在 header.php 我有:
<div class="site-branding">
<?php the_custom_logo(); ?>
</div>
<div class="site-branding-alternative">
<?php get_theme_mod( 'sticky_header_logo' ) ?>
</div>
我将使用显示 none 和块来显示一个或另一个徽标,但现在 css 尚未完成,因此两个徽标都应该出现。问题是,我有可能在外观 - 自定义 - 站点标识中添加第二个徽标,但它没有显示在页面上。
我做错了什么?
编辑:
<?php var_dump(get_theme_mods()); ?>
给我这样的代码:
array(7) {
[0]=>bool(false)
["nav_menu_locations"]=>array(1) {
["menu-1"]=>int(2)
}
["custom_css_post_id"]=>int(-1)
["header_image"]=>string(75) "http://localhost/whites/wp-content/uploads/2020/07/cropped-header-image.png"
["header_image_data"]=>object(stdClass)#1138 (5) {
["attachment_id"]=>int(15) ["url"]=>string(75) "http://localhost/whites/wp-content/uploads/2020/07/cropped-header-image.png" ["thumbnail_url"]=>string(75) "http://localhost/whites/wp-content/uploads/2020/07/cropped-header-image.png" ["height"]=>int(473) ["width"]=>int(1000)
}
["custom_logo"]=>int(18)
["sticky_header_logo"]=>string(63) "http://localhost/whites/wp-content/uploads/2020/07/logo-3-1.png"
}
现在我们已经一步步解决了这个问题,我们知道 customizer.php
中的代码是有效的,因为 :
get_theme_mods
returns 你的标志文件所以问题不是数据库或主题模组。
var_dump
显示徽标文件按预期保存在 sticky_header_logo
数组键中。
问题:
这意味着问题一定在 header.php
中,所以我们缩小了从哪里开始寻找编码问题的范围。调试的奇迹 :) 如果我们看一下您用来显示第二个徽标的代码:
<div class="site-branding-alternative">
<?php get_theme_mod( 'sticky_header_logo' ) ?>
</div>
您正在使用 get_theme_mod
来 获取 sticky_header_logo
的值,这是正确的...但您没有 显示 结果。此函数不以与 the_custom_logo
相同的方式输出徽标,它只是 returns url.
解决问题:
您需要使用从 get_theme_mod
返回的 url 创建 <img>
标签并将其回显到屏幕,例如:
<div class="site-branding-alternative">
<?php
$sticky_logo_url = get_theme_mod( 'sticky_header_logo' );
if ($sticky_logo_url )
echo '<img src="'.$sticky_logo_url.'" alt = "logo alt test" class="sticky_logo_class">';
?>
</div>
参考:
使用挂钩添加透明标识上传器
add_action('customize_register', 'transparent_logo_customize_register');
function transparent_logo_customize_register($wp_customize){}
在函数中,您可以添加任意数量的字段
$wp_customize->add_setting('transparent_logo');
$wp_customize->add_control(new WP_Customize_Image_Control($wp_customize, 'transparent_logo', array(
'label' => __('Transparent Logo', 'store-front'),
'section' => 'title_tagline',
'settings' => 'transparent_logo',
'priority' => 4,
)));
我想在我的主题中添加不同的徽标,当用户滚动页面时,这些徽标将用于粘性页眉。
我试着像这里那样做:https://wordpress.stackexchange.com/a/256985/185092
我编辑了 Underscores 主题,所以我将代码添加到 customizer.php,整个函数如下所示:
function mytheme_customize_register( $wp_customize ) {
$wp_customize->get_setting( 'blogname' )->transport = 'postMessage';
$wp_customize->get_setting( 'blogdescription' )->transport = 'postMessage';
$wp_customize->get_setting( 'header_textcolor' )->transport = 'postMessage';
if ( isset( $wp_customize->selective_refresh ) ) {
$wp_customize->selective_refresh->add_partial(
'blogname',
array(
'selector' => '.site-title a',
'render_callback' => 'mytheme_customize_partial_blogname',
)
);
$wp_customize->selective_refresh->add_partial(
'blogdescription',
array(
'selector' => '.site-description',
'render_callback' => 'mytheme_customize_partial_blogdescription',
)
);
}
$wp_customize->add_setting('sticky_header_logo');
$wp_customize->add_control(new WP_Customize_Image_Control($wp_customize, 'sticky_header_logo', array(
'label' => 'Sticky Header Logo',
'section' => 'title_tagline',
'settings' => 'sticky_header_logo',
'priority' => 8
)));
}
add_action( 'customize_register', 'mytheme_customize_register' );
在 header.php 我有:
<div class="site-branding">
<?php the_custom_logo(); ?>
</div>
<div class="site-branding-alternative">
<?php get_theme_mod( 'sticky_header_logo' ) ?>
</div>
我将使用显示 none 和块来显示一个或另一个徽标,但现在 css 尚未完成,因此两个徽标都应该出现。问题是,我有可能在外观 - 自定义 - 站点标识中添加第二个徽标,但它没有显示在页面上。
我做错了什么?
编辑:
<?php var_dump(get_theme_mods()); ?>
给我这样的代码:
array(7) {
[0]=>bool(false)
["nav_menu_locations"]=>array(1) {
["menu-1"]=>int(2)
}
["custom_css_post_id"]=>int(-1)
["header_image"]=>string(75) "http://localhost/whites/wp-content/uploads/2020/07/cropped-header-image.png"
["header_image_data"]=>object(stdClass)#1138 (5) {
["attachment_id"]=>int(15) ["url"]=>string(75) "http://localhost/whites/wp-content/uploads/2020/07/cropped-header-image.png" ["thumbnail_url"]=>string(75) "http://localhost/whites/wp-content/uploads/2020/07/cropped-header-image.png" ["height"]=>int(473) ["width"]=>int(1000)
}
["custom_logo"]=>int(18)
["sticky_header_logo"]=>string(63) "http://localhost/whites/wp-content/uploads/2020/07/logo-3-1.png"
}
现在我们已经一步步解决了这个问题,我们知道 customizer.php
中的代码是有效的,因为 :
get_theme_mods
returns 你的标志文件所以问题不是数据库或主题模组。var_dump
显示徽标文件按预期保存在sticky_header_logo
数组键中。
问题:
这意味着问题一定在 header.php
中,所以我们缩小了从哪里开始寻找编码问题的范围。调试的奇迹 :) 如果我们看一下您用来显示第二个徽标的代码:
<div class="site-branding-alternative">
<?php get_theme_mod( 'sticky_header_logo' ) ?>
</div>
您正在使用 get_theme_mod
来 获取 sticky_header_logo
的值,这是正确的...但您没有 显示 结果。此函数不以与 the_custom_logo
相同的方式输出徽标,它只是 returns url.
解决问题:
您需要使用从 get_theme_mod
返回的 url 创建 <img>
标签并将其回显到屏幕,例如:
<div class="site-branding-alternative">
<?php
$sticky_logo_url = get_theme_mod( 'sticky_header_logo' );
if ($sticky_logo_url )
echo '<img src="'.$sticky_logo_url.'" alt = "logo alt test" class="sticky_logo_class">';
?>
</div>
参考:
使用挂钩添加透明标识上传器
add_action('customize_register', 'transparent_logo_customize_register');
function transparent_logo_customize_register($wp_customize){}
在函数中,您可以添加任意数量的字段
$wp_customize->add_setting('transparent_logo');
$wp_customize->add_control(new WP_Customize_Image_Control($wp_customize, 'transparent_logo', array(
'label' => __('Transparent Logo', 'store-front'),
'section' => 'title_tagline',
'settings' => 'transparent_logo',
'priority' => 4,
)));