WordPress5.5默認(rèn)地圖(sitemap)使用教程

[重要通告]如您遇疑難雜癥,本站支持知識(shí)付費(fèi)業(yè)務(wù),掃右邊二維碼加博主微信,可節(jié)省您寶貴時(shí)間哦!

WordPress 5.5開始官方內(nèi)置了站點(diǎn)地圖,那么WordPress 5.5的內(nèi)置網(wǎng)站地圖怎么使用呢?若不想使用它該怎么操作呢?下面一起來看看官方文檔的解釋。注:如果不需要,建議禁用此功能。

完全禁用所有WP網(wǎng)站地圖

您可以通過在functions.php文件向主題模板或子主題添加同一行代碼來徹底禁用WP自帶的站點(diǎn)地圖功能:

add_filter('wp_sitemaps_enabled', '__return_false');

在這里所做的只是向過濾器掛鉤wp_sitemaps_enabled返回的值false,就可以禁用了。注意:如果您更新WordPress常規(guī)設(shè)置以阻止搜索引擎將您的網(wǎng)站編入索引,則站點(diǎn)地圖將被自動(dòng)禁用。因此,在那種情況下,無需使用任何插件或代碼來禁用它。

禁用用戶站點(diǎn)地圖

對(duì)于大多數(shù)網(wǎng)站來說,排除/禁用整個(gè)用戶站點(diǎn)地圖以幫助提高安全性可能是一個(gè)好主意。以下是實(shí)現(xiàn)該功能的代碼:

// disable users sitemap
function shapeSpace_disable_sitemap_users($provider, $name) {

return ($name == 'users') ? false : $provider;

}
add_filter('wp_sitemaps_add_provider', 'shapeSpace_disable_sitemap_users', 10, 2);

此代碼段無需編輯。只需添加到您的WordPress主題functions.php功能即可。

禁用文章類型站點(diǎn)地圖

默認(rèn)情況下,WordPress站點(diǎn)地圖包括每種(非空)文章類型的站點(diǎn)地圖;對(duì)于典型的WordPress網(wǎng)站,這意味著站點(diǎn)地圖將包含指向以下站點(diǎn)地圖的鏈接:

URL
https://example.com/wp-sitemap-posts-post-1.xml
https://example.com/wp-sitemap-posts-page-1.xml

以及任何自定義文章類型:
https://example.com/wp-sitemap-posts-movie-1.xml
https://example.com/wp-sitemap-posts-book-1.xml

因此,要排除任何“文章”類型的站點(diǎn)地圖,請(qǐng)將以下代碼添加到您的主題(或簡(jiǎn)單的插件)中:

// disable post type sitemap
function shapeSpace_disable_sitemap_post_types($post_types) {

unset($post_types['page']); // 可以修改page為你需要的自定義文章類型

return $post_types;

}
add_filter('wp_sitemaps_post_types', 'shapeSpace_disable_sitemap_post_types');

如所寫,該代碼禁用了page文章類型。因此,您可以將其更改為您要排除的任何文章類型。只需更換page您的文章類型名稱(如post,movie,book,等)。

禁用分類法站點(diǎn)地圖

默認(rèn)情況下,WordPress網(wǎng)站地圖包含每個(gè)(非空)分類法的網(wǎng)站地圖。對(duì)于典型的WordPress網(wǎng)站,這意味著您的站點(diǎn)地圖將包含指向以下站點(diǎn)地圖的鏈接:

URL

https://example.com/wp-sitemap-taxonomies-category-1.xml
https://example.com/wp-sitemap-taxonomies-post_tag-1.xml

以及任何自定義分類法:

https://example.com/wp-sitemap-taxonomies-color-1.xml
https://example.com/wp-sitemap-taxonomies-shape-1.xml

因此,要排除任何“分類”站點(diǎn)地圖,請(qǐng)?jiān)谥黝}(或簡(jiǎn)單插件)中添加以下代碼:

// disable taxonomy sitemap
function shapeSpace_disable_sitemap_taxonomy($taxonomies) {

unset($taxonomies['post_tag']); // can be post_tag, category, post_format, or any taxonomy

return $taxonomies;

}
add_filter('wp_sitemaps_taxonomies', 'shapeSpace_disable_sitemap_taxonomy');

如所寫,該代碼禁用了post_tag分類法。因此,您可以將其更改為要排除的任何分類法。只需更換post_tag你的分類的名稱(例如category,post_format,color,book,等)。

從站點(diǎn)地圖中排除特定頁面

要從WordPress網(wǎng)站地圖中排除特定頁面,請(qǐng)應(yīng)用以下代碼技術(shù):

// disable specific page
function shapeSpace_disable_sitemap_specific_page($args, $post_type) {

if ('page' !== $post_type) return $args;

$args['post__not_in'] = isset($args['post__not_in']) ? $args['post__not_in'] : array();

$args['post__not_in'][] = 2; // exclude page with ID = 2

return $args;

}
add_filter('wp_sitemaps_posts_query_args', 'shapeSpace_disable_sitemap_specific_page', 10, 2);

注意函數(shù)中的第一行,它檢查$post_type是否為page。這告訴函數(shù)不要執(zhí)行任何操作,除非當(dāng)前的帖子類型是“頁面”。因此,要從其他文章類型中排除文章,請(qǐng)更改page為要定位的任何文章類型的名稱。

函數(shù)中的第二行檢查以確保post__not_in已設(shè)置變量。然后第三行是動(dòng)作發(fā)生的地方。在編寫代碼時(shí),該代碼排除了ID等于2的頁面。因此,您可以將該ID更改為要從站點(diǎn)地圖中排除的任何頁面ID。

要排除多個(gè)頁面,上述技術(shù)將是相同的,但是增加了更多的“排除”行:

// disable specific pages
function shapeSpace_disable_sitemap_specific_pages($args, $post_type) {

if ('page' !== $post_type) return $args;

$args['post__not_in'] = isset($args['post__not_in']) ? $args['post__not_in'] : array();

$args['post__not_in'][] = 2; // exclude page with ID = 2
$args['post__not_in'][] = 3; // exclude page with ID = 3
$args['post__not_in'][] = 4; // exclude page with ID = 4
$args['post__not_in'][] = 5; // exclude page with ID = 5
$args['post__not_in'][] = 6; // exclude page with ID = 6

return $args;

}
add_filter('wp_sitemaps_posts_query_args', 'shapeSpace_disable_sitemap_specific_pages', 10, 2);

編寫此代碼的方法可能更短一些,但是為了清楚起見,我將其按原樣呈現(xiàn)。

從站點(diǎn)地圖中排除特定文章

與以前的技術(shù)類似,要從自動(dòng)生成的WordPress網(wǎng)站地圖中排除特定的文章,請(qǐng)執(zhí)行以下操作:

// disable specific post
function shapeSpace_disable_sitemap_specific_post($args, $post_type) {

if ('post' !== $post_type) return $args;

$args['post__not_in'] = isset($args['post__not_in']) ? $args['post__not_in'] : array();

$args['post__not_in'][] = 1; // exclude post with ID = 1

return $args;

}
add_filter('wp_sitemaps_posts_query_args', 'shapeSpace_disable_sitemap_specific_post', 10, 2);

和以前一樣。僅在此處注意函數(shù)中的第一行,我們正在檢查a是否$post_type等于post。然后魔術(shù)發(fā)生在第三行,我們排除了ID等于1的文章(著名的“ Hello World”文章)。因此,將該ID更改為您要排除并完成的任何文章。

要排除多個(gè)帖子,上述技術(shù)將是相同的,但是增加了更多的“排除”行:

// disable specific posts
function shapeSpace_disable_sitemap_specific_posts($args, $post_type) {

if ('post' !== $post_type) return $args;

$args['post__not_in'] = isset($args['post__not_in']) ? $args['post__not_in'] : array();

$args['post__not_in'][] = 1; // exclude post with ID = 1
$args['post__not_in'][] = 2; // exclude post with ID = 2
$args['post__not_in'][] = 3; // exclude post with ID = 3
$args['post__not_in'][] = 4; // exclude post with ID = 4
$args['post__not_in'][] = 5; // exclude post with ID = 5

return $args;

}
add_filter('wp_sitemaps_posts_query_args', 'shapeSpace_disable_sitemap_specific_posts', 10, 2);

這一切都非常簡(jiǎn)單,這要?dú)w功于WordPress核心開發(fā)人員,他們?yōu)槲覀兲峁┝朔浅l`活的API,可以自定義。

根據(jù)元字段排除文章

也可以根據(jù)其附加的元數(shù)據(jù)排除特定的文章。例如,如果您的文章有一個(gè)名為sitemap的元字段。并且您只想包含sitemap值為1的文章。添加以下代碼以使其實(shí)現(xiàn):

// disable post based on meta field
function shapeSpace_disable_sitemap_post_meta($args, $post_type) {

if ('post' !== $post_type) return $args; // can be any post type

$args['meta_query'] = isset($args['meta_query']) ? $args['meta_query'] : array(); 

$args['meta_query'][] = array(

'key' => 'sitemap', // can be any meta key
'value' => '1', // can be any meta value
'compare' => '=', // can use any comparison
);

return $args;

}
add_filter('wp_sitemaps_posts_query_args', 'shapeSpace_disable_sitemap_post_meta');

對(duì)于這項(xiàng)技術(shù),我們?cè)俅问褂脀p_sitemaps_posts_query_args過濾器掛鉤。可以修改該技術(shù)以匹配幾乎任何文章集。查看Meta API,以更好地了解可能發(fā)生的情況。

檢查站點(diǎn)地圖是否已啟用

正如前面所述,在WordPress可以很容易地禁用/啟用的站點(diǎn)地圖功能。因此,如果您要自定義內(nèi)容,了解站點(diǎn)上是否啟用了WP?Sitemaps可能會(huì)很有用。這是執(zhí)行此操作的代碼:

if (wp_sitemaps_get_server()->sitemaps_enabled()) {

// sitemaps enabled

} else {

// sitemaps not enabled

}

此代碼使用wp_sitemaps_get_server()調(diào)用該sitemaps_enabled方法,該方法返回一個(gè)值,如果啟用了站點(diǎn)地圖則返回true,反之返回false。重要提示:所有此站點(diǎn)地圖功能僅在WordPress 5.5及更高版本中可用。因此,如果您正在開發(fā)任何插件或主題,請(qǐng)確保對(duì)任何較舊的WP版本使用條件檢查和適當(dāng)?shù)暮髠洹?/p>

從robots.txt中排除站點(diǎn)地圖規(guī)則

啟用站點(diǎn)地圖后,WordPress會(huì)自動(dòng)將以下規(guī)則添加到您站點(diǎn)的虛擬動(dòng)態(tài)生成的robots.txt文件中:

Sitemap: https://example.com/wp-sitemap.xml

該行告訴搜索引擎和漫游器在哪里可以找到您的站點(diǎn)地圖,這是一件好事。但是,出于某些原因,您想要自定義漫游器站點(diǎn)地圖規(guī)則,甚至完全禁用它。因此,如果您需要執(zhí)行此操作,請(qǐng)使用以下代碼從robots.txt排除站點(diǎn)地圖規(guī)則:

// do not add sitemap rule to robots.txt
function shapeSpace_disable_sitemap_robots($wp_sitemaps) {

remove_filter('robots_txt', array($wp_sitemaps, 'add_robots'));

}
add_action('wp_sitemaps_init', 'shapeSpace_disable_sitemap_robots');

初始化Sitemaps對(duì)象時(shí)會(huì)觸發(fā)wp_sitemaps_init鉤子。注意:如果“發(fā)現(xiàn)”搜索引擎無法訪問該網(wǎng)站,則未添加robots.txt站點(diǎn)地圖規(guī)則(由WP常規(guī)設(shè)置“搜索引擎可見性”確定)。因此,啟用該設(shè)置后,不需要上面的代碼。

問題未解決?付費(fèi)解決問題加Q或微信 2589053300 (即Q號(hào)又微信號(hào))右上方掃一掃可加博主微信

所寫所說,是心之所感,思之所悟,行之所得;文當(dāng)無敷衍,落筆求簡(jiǎn)潔。 以所舍,求所獲;有所依,方所成!

支付寶贊助
微信贊助

免責(zé)聲明,若由于商用引起版權(quán)糾紛,一切責(zé)任均由使用者承擔(dān)。

您必須遵守我們的協(xié)議,如您下載該資源,行為將被視為對(duì)《免責(zé)聲明》全部?jī)?nèi)容的認(rèn)可->聯(lián)系老梁投訴資源
LaoLiang.Net部分資源來自互聯(lián)網(wǎng)收集,僅供用于學(xué)習(xí)和交流,請(qǐng)勿用于商業(yè)用途。如有侵權(quán)、不妥之處,請(qǐng)聯(lián)系站長(zhǎng)并出示版權(quán)證明以便刪除。 敬請(qǐng)諒解! 侵權(quán)刪帖/違法舉報(bào)/投稿等事物聯(lián)系郵箱:service@laoliang.net
意在交流學(xué)習(xí),歡迎贊賞評(píng)論,如有謬誤,請(qǐng)聯(lián)系指正;轉(zhuǎn)載請(qǐng)注明出處: » WordPress5.5默認(rèn)地圖(sitemap)使用教程

發(fā)表回復(fù)

本站承接,網(wǎng)站推廣(SEM,SEO);軟件安裝與調(diào)試;服務(wù)器或網(wǎng)絡(luò)推薦及配置;APP開發(fā)與維護(hù);網(wǎng)站開發(fā)修改及維護(hù); 各財(cái)務(wù)軟件安裝調(diào)試及注冊(cè)服務(wù)(金蝶,用友,管家婆,速達(dá),星宇等);同時(shí)也有客戶管理系統(tǒng),人力資源,超市POS,醫(yī)藥管理等;

立即查看 了解詳情