WordPress直接訪問數據庫列出指定分類目錄下的所有文章


我的問題是:在我遷移wordpress數據庫文件的時候,發現網站下所有的文章都沒有了分類,查了許久才發現原來是數據庫里面少了個關聯分類與文章的表,也就是wp_term_relationships表。重新導入問題解決。其中這篇文章給我啟發。在此收藏一下。

中需要實現根據分類目錄ID獲取該分類目錄下所有文章的功能。如果用Wordpress自帶的函數當然非常簡單,但由於筆者對主題開發不甚熟悉,因此用純PHP腳本直接訪問數據庫實現了該功能。

首先,介紹一下Wordpress數據庫中的幾個表:

文章表--wp_posts:文章ID(ID)、標題(post_title)、發布時間(post_time)、別名(post_name)(文章固定鏈接使用的URL)、狀態(post_status)、類型(post_type)等。

友情鏈接表--wp_links:友情鏈接等鏈接信息。

博客主題表--wp_options:博客題目、描述、站點URL等信息。

標簽表--wp_terms:標簽編號、名稱、別名;分類目錄名稱、別名。

wp_term_relationships:對象ID(object_id,部分對應文章ID),對象分類ID(term_taxonomy_id,部分對應分類目錄編號)

分類目錄表--wp_term_taxonomy:詞項分類標號(term_taxonomy_id)、詞項編號(term_id)、類型(taxonomy,目錄標簽導航菜單)、文章數(count)

wp_users:用戶表,所有后台登錄帳號

wp_usermeta:用戶信息表,用戶姓名、郵箱、描述等。

wp_conmments:評論表

wp_commentmeta:不清楚其功能

2. 通過分類目錄編號獲取文章列表的原理介紹

顯然為了實現我們的功能,需要用到wp_terms、wp_term_relationships、wp_term_taxonomy三個表。 

(1)假設給定的分類ID為$CID,那么$CID就對應wp_term_taxonomy表中的term_taxonomy_id字段,因此我們可以很容易獲得該分類下的文章數:

$sql=”select count from wp_term_taxonomy where term_taxonomy_id=$CID and taxonomy =’category’ “;

(2)根據term_taxonomy_id獲取文章標號和標題的SQL,需要聯合三個表進行查詢,post_status = ‘publish’ 是指文章已經發布,post_type=’post’ 是指記錄類型是文章,taxonomy = ‘category’ 是指類型是目錄。該SQL比較長,您可以先理解這三個表的參照關系后再自己寫SQL語句或者直接用這條SQL。

$sql=”select ID,post_title,post_date,post_name from wp_posts,wp_term_relationships,wp_term_taxonomy where ID=object_id and wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id and post_type=’post’ and post_status = ‘publish’ and wp_term_relationships.term_taxonomy_id = $CID and taxonomy = ‘category’ order by ID desc”; //文章類型:日志 狀態:已發布

3. 顯示效果

關於如何直接連接數據庫?

數據庫名稱、用戶名、密碼等信息都保存在根目錄下的wp-config文件中,因此我們引入該頁面,調用其中的變量即可。

 <?php   
    include 
    ( 
    "wp-config.php" 
    ) 
    ; 
    //根據需要修改路徑   
    $conn 
    = 
    mysql_connect 
    (DB_HOST 
    ,DB_USER 
    ,DB_PASSWORD 
    ) 
    ;   
    mysql_select_db 
    (DB_NAME 
    ) 
    ;   
    mysql_query 
    ( 
    "set names utf-8" 
    ) 
    ; 
    ?> 
   

來源:https://my.oschina.net/shunshun/blog/88692

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM