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

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

中須要實現根據分類目錄ID獲取該分類目錄下全部文章的功能。若是用Wordpress自帶的函數固然很是簡單,但因爲筆者對主題開發不甚熟悉,所以用純PHP腳本直接訪問數據庫實現了該功能。 mysql

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

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

友情連接表--wp_links:友情連接等連接信息。 wordpress

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

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

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

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

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" ) ; ?>
相關文章
相關標籤/搜索