[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程式囉