国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > CMS > Wordpress > 正文

wordpress實現自定義URL到自定義頁面

2024-09-07 00:50:31
字體:
來源:轉載
供稿:網友

wordpress對于新聞發布系統來說不能更優秀了,對于一般的門戶和博客類網站的大部分需求都能符合,但其畢竟不是類似于joomla這樣的自定義化程度更高的平臺,在wordpress中只能依靠theme和plugin這兩塊很小地修改原本的功能和增加新的功能.

一直有如此的需求,比如用wordpress搭建一個公司門戶,需要一個產品列表的頁面,這個頁面需要完全自定義的程序去實現,無法實現為一篇文章或者一個頁面,這在wordpress原來的系統中似乎很難實現.

其實這個功能唯一需求的地方,就是能夠自定義一個URL然后映射到主題中自定義的一個頁面中即可,對于數據庫的讀寫還有其他的邏輯實現,完全可以在主題文件中用PHP代碼隨心所欲地實現,數據庫表也可以隨意建,這些都不是問題,但是wordpress就是沒有提供額外的URL映射功能,有一個add_rewrite_rule()函數,只是可以自定義新的URL映射到原來的URL,并沒有添加URL映射到主題文件的機制.

只能從源碼入手,很快可以找到在wp-includes/template-loader.php中,是URL路由到主題文件的入口,所以當我們設置一個新的URL,比如: /production,將它映射到主題目錄下的production.php,wordpress會認為 /production 是一個Page的URL,但是掃描數據庫后發現沒有對應的Page的靜態url符合,所以is_404()就返回了true,然后$template被設置為主題對應的404頁面.

這樣就簡單了,在template-loader.php中一堆if和elseif的后面,include( $template );的前面,我們加入以下代碼,就可以實現我們的目的:

  1. else : 
  2.  $template = get_index_template(); 
  3. endif
  4. // hacked 
  5. if(is_404()){        //新的URL一定會被認為是404頁面 
  6.  if($wp_query->query_vars['pagename'] == 'production'){  //從404結果中找到我們的特殊URL 
  7.   $template = get_query_template('production');  //映射到自定義的主題文件 
  8.  } 
  9. //www.survivalescaperooms.com 
  10. // end 
  11. if ( $template = apply_filters( 'template_include'$template ) ) 
  12.  include$template ); 
  13. return

這樣我們就從404的結果中,找到了我們自定義的URL路徑,并將其映射到了主題目錄中的production.php文件,這樣就是完全自定義的URL和自定義的主題文件了.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 巍山| 利川市| 松桃| 锡林郭勒盟| 蓝山县| 昆山市| 鄯善县| 木里| 新和县| 云安县| 永安市| 湖口县| 金堂县| 留坝县| 铜陵市| 宜都市| 伊通| 静宁县| 黔南| 遂宁市| 杭锦后旗| 杨浦区| 闵行区| 聂拉木县| 溆浦县| 嘉峪关市| 乐安县| 广东省| 格尔木市| 任丘市| 嘉兴市| 恩施市| 监利县| 无为县| 民乐县| 临湘市| 开化县| 菏泽市| 墨脱县| 女性| 英德市|