2

WordPress の新しいカスタム ロゴ機能を使用して、次のことを達成しようとしています。

  • デフォルト/代替ロゴを表示します。
  • WordPress バージョンがカスタム ロゴをサポートしている場合、ユーザーがカスタマイザーでデフォルト/フォールバック ロゴをカスタム ロゴに置き換えることを許可します。
  • WordPress のバージョンがカスタム ロゴをサポートしていないか、カスタム ロゴが設定されていない (または削除されている) 場合は、デフォルト/代替ロゴを表示します。

これまでのところ、これは私が使用しなければならない最良のコードです。

<?php if ( function_exists( 'the_custom_logo' ) ) : ?>
    <?php if ( has_custom_logo() ) : ?>
        <?php the_custom_logo(); ?>
    <?php else : ?> 
        <h1 class="site-title"><a href="<?php echo esc_url( home_url( '/' ) ); ?>" rel="home" title="<?php bloginfo( 'name' ); ?>"><img src="<?php echo get_stylesheet_directory_uri(); ?>/images/logo.png" alt="<?php bloginfo( 'name' ); ?>" width="100" height="50" /></a></h1>
    <?php endif; ?>
<?php else : ?> 
    <h1 class="site-title"><a href="<?php echo esc_url( home_url( '/' ) ); ?>" rel="home" title="<?php bloginfo( 'name' ); ?>"><img src="<?php echo get_stylesheet_directory_uri(); ?>/images/logo.png" alt="<?php bloginfo( 'name' ); ?>" width="100" height="50" /></a></h1>
<?php endif; ?>

フォールバック イメージのコードを 2 回繰り返さずにこれを行う、よりクリーンで効率的な方法はありますか?

4

2 に答える 2

3

ありがとうございますが、より良い解決策を見つけたと思います:

<?php if ( function_exists( 'the_custom_logo' ) && has_custom_logo() ) : ?>
    <?php the_custom_logo(); ?>
<?php else : ?> 
    <h1 class="site-title"><a href="<?php echo esc_url( home_url( '/' ) ); ?>" rel="home" title="<?php bloginfo( 'name' ); ?>"><img src="<?php echo get_stylesheet_directory_uri(); ?>/images/logo.png" alt="<?php bloginfo( 'name' ); ?>" width="100" height="50" /></a></h1>
<?php endif; ?>
于 2016-11-16T19:07:08.950 に答える
1

単一の条件を取得するために、同じ条件で両方function_exist()をテストできます。has_custom_logo()ifelse

$logo = ( ( function_exists( 'the_custom_logo' ) ) && ( has_custom_logo() ) ) ? the_custom_logo() : null;
if ($logo) {
    echo $logo;
} else {
    echo '<h1 class="site-title"><a href="' . esc_url( home_url( '/' ) ) . '" rel="home" title="' . bloginfo( 'name' ) . '"><img src="' . get_stylesheet_directory_uri() . '/images/logo.png" alt="' . bloginfo( 'name' ) . '" width="100" height="50" /></a></h1>';
}
于 2016-11-16T15:31:49.880 に答える