按类别更改某些页面中的徽标URL

时间:2018-12-18 作者:Emanuela Nardin

我正在尝试更改某些类别和页面的徽标url。在主题选项中,可以更改类别和页面的徽标img,但不能更改徽标url。我在我的子主题函数中尝试了这段代码。php文件,但它不工作:

function change_logo_url_animacao($html) {
    $custom_logo_id = get_theme_mod( \'custom_logo\' );
    $url = home_url( \'pimeanimacao\', \'relative\' );
    if(is_page( array( 6447, 7 ) )){
         $html = sprintf( \'<a href="%1$s">%2$s</a>\',
            esc_url( $url ),
            wp_get_attachment_image( $custom_logo_id, \'full\', false, array(
                \'class\'    => \'custom-logo\',))
                );
    }elseif(is_category( 39 ) || cat_is_ancestor_of( 39, get_query_var( \'cat\' ) )){
        $html = sprintf( \'<a href="%1$s">%2$s</a>\',
            esc_url( $url ),
            wp_get_attachment_image( $custom_logo_id, \'full\', false, array(
                \'class\'    => \'custom-logo\',))
                );
    }elseif(in_category( array( 39,25,18,3,24,58 ) )){
        $html = sprintf( \'<a href="%1$s">%2$s</a>\',
            esc_url( $url ),
            wp_get_attachment_image( $custom_logo_id, \'full\', false, array(
                \'class\'    => \'custom-logo\',))
                );
    }
    return $html;
}

add_filter(\'get_custom_logo\',\'change_logo_url_animacao\');
我使用的标题具有以下代码来加载徽标:

<div class="contact_logo">
    <?php xxx_show_logo(true, true); ?>
</div>
这里调用的函数xxx\\u show\\u logo位于文件核心。主题框架的php。以下是函数:

if ( !function_exists( \'xxx_show_logo\' ) ) {
    function xxx_show_logo($logo_main=true, $logo_fixed=false, $logo_footer=false, $logo_side=false, $logo_text=true, $logo_slogan=true) {
        if ($logo_main===true)      $logo_main   = xxx_storage_get(\'logo\');
        if ($logo_fixed===true)     $logo_fixed  = xxx_storage_get(\'logo_fixed\');
        if ($logo_footer===true)    $logo_footer = xxx_storage_get(\'logo_footer\');
        if ($logo_side===true)      $logo_side   = xxx_storage_get(\'logo_side\');
        if ($logo_text===true)      $logo_text   = xxx_storage_get(\'logo_text\');
        if ($logo_slogan===true)    $logo_slogan = xxx_storage_get(\'logo_slogan\');
        if (empty($logo_main) && empty($logo_fixed) && empty($logo_footer) && empty($logo_side) && empty($logo_text))
             $logo_text = get_bloginfo(\'name\');
        if ($logo_main || $logo_fixed || $logo_footer || $logo_side || $logo_text) {
        ?>
        <div class="logo">
            <a href="<?php echo esc_url(home_url(\'/\')); ?>"><?php
                if (!empty($logo_main)) {
                    $attr = xxx_getimagesize($logo_main);
                    echo \'<img src="\'.esc_url($logo_main).\'" class="logo_main" alt="\'.esc_attr__(\'Image\', \'charity-is-hope\').\'"\'.(!empty($attr[3]) ? \' \'.trim($attr[3]) : \'\').\'>\';
                }
                if (!empty($logo_fixed)) {
                    $attr = xxx_getimagesize($logo_fixed);
                    echo \'<img src="\'.esc_url($logo_fixed).\'" class="logo_fixed" alt="\'.esc_attr__(\'Image\', \'charity-is-hope\').\'"\'.(!empty($attr[3]) ? \' \'.trim($attr[3]) : \'\').\'>\';
                }
                if (!empty($logo_footer)) {
                    $attr = xxx_getimagesize($logo_footer);
                    echo \'<img src="\'.esc_url($logo_footer).\'" class="logo_footer" alt="\'.esc_attr__(\'Image\', \'xxx\').\'"\'.(!empty($attr[3]) ? \' \'.trim($attr[3]) : \'\').\'>\';
                }
                if (!empty($logo_side)) {
                    $attr = xxx_getimagesize($logo_side);
                    echo \'<img src="\'.esc_url($logo_side).\'" class="logo_side" alt="\'.esc_attr__(\'Image\', \'xxx\').\'"\'.(!empty($attr[3]) ? \' \'.trim($attr[3]) : \'\').\'>\';
                }
                echo !empty($logo_text) ? \'<div class="logo_text">\'.trim($logo_text).\'</div>\' : \'\';
                echo !empty($logo_slogan) ? \'<br><div class="logo_slogan">\' . esc_html($logo_slogan) . \'</div>\' : \'\';
            ?></a>
        </div>
        <?php 
        }
    } 
}
现在我需要更改以下内容:<a href="<?php echo esc_url(home_url(\'/\')); ?>">在某些类别和页面中,指向此链接“site\\u domain/pimeanimacao”。我如何解决它?提前感谢您对我的帮助!

2 个回复
最合适的回答,由SO网友:mrben522 整理而成

在子主题中,需要覆盖父主题的徽标功能。复制函数,减去if ( !function_exists( \'xxx_show_logo\' ) ) { 部分,添加到子主题中,并在其中添加设置url的条件。

SO网友:Emanuela Nardin

解决了“我的孩子”主题函数中xxx\\u show\\u logo函数的过度阅读问题。php文件如下:

<div class="logo">
            <a href="<?php 
            if (is_page( array( 6447, 7 ) )) {
            echo esc_url(home_url(\'/pimeanimacao\'));
            } elseif (is_category( 39 ) || cat_is_ancestor_of( 39, get_query_var( \'cat\' ) )) {
                echo esc_url(home_url(\'/pimeanimacao\'));
            } elseif (in_category( array( 39,25,18,3,24,58 ) )) {
                echo esc_url(home_url(\'/pimeanimacao\'));
            } else {
                echo esc_url(home_url(\'/\'));
            }
            ?>">

相关推荐