定制器显示/隐藏徽标和网站标题

时间:2016-11-25 作者:Troy Templeman

我在主题定制器中设置了复选框控件,以在选中/取消选中徽标和网站标题时显示/隐藏它们。默认情况下,我希望显示徽标并隐藏网站标题。

除选中复选框时网站标题不会显示在实时预览中外,所有内容都正常工作,除非先将设置保存在自定义程序中。但是,默认情况下会显示徽标,如果取消选中,则会消失。这让我相信站点标题的javascript和/或if语句存在问题。

这是我在模板文件中的代码:

<?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="<?php 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="<?php echo esc_url( home_url( \'/\' ) ); ?>" rel="home"><?php bloginfo( \'name\' ); ?></a></h1>
    <?php else : ?>
        <p class="site-title"><a href="<?php echo esc_url( home_url( \'/\' ) ); ?>" rel="home"><?php bloginfo( \'name\' ); ?></a></p>
    <?php endif; ?>
<?php } ?>  
这是我在自定义程序中的代码。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\'
) );
这是我在相应的定制器中拥有的代码。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\' );
        }
    });
});

2 个回复
SO网友:Carl Willis

试试这个函数,既然可以在同一个文件定制器中使用php,为什么还要使用js呢。php

/*
** show site title or hide it
*/

function showtitle_slogan() {
$showttlslogan = get_theme_mod(\'display_site_title\');
    if ($showttlslogan == true) {
        ?>  
        <style type="text/css">
        .site-title { display:none;}
        </style>
    <?php
    }
}
add_action(\'wp_head\', \'showtitle_slogan\');
对其他事情也一样。

SO网友:Md. Abunaser Khan

Remove site title and site description if a custom logo has been set - Wordpress

要打印/回显结果时,请使用\\u custom\\u徽标()。如果要返回结果,请使用get\\u custom\\u logo()。

<?php
    if( get_custom_logo() ) {
        the_custom_logo();
    } elseif ( is_front_page() && is_home() ) {
        ?>
        <h1 class="site-title">
            <a href="<?php echo esc_url( home_url( \'/\' ) ); ?>" rel="home"><?php bloginfo( \'name\' ); ?></a>
        </h1>
        <?php
        $description = get_bloginfo( \'description\', \'display\' );
    } else {
        ?>
        <p class="site-title"><a href="<?php echo esc_url( home_url( \'/\' ) ); ?>" rel="home"><?php bloginfo( \'name\' ); ?></a></p>
        <?php
        $description = get_bloginfo( \'description\', \'display\' );
    }

    if ( ( isset($description) && $description) || is_customize_preview() ) {
        ?>
        <p class="site-description"><?php echo $description; /* WPCS: xss ok. */ ?></p>
        <?php
    }
?>