WordPress

php — Konfigurator Pokaż/ukryj logo i tytuł witryny

  • 25 listopada, 2016
  • 3 min read
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' );
        }
    });
});


Źródło

Warto przeczytać!  php - Błąd 404 po aktualizacji adresu URL