首页 > 解决方案 > 根据 WordPress 中的页面更改徽标

问题描述

我正在尝试更改我网站上的标题徽标,具体取决于该人所在的页面。我不知道 PHP,但我找到了在 header.php 中定义徽标的位置,并试图将其重写为动态的。当我使用我的代码时,网站会中断,所以很明显我做错了什么。

这是我的 header.php 文件的代码。

<!DOCTYPE html>
<html <?php language_attributes(); ?>>
<head><meta charset="<?php bloginfo( 'charset' ); ?>">

<!-- Set the viewport width to device width for mobile -->
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/chosen/1.8.7/chosen.css" integrity="sha256-0LjJurLJoa1jcHaRwMDnX2EQ8VpgpUMFT/4i+TEtLyc=" crossorigin="anonymous" />
<?php

 wp_head();
  ?>
<style>
    .chosen-container .chosen-results {

    height: 100%;
    overflow-y: hidden;
    max-height: inherit;
}
.chosen-container-active .chosen-single, .chosen-container-single .chosen-single {
    display: none;
}
.chosen-container-single .chosen-drop {
    display: contents;
}
</style>
</head>


<body <?php body_class(); ?>>

<div class="<?php $themnific_redux = get_option( 'themnific_redux' ); 
    if (empty($themnific_redux['tmnf-uppercase'])) {} else {if($themnific_redux['tmnf-uppercase'] == '1') echo 'upper '; }
    if (empty($themnific_redux['tmnf-bottombar-dis'])) {} else {if($themnific_redux['tmnf-bottombar-dis'] == '1') echo 'bottombar_dis '; }
    if ( is_active_sidebar( 'tmnf-sidebar' ) ) {echo 'tmnf-sidebar-active ';} else { echo 'postbarNone ';};
    if (empty($themnific_redux['tmnf-header-layout'])) {} else {echo esc_attr($themnific_redux['tmnf-header-layout']);}
?>">

    <div id="header" class="tranz" itemscope itemtype="http://schema.org/WPHeader">

        <div class="container_head">

            <a class="screen-reader-text ribbon skip-link" href="#content_start"><?php esc_html_e('Skip to content','citygov');?></a>

            <div class="clearfix"></div>

            <div id="titles" class="tranz2">

                <?php if(empty($themnific_redux['tmnf-main-logo']['url'])) { ?>

                <h1 class="logo"><a href="<?php echo esc_url(home_url('/')); ?>"><?php bloginfo('name');?></a></h1>

                <?php } 

                else { ?>

                <a class="logo" href="<?php echo esc_url(home_url('/')); ?>">

                    <img class="tranz" src="<?php echo esc_url($themnific_redux['tmnf-main-logo']['url']);?>" alt="<?php bloginfo('name'); ?>"/>

                </a>

                <?php } ?>

            </div><!-- end #titles  -->

            <div class="header-right for-menu">
                <input type="checkbox" id="showmenu" aria-label="<?php esc_html_e('Open Menu','citygov');?>">
                <label for="showmenu" class="show-menu ribbon" tabindex="0"><i class="fas fa-bars"></i> <span><?php esc_html_e('Menu','citygov');?></span></label>

                <nav id="navigation" class="rad tranz" itemscope itemtype="http://schema.org/SiteNavigationElement" role="navigation" aria-label="<?php esc_html_e( 'Main Menu', 'citygov' ); ?>"> 

                    <?php get_template_part('/includes/navigation'); ?>

                </nav>

            </div><!-- end .header-right  -->

            <div class="clearfix"></div>

            <div id="bottombar" class="bottomnav tranz" role="navigation" aria-label="<?php esc_html_e( 'Quick Links', 'citygov' ); ?>">

                <?php if(empty($themnific_redux['tmnf-menu-label'])) {} else { ?>
                    <p class="menu_label"><?php echo  esc_attr($themnific_redux['tmnf-menu-label']); ?></p>
                <?php }?>

                <div class="header-right">
                    <?php get_template_part('/includes/add-navigation'); ?>

                    <?php get_template_part('/includes/uni-social' );?>
                </div>

            </div><!-- end #bottombar  -->

            <div class="clearfix"></div>

        </div><!-- end .container  -->

    </div><!-- end #header  -->

<?php  ?>

<div class="wrapper p-border">

标签: wordpress

解决方案


您可以通过简单地将以下代码放入主题的 functions.php 文件中来做到这一点。

输入此代码后,您现在可以看到添加到后端管理区域的新设置。

转到 wordpress 管理区域,然后转到外观 > 自定义 > 站点标识。

您现在可以看到有两个新设置。1)上传徽标(替换文本)=> 您可以为其他页面添加第二个徽标 2)页面 ID。=> 您可以在此文本框中添加逗号分隔的页面 ID,以便在该页面中显示第二个徽标。

function jay_customize_register( $wp_customize ) {
    $wp_customize->add_setting( 'jay_logo' );

    $wp_customize->add_control( new WP_Customize_Image_Control( $wp_customize, 'jay_logo', array(
        'label' => __( 'Upload Logo (replaces text)', 'jay' ),
        'section' => 'title_tagline',
        'settings' => 'jay_logo',
        ) ) );

     $wp_customize->add_setting('page_ids');
    $wp_customize->add_control('text_setting', array(
        'label'   => 'Page IDs',
         'section' => 'title_tagline',
        'type'    => 'text',
        'settings' => 'page_ids',
       ));
}
add_action( 'customize_register', 'jay_customize_register' );

function change_logo_on_single($html) {

    $pageIDs = (get_theme_mod('page_ids'))? explode(',',get_theme_mod('page_ids')) : array();
   if(in_array(get_the_ID(),$pageIDs)){
       $html = preg_replace('/<img(.*?)\/>/', '<img src="'.get_theme_mod('jay_logo').'" class="custom-logo" alt="" itemprop="logo" />', $html);
   }
   return $html;
}

add_filter('get_custom_logo','change_logo_on_single');

推荐阅读