Global Business: [email protected]

chien-yeon logo svp

Hello,It’s Help

 

Try to search「 Custom Product Page ButtonCan't upload images on Woo App?Whiat is 'XML-RPC'?

前言

若您有一個需求是:想讓使用者未登入前隱藏A物件,顯示B物件;登入後顯示A物件,隱藏B物件。使用場景例如:頁首選單的切換&會員物件的顯示。
我們今天就來探討在不借助外掛的情況下來實作此功能吧!

實作

直接開始實作吧!本實作會用到兩個語言,php與jQuery。
WordPress本身的核心編碼中就包含了jQuery,其版本會隨著WordPress的更新而一同更新,因此您無需再重複嵌入jQuery的CDN。

我們透過建立一個sign_up_in_control()函數來判斷當前網站是否有使用者登入,這會用到WordPress內建的一個is_user_logged_in()函數,此函數會return一個布林值,若返回true是已登入,false則未登入。

有了判斷依據後我們就可以在判斷式下面插入<script>標籤,用jQuery獲取元素的class來控制HTML元素的顯示狀態。

物件A的CSS class = “testA”
物件B的CSS class = “testB”

程式碼如下:

function sign_up_in_control(){
  if ( is_user_logged_in() == FALSE ) {
    ?>
    <script>
      //將未登入狀態的程式碼寫在這裡面
      jQuery(function($){
        $(".testA").hide();//控制A隱藏
      })
    </script>
    <?php
  }
  if ( is_user_logged_in() == TRUE ) {
    ?>
    <script>
      //將已登入狀態的程式碼寫在這裡面
      jQuery(function($){
        $(".testB").hide();//控制B隱藏
      })
    </script>
    <?php
  }
}

上述的sign_up_in_control()函數就完成了,未來需要隱藏更多的物件,只需要複製$(“.”).remove();並填入物件的class名稱即可。

最後,把寫好的函數新增至WordPress的「佈景主題檔案編輯器」的function.php檔案最下方即可。

將函數插入到function.php

  1. 進入WordPress後台,選取「外觀」的「佈景主題檔案編輯器」
  1. 選取右側選單中的「function.php」檔案(請注意,若您當前使用子主題,請選擇子主題的function.php檔案)
  1. 利用add_action()將上面寫好的程式碼放進來,請直接複製下方程式碼貼上即可
add_action('wp_head', 'sign_up_in_control');
function sign_up_in_control(){
  if ( is_user_logged_in() == FALSE ) {
    ?>
    <script>
      //將未登入狀態的程式碼寫在這裡面
      jQuery(function($){
        $(".testA").remove();//控制A隱藏
      })
    </script>
    <?php
  }
  if ( is_user_logged_in() == TRUE ) {
    ?>
    <script>
      //將已登入狀態的程式碼寫在這裡面
      jQuery(function($){
        $(".testB").remove();//控制B隱藏
      })
    </script>
    <?php
  }
}

結論

注意,佈景主題更新時有可能會重設function.php,因此建議備份您插入的程式碼,若更新時function.php被重設,您才能立即插入您的程式碼。

以上就是簡單地透過jQuery與php實作讓您控制HTML物件在登入前後的狀態,若有任何問題請聯絡謙妍-客戶支援

Go to Top