ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์CMS & Free Scriptใช้ stylesheet คนล่ะอันยังไง
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: ใช้ stylesheet คนล่ะอันยังไง  (อ่าน 2123 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
mr.zatan
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 51
ออฟไลน์ ออฟไลน์

กระทู้: 1,163



ดูรายละเอียด
« เมื่อ: 27 เมษายน 2020, 08:55:50 »

อยากให้แต่ล่ะ user role ใช้ stylesheet  คนล่ะอันสามารถทำได้มัยครับ

** wordpress
« แก้ไขครั้งสุดท้าย: 27 เมษายน 2020, 08:56:09 โดย mr.zatan » บันทึกการเข้า
romance69
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 169
ออฟไลน์ ออฟไลน์

กระทู้: 2,158



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: 28 เมษายน 2020, 02:28:29 »

ไกด์ประมาณนี้นะครับ

สร้าง function ในธีมไฟล์ functions.php
โค๊ด:
add_action( 'wp_enqueue_scripts', 'add_style_user_role' );
function add_style_user_role() {
    $user = wp_get_current_user();
    if ( in_array( 'author', (array) $user->roles ) ) {
        wp_enqueue_style( 'style-user-role-author', get_stylesheet_uri() . '/css/user-role-author.css' );
    }
}

ดู role name ได้ที่ https://wordpress.org/support/...rticle/roles-and-capabilities/
บันทึกการเข้า
mr.zatan
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 51
ออฟไลน์ ออฟไลน์

กระทู้: 1,163



ดูรายละเอียด
« ตอบ #2 เมื่อ: 28 เมษายน 2020, 07:59:07 »

ถามต่อครับ..


Roles user จะมีประมาณนี้

Author , Contributor, Subscriber, Administrator

แล้วถ้า user ขาจรทั่วๆๆไปที่ไม่ได้ login เรียกว่าอะไรครับ
« แก้ไขครั้งสุดท้าย: 28 เมษายน 2020, 07:59:46 โดย mr.zatan » บันทึกการเข้า
romance69
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 169
ออฟไลน์ ออฟไลน์

กระทู้: 2,158



ดูรายละเอียด เว็บไซต์
« ตอบ #3 เมื่อ: 28 เมษายน 2020, 23:02:31 »

ถามต่อครับ..


Roles user จะมีประมาณนี้

Author , Contributor, Subscriber, Administrator

แล้วถ้า user ขาจรทั่วๆๆไปที่ไม่ได้ login เรียกว่าอะไรครับ


ถ้าไม่ได้ login ให้ใช้ is_user_logged_in() เช็คครับ

ตัวอย่าง
if (is_user_logged_in()) {
  return true;
} else {
  return false;
}

อ้างอิง: https://developer.wordpress.or...e/functions/is_user_logged_in/
« แก้ไขครั้งสุดท้าย: 28 เมษายน 2020, 23:02:58 โดย romance69 » บันทึกการเข้า
ocean88
Newbie
*

พลังน้ำใจ: 0
ออฟไลน์ ออฟไลน์

กระทู้: 26



ดูรายละเอียด
« ตอบ #4 เมื่อ: 29 เมษายน 2020, 04:07:52 »

 wanwan011
บันทึกการเข้า
mr.zatan
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 51
ออฟไลน์ ออฟไลน์

กระทู้: 1,163



ดูรายละเอียด
« ตอบ #5 เมื่อ: 29 เมษายน 2020, 21:17:44 »

ใส่แบบนี้ใช่มัยครับ


add_action( 'wp_enqueue_scripts', 'wholesale_customer_logo' );
function wholesale_customer_logo(){
    if( in_array( 'is_user_logged_in()', (array) wp_get_current_user()->roles ) ){
        echo '<style>
            img.fusion-standard-logo {
                background: url(http://example.com/logo-for-wholesale-customers.png ) no-repeat;
            }
        </style>';
    }
}
บันทึกการเข้า
romance69
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 169
ออฟไลน์ ออฟไลน์

กระทู้: 2,158



ดูรายละเอียด เว็บไซต์
« ตอบ #6 เมื่อ: 29 เมษายน 2020, 22:56:49 »

ใส่แบบนี้ใช่มัยครับ


add_action( 'wp_enqueue_scripts', 'wholesale_customer_logo' );
function wholesale_customer_logo(){
    if( in_array( 'is_user_logged_in()', (array) wp_get_current_user()->roles ) ){
        echo '<style>
            img.fusion-standard-logo {
                background: url(http://example.com/logo-for-wholesale-customers.png ) no-repeat;
            }
        </style>';
    }
}



ถ้าจะแท็ก style inline เข้าไปแบบนั่นก็เปลี่ยน HookName จาก wp_enqueue_scripts เป็น wp_head แทนครับ

ตัวอย่าง
โค๊ด:
add_action( 'wp_head', 'wholesale_customer_logo', 10, 40 );
function wholesale_customer_logo(){
    if ( is_user_logged_in() ) {
      if( in_array( 'author', (array) wp_get_current_user()->roles ) ){
          echo '<style>
              img.fusion-standard-logo {
                  background: url(http://example.com/logo-for-wholesale-customers.png) no-repeat;
              }
          </style>';
      }
    }
    else {
        // ถ้าสมาชิกไม่ได้ล็อคอินจะให้ใช้ style อะไรก็เขียนเข้าไปได้
    }

}
« แก้ไขครั้งสุดท้าย: 29 เมษายน 2020, 22:57:21 โดย romance69 » บันทึกการเข้า
mr.zatan
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 51
ออฟไลน์ ออฟไลน์

กระทู้: 1,163



ดูรายละเอียด
« ตอบ #7 เมื่อ: 30 เมษายน 2020, 09:17:59 »

ขอบคุณครับ..

ผมมีอีกแบบนึง แบบใส่เข้าไปใน css เลย ต้องใส่ is_user_logged_in() ยังไงครับ


-style.css

.user-role-customer .catalog_top {
     display: none;
}


-functions.php

add_filter( 'body_class', function( $classes ){
    foreach( (array) wp_get_current_user()->roles as $role ){
        $classes[] = "user-role-$role";
    }
    return $classes;
});
« แก้ไขครั้งสุดท้าย: 30 เมษายน 2020, 09:20:50 โดย mr.zatan » บันทึกการเข้า
romance69
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 169
ออฟไลน์ ออฟไลน์

กระทู้: 2,158



ดูรายละเอียด เว็บไซต์
« ตอบ #8 เมื่อ: 30 เมษายน 2020, 22:16:58 »

ขอบคุณครับ..

ผมมีอีกแบบนึง แบบใส่เข้าไปใน css เลย ต้องใส่ is_user_logged_in() ยังไงครับ


-style.css

.user-role-customer .catalog_top {
     display: none;
}


-functions.php

add_filter( 'body_class', function( $classes ){
    foreach( (array) wp_get_current_user()->roles as $role ){
        $classes[] = "user-role-$role";
    }
    return $classes;
});

ผมไม่เข้าใจคำถามนะครับ แต่จะตอบถามที่ผมเข้าใจก็แล้วกัน (สรุปเข้าใจหรือไม่เข้าใจเนี้ยะ 555++)

ถ้าให้ใส่คลาสสำหรับสมาชิกที่ยังไม่ได้ล็อกอินนะครับ ตามที่ผมตอบไปข้างบนคือให้เอา is_user_logged_in() มาตรวจสอบสมาชิกก่อนครับเช่น

โค๊ด:
if ( is_user_logged_in() ) {
  // หากสมาชิกล็อคอินอยู่ก็ให้เพิ่มคลาสนี้เข้าไป
  $classes[] = 'user-logged';
} else {
  // หากสมาชิกไม่ได้ล็อคอิน
  $classes[] = 'user-guest';
}

แต่ถ้าจะเอามาใช้เช็คสถานะจริงควรจะเป็นประมาณนี้ ผมอิงจากโค้ดที่ท่านส่งมาเลยนะครับ
โค๊ด:
add_filter( 'body_class', function( $classes ){
if ( is_user_logged_in() ) {
    $classes[] = 'user-logged';

    foreach( (array) wp_get_current_user()->roles as $role ){
        $classes[] = "user-role-$role";
    }
} else {
    $classes[] = 'user-guest';
}
    return $classes;
});

แล้วนอกนั่นก็ไปเพิ่มคลาส css เอาต่อในไฟล์ styles.css ครับ

โค๊ด:
// สีพื้นหลังสำหรับสมาชิกที่ไม่ได้ล็อคอิน
body.user-guest {
   background: red;
}

// สีพื้นหลัง user-logged
body.user-logged {
   background: yellow;
}

// สีพื้นหลัง role author
body.user-role-author {
   background: black;
}



« แก้ไขครั้งสุดท้าย: 30 เมษายน 2020, 22:21:33 โดย romance69 » บันทึกการเข้า
หน้า: [1]   ขึ้นบน
พิมพ์