在Wordpress中按用户角色更改徽标

时间:2017-07-03 14:09:16

标签: php wordpress

嘿伙计们我被要求为我的公司打造网站品牌。我们正在使用Wordpress,基本上每个用户角色都是一个不同的组,需要在网站上看到不同的徽标。

我使用Thimpress的Eduma作为我的主题。我觉得它应该像检查user_role登录的内容并更改徽标图像一样简单,但我不知道从哪里开始设置这个条件。

非常感谢任何帮助或指导!

以下是我认为创建徽标的代码:

<?php
add_action( 'thim_logo', 'thim_logo', 1 );
// logo
if ( !function_exists( 'thim_logo' ) ) :
    function thim_logo() {
        $thim_logo = get_theme_mod( 'thim_logo', false );
        $style     = '';
        if ( !empty( $thim_logo ) ) {
            if ( is_numeric( $thim_logo ) ) {
                $logo_attachment = wp_get_attachment_image_src( $thim_logo, 'full' );
                if ( $logo_attachment ) {
                    $src   = $logo_attachment[0];
                    $style = 'width="' . $logo_attachment[1] . '" height="' . $logo_attachment[2] . '"';
                } else {
                    // Default image
                    // Case: image ID from demo data
                    $src   = get_template_directory_uri() . '/images/logo.png';
                    $style = 'width="153" height="40"';
                }
            } else {
                $src = $thim_logo;
            }
        } else {
            // Default image
            // Case: The first install
            $src   = get_template_directory_uri() . '/images/logo-sticky.png';
            $style = 'width="153" height="40"';
        }
        $src = thim_ssl_secure_url($src);
        echo '<a href="' . esc_url( home_url( '/' ) ) . '" title="' . esc_attr( get_bloginfo( 'name' ) ) . ' - ' . esc_attr( get_bloginfo( 'description' ) ) . '" rel="home" class="no-sticky-logo">';
        echo '<img src="' . $src . '" alt="' . esc_attr( get_bloginfo( 'name' ) ) . '" ' . $style . '>';
        echo '</a>';
    }
endif;
add_action( 'thim_sticky_logo', 'thim_sticky_logo', 1 );

// get sticky logo
if ( !function_exists( 'thim_sticky_logo' ) ) :
    function thim_sticky_logo() {
        $sticky_logo = get_theme_mod( 'thim_sticky_logo', false );
        $style       = '';
        if ( !empty( $sticky_logo ) ) {
            if ( is_numeric( $sticky_logo ) ) {
                $logo_attachment = wp_get_attachment_image_src( $sticky_logo, 'full' );
                if ( $logo_attachment ) {
                    $src   = $logo_attachment[0];
                    $style = 'width="' . $logo_attachment[1] . '" height="' . $logo_attachment[2] . '"';
                } else {
                    // Default image
                    // Case: image ID from demo data
                    $src   = get_template_directory_uri() . '/images/logo-sticky.png';
                    $style = 'width="153" height="40"';
                }
            } else {
                $src = $sticky_logo;
            }

        } else {
            // Default image
            // Case: The first install
            $src   = get_template_directory_uri() . '/images/logo-sticky.png';
            $style = 'width="153" height="40"';
        }
        $src = thim_ssl_secure_url($src);
        echo '<a href="' . esc_url( home_url( '/' ) ) . '" rel="home" class="sticky-logo">';
        echo '<img src="' . $src . '" alt="' . esc_attr( get_bloginfo( 'name' ) ) . '" ' . $style . '>';
        echo '</a>';
    }
endif;

2 个答案:

答案 0 :(得分:0)

在您设置徽标的文件中,将此代码放在那里。

$user = wp_get_current_user(); if ( in_array( 'author', (array) $user->roles ) ) { //logo for author role }

答案 1 :(得分:0)

这取决于主题的布局。可能,它在header.php中。 继续前进的方式是这样的:

  1. 创建子主题 https://codex.wordpress.org/Child_Themes
  2. 找出哪个文件输出了徽标的链接 可能是header.php,但这取决于主题;问主题开发者是否不确定。
  3. 例如使用wp_get_current_user() https://codex.wordpress.org/Function_Reference/wp_get_current_user
  4. 做一个php切换结果并输出各种链接 http://php.net/manual/en/control-structures.switch.php