php — Konfigurator Pokaż/ukryj logo i tytuł witryny
Skonfigurowałem kontrolki pól wyboru w moim Konfiguratorze motywu, aby wyświetlać/ukrywać logo i tytuł witryny, gdy są zaznaczone/odznaczone. Domyślnie chcę, aby logo było wyświetlane, a tytuł witryny ukryty.
Wszystko działa tak, jak powinno, z wyjątkiem tego, że tytuł witryny nie będzie wyświetlany w podglądzie na żywo, gdy pole wyboru jest zaznaczone, chyba że ustawienia zostaną najpierw zapisane w programie Customizer. Jednak logo jest wyświetlane domyślnie i znika po odznaczeniu. To prowadzi mnie do przekonania, że jest problem z javascript i/lub instrukcją if dla tytułu witryny.
To jest kod, który mam w moim pliku szablonu:
<?php if( get_theme_mod( 'display_logo' , '1' ) == '1') { ?>
<?php if ( function_exists( 'the_custom_logo' ) && has_custom_logo() ) : ?>
<?php the_custom_logo(); ?>
<?php else : ?>
<h1 class="site-logo"><a href=" echo esc_url( home_url(" ) ); ?>" rel="home" title="<?php bloginfo( 'name' ); ?> - <?php bloginfo( 'description' ); ?>"><img src="<?php echo get_stylesheet_directory_uri(); ?>/images/logo.png" alt="<?php bloginfo( 'name' ); ?> - <?php bloginfo( 'description' ); ?>" width="100" height="50" /></a></h1>
<?php endif; ?>
<?php } ?>
<?php if( get_theme_mod( 'display_site_title' , '0' ) == '1') { ?>
<?php if ( is_front_page() && is_home() ) : ?>
<h1 class="site-title"><a href=" echo esc_url( home_url(" ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></h1>
<?php else : ?>
<p class="site-title"><a href=" echo esc_url( home_url(" ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></p>
<?php endif; ?>
<?php } ?>
To jest kod, który mam w moim pliku Customizer.php:
// Display Logo
$wp_customize->add_setting( 'display_logo', array(
'default' => true,
'transport' => 'postMessage'
) );
$wp_customize->add_control( 'display_logo', array(
'label' => __( 'Display Logo', 'myTheme' ),
'type' => 'checkbox'
) );
// Display Site Title
$wp_customize->add_setting( 'display_site_title', array(
'default' => false,
'transport' => 'postMessage'
) );
$wp_customize->add_control( 'display_site_title', array(
'label' => __( 'Display Site Title', 'myTheme' ),
'type' => 'checkbox'
) );
To jest kod, który mam w moim odpowiednim pliku Customizer.js:
// Display Logo
wp.customize( 'display_logo', function( value ) {
value.bind( function( to ) {
if ( true === to ) {
$( '.site-logo' ).removeClass( 'hidden' );
} else {
$( '.site-logo' ).addClass( 'hidden' );
}
});
});
// Display Site Title
wp.customize( 'display_site_title', function( value ) {
value.bind( function( to ) {
if ( true === to ) {
$( '.site-title' ).removeClass( 'hidden' );
} else {
$( '.site-title' ).addClass( 'hidden' );
}
});
});