我的問題是:在我遷移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