[WordPress] 如何讓文字模組Text Widget執行PHP程式,免外掛插件


最近想要在部落格中加上最受歡迎、相關文章或隨機文章,我知道WordPress中有很多外掛可以使用,但我也知道裝太多外掛會拖慢整體速度,所以能不用外掛就儘量不用外掛,只是一般我們都是在側邊欄顯示最受歡迎、相關文章或隨機文章,很可惜,WordPress的Text Widget在預設得情況下並不支援直接執行PHP,所以為了解決這個問題,首先的要件就是要讓文字模組(Text Widget)可以執行PHP,上網找了一下資料,發現這個問題很簡單,只要依照下面的步驟進行即可。

使用教學

在進入教學前,先來看看若未修改前,直接把PHP語法放到文字模組中,會產生什麼樣子的結果:例如我將「WordPress 不用外掛直接實現五種文章代碼」中的隨機文章語法貼到文字模組,結果會發現它只會把PHP的語法當成文字顯示出來,並不會真正的執行

那怎麼修改呢?我參考了「How to Execute php in WordPress Text Widget without a Plugin」一文,只要將下面的語法,貼到「functions.php」中即可

<?php
  function php_execute($html){
      if(strpos($html,"<"."?php")!==false){
          ob_start();
          eval("?".">".$html);
          $html=ob_get_contents();
          ob_end_clean();
      }
      return $html;
  }
  add_filter('widget_text','php_execute',100);
?>

「functions.php」你可以用FTP下載回來修改,或者直接由後台的「外觀」→「主題編輯器」的頁面找到此檔案,以我自己為例,我是直接將語法貼到最尾端

套用後,我們再將剛剛的隨機文章重新套用到文字模組一次,此時就可以看到Text Widget可以正常的執行PHP程式囉

  • just9981

    很棒的教學~感謝您!
    請教一下!貴站上方的公告跑馬燈是用什麼方式完成的?
    謝謝~

    • 這是樣版內建的功能喔,不是我寫的

  • Jhan

    想請教魏子靖
    一般的連結都是點選文字連結後,都會跳入另一個視窗中看到圖片的大圖;
    如果說我想要做 “讓人點選連結後後,只是跳出圖片框,可是還在目前的網頁” ,請問要用什麼wordpress外掛呢?
    *舉例就像是進入很多網站或網頁時,都會跳出圖片或廣告,按X或暗色區即可回到原網頁的那種設計。
    請問要怎麼做到?