這部分主要集中在wp_insert_post函數(shù)內(nèi),位于 wp-includes/post.php文件中;
創(chuàng)新互聯(lián)建站秉承實現(xiàn)全網(wǎng)價值營銷的理念,以專業(yè)定制企業(yè)官網(wǎng),成都網(wǎng)站建設(shè)、成都做網(wǎng)站,重慶小程序開發(fā)公司,網(wǎng)頁設(shè)計制作,成都手機網(wǎng)站制作,成都全網(wǎng)營銷推廣幫助傳統(tǒng)企業(yè)實現(xiàn)“互聯(lián)網(wǎng)+”轉(zhuǎn)型升級專業(yè)定制企業(yè)官網(wǎng),公司注重人才、技術(shù)和管理,匯聚了一批優(yōu)秀的互聯(lián)網(wǎng)技術(shù)人才,對客戶都以感恩的心態(tài)奉獻自己的專業(yè)和所長。
大致有wp_insert_post_data, edit_post, post_updated, save_post, wp_insert_post, transition_post_status等等,詳細信息還是看函數(shù)體內(nèi)吧。
大家都知道,輸入到WordPress的所有數(shù)據(jù)都將被保存在數(shù)據(jù)庫中,如果我們需要這些數(shù)據(jù),就要對數(shù)據(jù)庫進行查詢,然后輸出我們需要的數(shù)據(jù)。比如我們需要在首頁輸出網(wǎng)站的最新文章,或者在分類頁面輸出該分類的最新文章,又或者在文章頁面輸出詳細的文章內(nèi)容……
查詢數(shù)據(jù)庫的方法很多,較常用的有以下3種:使用pre_get_posts 動作、 query_posts() 函數(shù) 或 WP_Query 類。
pre_get_posts 動作
當你查詢數(shù)據(jù)庫的時候,Wordpress創(chuàng)建了一個全局變量 $query 。使用動作 pre_get_posts 就可以獲取 $query 變量并將其作為參數(shù)傳遞給回調(diào)函數(shù)。
要知道,pre_get_posts 可以用來獲取所有的數(shù)據(jù)庫信息,包括后臺管理區(qū)域,而且它可以多次使用,所以要獲取我們想要的數(shù)據(jù),我們需要對它進行判斷檢查。要檢查是否正在改變主查詢,我們可以使用函數(shù) is_main_query()。
1
2
3
4
if(is_main_query())
{
// Modify the query
}
盡管這樣,它還是會在后臺管理區(qū)域中被獲取,所以你還需要檢查是否在你希望的頁面輸出,比如,你要修改分類頁面的查詢,你就需要添加 is_category() 函數(shù)。
1
2
3
4
if(is_main_query() is_category())
{
// Modify the query
}
例如,如果你希望在首頁查詢中排除某些分類,你可以向下面一樣修改查詢:
1
2
3
4
5
6
add_action( 'pre_get_posts', 'exclude_category' );
function exclude_category( $query ) {
if ( $query-is_home() $query-is_main_query() ! $query-get( 'cat' ) ){
$query-set( 'cat', '-5' );
}
}
你還可以通過修改 posts_per_page 參數(shù)來修改通過查詢獲取的文章篇數(shù)
1
2
3
4
5
6
add_action( 'pre_get_posts', 'get_one_post' );
function get_one_post( $query ) {
if ( $query-is_home() $query-is_main_query() ){
$query-set( 'posts_per_page', 1 );
}
}
posts_per_page 是用來修改WordPress默認的查詢的,如果你需要添加額外的查詢,你就需要使用 WP_Query 類。
query_posts() 函數(shù)
query_posts() 是修改WordPress主查詢的另一種方法,這是最簡單的編輯數(shù)據(jù)庫查詢的方法,因為它會覆蓋默認的 $query 變量。但 query_posts() 不是最好的,也不是最有效的方法,更好的方式還是使用 posts_per_page 來修改主查詢。
就像 posts_per_page 一樣,你可以使用 query_posts() 來修改返回的文章數(shù)量,默認情況下,WordPress會返回 10 篇文章,你可以使用下面代碼修改為 1 篇:
1
2
3
4
5
6
7
8
9
10
?php
query_posts( 'posts_per_page=1' );
while ( have_posts() ) : the_post();
echo '
h1';
the_title();
echo '/h1
';
endwhile;
?
了解更多,請閱讀 WordPress函數(shù):query_posts
WP_Query 類
WP_Query 類 定義在 wp-includes/query.php 文件中,它是一個 類(class),用來查詢數(shù)據(jù)庫然后在我們想要的頁面輸出文章。WP_Query 會創(chuàng)建一個可以用在任何頁面的變量 $wp_query ,你可以通過多種方式來獲取查詢的信息。
最主要的方式是 $wp_query-have_posts() ,它可以在循環(huán)的內(nèi)部被 have_posts() 函數(shù)調(diào)用。你可以通過 the_post() ,在循環(huán)的內(nèi)部使用這個變量來獲取當前文章的信息。
1
2
3
4
5
6
7
8
$new_query = new WP_Query( $args );
// The Loop
while ( $new_query-have_posts() ) :
$new_query-the_post();
printf('
h1%s/h1
', get_the_title() );
endwhile;
WP_Query 類 還可以用來二次查詢數(shù)據(jù)庫,但你需要使用 wp_reset_postdata() 函數(shù) 來重置前一個查詢。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$new_query = new WP_Query( $args );
// The Loop
while ( $new_query-have_posts() ) :
$new_query-the_post();
printf('
h1%s/h1
', get_the_title() );
endwhile;
wp_reset_postdata();
$second_query = new WP_Query( $second_args );
// The Loop
while ( $second_query-have_posts() ) :
$second_query-the_post();
printf('
h1%s/h1
', get_the_title() );
endwhile;
wp_reset_postdata();
在 WordPress官方文檔中,介紹了不同的參數(shù)和方法,更多詳情請訪問 WP_Query 類。
這是他的一個機制。 當你使用wordpress進行開發(fā)后,就會發(fā)現(xiàn)hooks機制的優(yōu)越性。
如有疑問追問,如滿意記得采納,
如果有其他問題也可點我名字向我求助
答題不易,
如果沒有回答完全,請您諒解,
請采納最快回答的正確答案?。≈x謝!
一、定義:
do_action($tag, $arg);
//$tag是必須的,為創(chuàng)建的動作名稱;
//$arg 為要執(zhí)行的"動作";
二、do_action()在使用時一般配合dd_action()函數(shù)來使用,以下為實例:
//先定義echo_meta,輸出內(nèi)容
function echo_meta(){
echo 'meta name="description" content="提供wordpress教程" /';
//然后將echo_meta掛載到wp_meta上
add_action('wp_meta','echo_meta');
}
//然后去執(zhí)行wp_meta
function wp_meta() {
do_action('wp_meta');
}