wordpress 開發相關函數

首頁判斷

is_home()

is_front_page()

當你的首頁不是默認的index.php的時候,而是在後臺指定了一個page頁面。這種情況下is_home()會失效,也就是說這樣子的情況下就不能再用is_home()來判斷。

is_front_page()是判斷當前頁是不是指定的首頁,我們在上面描述的情況下需要的就是這個函數。

<?php if ( (is_home() || is_front_page()) && !is_paged() ) {?>
我只會在首頁顯示
<?php} ?>

 

index.php : 主頁模板

archive.php : Archive/Category模板

404.php : Not Found 錯誤頁模板

comments.php : 留言/回覆模板

footer.php : Footer模板

header.php : Header模板

sidebar.php : 側欄模板

page.php : 內容頁(Page)模板

single.php : 內容頁(Post)模板

searchform.php : 搜索表單模板

search.php : 搜索結果模板

基本條件判斷
is_home() : 是否爲主頁

is_single() : 是否爲內容頁(Post)

is_page() : 是否爲內容頁(Page)

is_category() : 是否爲Category/Archive頁

is_tag() : 是否爲Tag存檔頁

is_date() : 是否爲指定日期存檔頁

is_year() : 是否爲指定年份存檔頁

is_month() : 是否爲指定月份存檔頁

is_day() : 是否爲指定日存檔頁

is_time() : 是否爲指定時間存檔頁

is_archive() : 是否爲存檔頁

is_search() : 是否爲搜索結果頁

is_404() : 是否爲 “HTTP 404: Not Found” 錯誤頁

is_paged() : 主頁/Category/Archive頁是否以多頁顯示

Header部分常用到的PHP函數
bloginfo (’name’); //博客名稱(Title)

bloginfo (’stylesheet_url’); //CSS文件路徑

bloginfo (’pingback_url’); //PingBack Url

bloginfo (’template_url’); //模板文件路徑

bloginfo (’version’); // WordPress版本

bloginfo (’atom_url’); // Atom Url

bloginfo (’rss2_url’); // RSS 2.o Url

bloginfo (’url’); //博客 Url

bloginfo (’html_type’); // 博客網頁Html類型

bloginfo (’charset’); //博客網頁編碼

bloginfo (’description’); //博客描述

wp_title(); //特定內容頁(Post/Page)的標題

_e(’Message’); //輸出相應信息

wp_register(); //顯示註冊鏈接

wp_loginout(); //顯示登錄/註銷鏈接

<!––next page––> : 將當前內容分頁

<!––more––> : 將當前內容截斷,以不在主頁/目錄頁顯示全部內容

timer_stop(1); //網頁加載時間(秒)

echo get_num_queries(); //網頁加載查詢量

文章或者類型判斷
is_single() 判斷是否是具體文章的頁面

is_single(’17′) 判斷是否是具體文章(id=17)的頁面

is_single(’Beef Stew’) 判斷是否是具體文章(標題判斷)的頁面

is_single(’beef-stew’) 判斷是否是具體文章(slug判斷)的頁面

comments_open() 是否留言開啓

 

wordpress 的主循環

 

 

pings_open() 是否開啓ping

is_page() 是否是頁面

is_page(’42′) 同single,id判斷,即是否是id爲42的頁面

is_page(’About Me’) title判斷

is_page(’about-me’) slug判斷

is_category() 是否是分類

is_category(’6′) 同single,id判斷,即是否是id爲6的分類

is_category(’Cheeses’) title判斷

is_category(’cheeses’) slug判斷

in_category(’5′) 判斷當前的文章是否屬於分類5

is_author() 將所有的作者的頁面顯示出來

is_author(’1337′) 顯示author number爲1337的頁面

is_author(’Elite Hacker’) 通過暱稱來顯示當前作者的頁面

is_author(’elite-hacker’)

is_date()

is_year()

is_month()

is_day()

is_time()

is_archive() 判斷當前是否是歸檔頁面

is_search() 判斷是否是搜索

is_404() 判斷頁面是否404

is_paged() 判斷是否翻頁,比如你當前的blog是http://domain.com顯示http://domain.com?paged=2的時候,這個判斷將返回真,通過這個函數可以配合is_home來控制某些只能在首頁顯示的界面,例如: if (is_home() && !is_paged() )

is_attachment() //判斷是否是附件
 

wordpress 的主循環

<?php if ( have_posts() ) :
    while ( have_posts() ) : the_post();
        the_title();
    endwhile;
endif; ?>

基礎用法

<?php
// WP_Query 所使用的參數
$args = array( 'posts_per_page' => 3 );
 
// 調用 WP_Query 新建文章查詢.
$the_query = new WP_Query( $args );
 
if ( $the_query->have_posts() ) :
    // 開始循環
    while ( $the_query->have_posts() ) : $the_query->the_post();
        the_title();
        the_excerpt();
    // 結束循環
    endwhile;
else:
    _e( '抱歉,未找到您需要的文章。', 'textdomain' );
endif;
 
wp_reset_postdata();
?>

 

 

 

<?php
/**
* WordPress 查詢綜合參考
*
* 官方文檔: http://codex.wordpress.org/Class_Reference/WP_Query
* 源代碼: http://core.trac.wordpress.org/browser/tags/3.5.1/wp-includes/query.php
*/
 
$args = array(
 
/**
* 作者參數 - 顯示某些作者發表的文章
*/
'author' => '1,2,3,' //(整數) - 作者ID [使用減號 (-) 排除某個作者 ID, 如: 'author' => '-1,-2,-3,']
'author_name' => 'luetkemj', //(字符串) - 使用 'user_nicename' 用戶暱稱,(不是名稱)
 
/**
* 分類參數 - 顯示某個分類裏面的文章
*/
'cat' => 5,//(整數) - 分類id
'category_name' => 'staff', 'news', //(字符串) - 分類別名(不是名稱)
'category__and' => array( 2, 6 ), //(數組) - 分類id
'category__in' => array( 2, 6 ), //(數組) - 分類id
'category__not_in' => array( 2, 6 ), //(數組) - 分類id
 
/**
* 標籤參數 - 顯示含有某些標籤的文章
*/
'tag' => 'cooking', //(字符串) - 標籤別名
'tag_id' => 5, //(整數) -標籤id
'tag__and' => array( 2, 6), //(數組) - 標籤id
'tag__in' => array( 2, 6), //(數組) - 標籤id
'tag__not_in' => array( 2, 6), //(數組) - 標籤id
'tag_slug__and' => array( 'red', 'blue'), //(數組) - 標籤別名
'tag_slug__in' => array( 'red', 'blue'), //(數組) - 標籤別名
 
/**
* 自定義分類法參數 - 顯示某些自定義分類法裏面的文章
* 重要提示: tax_query 使用多維數組
* 這種查詢結構允許我們查詢多個自定義分類法
*/
'tax_query' => array( //(數組) - 使用自定義分類法查詢參數 (3.1及以後版本可用).
  'relation' => 'AND', //(字符串) - 可用的值有 'AND' 或 'OR' 和 SQL 的 JOIN 作用是相同的
  array(
    'taxonomy' => 'color', //(字符串) - 自定義分類法
    'field' => 'slug', //(字符串) - 使用別名還是分類作爲查詢條件 ('id' 或 'slug')
    'terms' => array( 'red', 'blue' ), //(整數/字符串/數組) - 自定義分類法分類條目
    'include_children' => true, //(布爾值) - 是否包含自分類,默認爲真
    'operator' => 'IN' //(字符串) - 測試條件,可用值爲 'IN', 'NOT IN', 'AND'.
  ),
  array(
    'taxonomy' => 'actor',
    'field' => 'id',
    'terms' => array( 103, 115, 206 ),
    'include_children' => false,
    'operator' => 'NOT IN'
   )
),
 
/**
* 文章 & 頁面參數- 基於文章或頁面參數顯示文章
*/
'p' => 1, //(整數) - 文章id
'name' => 'hello-world', //(字符串) - 文章別名
'page_id' => 1, //(整數) - 頁面id
'pagename' => 'sample-page', //(字符串) - 頁面別名
'pagename' => 'contact_us/canada', //(字符串) - 用斜槓‘/’分割的父頁面別名/子頁面別名來顯示子頁面
'post_parent' => 1, //(整數) - 頁面id,只返回子頁面,只對有子頁面的頁面有效
'post__in' => array(1,2,3), //(數組) - 需要顯示的文章的id
'post__not_in' => array(1,2,3), //(數組) - 需要排除的文章的id
//注意:不能在同一個查詢裏同時使用 'post__in' 和 'post__not_in'
 
/**
* 文章類型 & 狀態參數 - 顯示某些文章類型裏面的文章
*/
'post_type' => array( //(字符串/ 數組) - 文章類型,根據文章類型獲取文章,默認爲'post'
    'post', // - 文章
    'page', // - 頁面
    'revision', // - 文章版本
    'attachment', // - 附件,默認 WP_Query 設置了發佈狀態爲 'post_status'=>'published', 但是附件默認爲 'post_status'=>'inherit',所以你需要設置狀態爲 'inherit' 或'any'.
    'my-post-type', // - 自定義文章類型 (例如:movies)
),
'post_status' => array( //(字符串 / 數組) - 使用文章狀態,根據文章狀態獲取文章,默認爲 'publish'
    'publish', // - 已發佈的文章或頁面
    'pending', // -等待複審的文章
    'draft', // - 處於草稿狀態的文章
    'auto-draft', // - 自動保存爲草稿的文章
    'future', // - 定時發佈的文章
    'private', // - 未登錄用戶不能查看的私有文章
    'inherit', // - 版本. 具體參考 get_children.
    'trash' // - 回收站中的文章 (2.9和以後的版本可用).
),
 
//注意:The 'any' 關鍵字可以用在 post_type 和 post_status 查詢,但是不能在數組中使用
'post_type' => 'any', // - 獲取所有文章類型裏面的文章,除了版本和文章類型參數'exclude_from_search'設置爲true的文章類型
'post_status' => 'any', // - 獲取處於所有文章狀態的文章,除了版本和文章類型參數'exclude_from_search'設置爲true的文章類型
 
/**
* 分頁參數
*/
'posts_per_page' => 10, //(整數) - 每頁顯示的文章數量 (2.1和以後的版本可用), 使用'posts_per_page'=-1 顯示所有文章,如果查詢處於訂閱源中,WordPress用 'posts_per_rss' 選項覆蓋了這裏的設置,需要使用這個限制,嘗試使用 'post_limits' 過濾器,或使用 'pre_option_posts_per_rss'過濾器返回 -1
'posts_per_archive_page' => 10, //(整數) - n每頁顯示的文章數量 - 只在存檔頁面使用,在存檔頁面和搜索結果頁面覆蓋了 showposts 和 posts_per_page 參數
'nopaging' => false, //(布爾值) - 在一頁顯示所有文章或使用分頁,默認值爲 'false', 使用分頁
'paged' => get_query_var('paged'), //(整數) - 頁數,分頁時顯示第幾頁
//注意:使用 get_query_var('page'); 如果查詢在設置爲首頁的頁面模版中工作,查詢參數 'page' 擁有文章分頁或內容中使用 <!--nextpage--> 快捷代碼的分頁。
 
/**
* 偏移參數
*/
'offset' => 3, //(int) - 跳過的文章數量
 
/**
* 排序 & 排序方式參數 - 對獲取的文章進行排序
*/
'order' => 'DESC', //(字符串) - 設置 'order_by' 參數升序或降序排列. 默認爲'DESC'.
//Possible Values:
//'ASC' - 升序排列,從小到大 (1, 2, 3; a, b, c).
//'DESC' - 降序排列,從大到小 (3, 2, 1; c, b, a).
'orderby' => 'date', //(字符串) - 排序依據. 默認爲 'date'.
//可用的參數有://
//'none' - 不排序 (2.8和以後的版本可用)
//'ID' - 根據ID排序,注意ID是大寫的
//'author' - 根據作者排序
//'title' - 根據標題排序
//'date' - 根據發表時間排序
//'modified' - 根據最後修改時間排序
//'parent' - 根據父頁面排序
//'rand' - 隨機排序
//'comment_count' - 根據評論數量排序 (2.9和以後的版本可用).
//'menu_order' - 根據頁面序號排序. 通常在頁面中使用 (編輯頁面時有一個頁面序號的字段) 和附件 ( 插入 / 上傳媒體相冊對話框中的數字), 但是不能對文章類型 'menu_order' 使用數字值 (默認都爲 0).
//'meta_value' - 注意'meta_key=keyname' 必須也出現在查詢中. 注意排序是按照字母表順序進行的。(如:words),但是數字排序可能會有問題 (如:1, 3, 34, 4, 56, 6, etc, 而不是你希望的:1, 3, 4, 6, 34, 56)。
//'meta_value_num' - 根據數字meta值排序 (2.8和以後的版本中可用). 同時需要注意'meta_key=keyname' 也要在查詢中聲明。這個值和上面說明的 'meta_value' 一樣,只不過值允許使用數字排序。
//'title menu_order' - 同時使用 menu_order 和 title 排序 更多信息請參考:http://wordpress.stackexchange.com/questions/2969/order-by-menu-order-and-title
//'post__in' - 使用 post__in 數組中制定的 ID 順序 (3.5以後的版本中可用).
 
/**
* 置頂文章參數 - 顯示或忽略置頂文章
*/
'ignore_sticky_posts' => false, //(布爾值) - 是否忽略置頂文章,默認爲假不忽略. 在返回文章的開頭忽略/排除置頂文章,但是置頂文章還是會在自然查詢中列出。
//注意:關於置頂文章的更多信息,請參考:http://codex.wordpress.org/Class_Reference/WP_Query#Sticky_Post_Parameters
 
/**
* 時間參數 - 顯示某個時間段內的文章
*/
'year' => 2012, //(int) - 4 個數字的年份 (如:2011)
'monthnum' => 3, //(int) - 月份數字 (從 1 到 12)
'w' => 25, //(int) - 一年中的第幾周 (從 0 到 53), 使用 MySQL WEEK 命令,此模式和"start_of_week" 選項相關
'day' => 17, //(int) - 月中的天數 (從 1 到 31)
'hour' => 13, //(int) - 小時 (從 0 到 23).
'minute' => 19, //(int) - 分鐘 (從 0 到 60).
'second' => 30, //(int) - 秒 (從 0 到 60).
 
/**
* 自定義字段參數 - 顯示擁有某個自定義字段的文章
*/
'meta_key' => 'key', //(字符串) - 自定義字段的鍵
'meta_value' => 'value', //(字符串) - 自定義字段的值
'meta_value_num' => 10, //(數字) - 自定義字段的值
'meta_compare' => '=', //(字符串) - 測試'meta_value'的操作。可用的值有'!=', '>', '>=', '<', or ='. 默認爲 '='.
'meta_query' => array( //(數組) - 自定義字段參數 (3.1和以後的版本可用).
array(
    'key' => 'color', //(字符串) - 自定義字段的鍵
    'value' => 'blue', //(字符串/數組) - 自定義字段的值 (注意:數組的支持僅限於一個比較值: 'IN', 'NOT IN', 'BETWEEN', or 'NOT BETWEEN')
    'type' => 'CHAR', //(字符串) -自定義字段類型,可用的值有:'NUMERIC', 'BINARY', 'CHAR', 'DATE', 'DATETIME', 'DECIMAL', 'SIGNED', 'TIME', 'UNSIGNED',默認爲    'CHAR'
    'compare' => '=' //(字符串) - 測試的操作,可用的值有: '=', '!=', '>', '>=', '<', '<=', 'LIKE', 'NOT LIKE', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN'. 默認爲:'='
),
array(
    'key' => 'price',
    'value' => array( 1,200 ),
    'compare' => 'NOT LIKE'
)
 
/**
* 權限參數 - 顯示已發佈文章,如果用戶有合適的權限,同樣現實私有文章:
*/
'perm' => 'readable' //(字符串) 可用的值有:'readable', 'editable' (可能還有其他可用的值我沒有測試)
 
/**
* 與緩存相關的參數
*/
'no_found_rows' => false, //(布爾值) 默認爲假,爲了分頁,WordPress 在大多數查詢中使用 SQL_CALC_FOUND_ROWS 查詢, 即使你不需要分頁,通過設置這個參數爲真,我們告訴了了WordPress不要查詢數據總行數,從而降低數據庫負載,如果設置了這個參數爲真,分頁將不工作,更多信息請參考:http://flavio.tordini.org/speed-up-wordpress-get_posts-and-query_posts-functions
'cache_results' => true, //(布爾值) 默認爲真
'update_post_term_cache' => true, //(布爾值) 默認爲真
'update_post_meta_cache' => true, //(布爾值) 默認爲真
//注意:緩存是個好東西,通常不建議設爲假,更多信息請參考:http://codex.wordpresorg/Class_Reference/WP_Query#Permission_Parameters
 
/**
* 搜索參數
*/
's' => $s, //(字符串) - 傳遞搜索變量到搜索功能,更多信息請參考: http://www.wprecipes.com/how-to-display-the-number-of-results-in-wordpress-search
'exact' => true //(布爾值) - 只匹配完整的titles/posts的信號 - 默認值爲假,更多信息請參考:https://gist.github.com/2023628#gistcomment-285118
'sentence' => true //(布爾值) - 進行短語搜索的信號-默認值爲假,更多信息請參考:https://gist.github.com/2023628#gistcomment-285118
 
/**
* 文章字段參數
*/
//關於文章字段參數信息,請參考http://codex.wordpress.org/Class_Reference/WP_Query#Post_Field_Parameters
 
/**
* 過濾器
*/
//關於過濾器的更多信息,請參考:http://codex.wordpress.org/Class_Reference/WP_Query#Filters
 
);
 
$the_query = new WP_Query( $args );
 
// 循環開始
if ( $the_query->have_posts() ) :
    while ( $the_query->have_posts() ) : $the_query->the_post();
        // 輸出內容
    endwhile;
endif;
 
// 重置文章數據
wp_reset_postdata();
 
?>

 

調用例子

<?php
 // 1.用於查詢的參數或者參數集合
$args = array(
  'post_type'=>'post'
);
// 2.查詢
$query=new WP_Query($args);
 
// 3.判斷查詢的結果,有內容則循環
if($query->have_posts()):while($query->have_posts()):$query->the_post();
?>
 
//輸出循環結構
<?php the_title();?>
 
<?php
endwhile;
endif;
// 4.重置請求數據
wp_reset_postdata();
?>

調用 id 爲 36 的單篇文章的新建查詢


$args = array(
  'p'=>'36'
);
$query = new WP_Query( $args  );

等同於

$query = new WP_Query( 'p=36' );

調用指定 page 頁面或 category 分類頁可以用類似的寫法
$query = new WP_Query( 'cat=9' );//調用指定分類的文章
$query = new WP_Query( 'page_id=7' );//指定page頁面


調用 id 爲 343230 的文章
$args = array(
  'post__in'=>array(34,32,30)
);


post__in 默認調用的是文章信息,如果要調用頁面,則需要指定類型
$args = array(
'post_type'=>'page',
'post__in'=>array(3)
);

調用除了 id 爲 3 以外的文章
$args = array(
'post__not_in'=>array(3)
);

調用全部文章
$query = new WP_Query( 'post_type=post' );

調用全部頁面

$query = new WP_Query( 'post_type=page' );

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章