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

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

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

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

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

add_filter('wp_sitemaps_enabled', '__return_false');

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

禁用用戶站點地圖

對于大多數(shù)網(wǎng)站來說,排除/禁用整個用戶站點地圖以幫助提高安全性可能是一個好主意。以下是實現(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功能即可。

禁用文章類型站點地圖

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

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

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

// 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,等)。

禁用分類法站點地圖

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

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

因此,要排除任何“分類”站點地圖,請在主題(或簡單插件)中添加以下代碼:

// 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,等)。

從站點地圖中排除特定頁面

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

// 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í)行任何操作,除非當前的帖子類型是“頁面”。因此,要從其他文章類型中排除文章,請更改page為要定位的任何文章類型的名稱。

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

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

// 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)。

從站點地圖中排除特定文章

與以前的技術類似,要從自動生成的WordPress網(wǎ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。然后魔術發(fā)生在第三行,我們排除了ID等于1的文章(著名的“ Hello World”文章)。因此,將該ID更改為您要排除并完成的任何文章。

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

// 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);

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

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

也可以根據(jù)其附加的元數(shù)據(jù)排除特定的文章。例如,如果您的文章有一個名為sitemap的元字段。并且您只想包含sitemap值為1的文章。添加以下代碼以使其實現(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');

對于這項技術,我們再次使用wp_sitemaps_posts_query_args過濾器掛鉤。可以修改該技術以匹配幾乎任何文章集。查看Meta API,以更好地了解可能發(fā)生的情況。

檢查站點地圖是否已啟用

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

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

// sitemaps enabled

} else {

// sitemaps not enabled

}

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

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

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

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

該行告訴搜索引擎和漫游器在哪里可以找到您的站點地圖,這是一件好事。但是,出于某些原因,您想要自定義漫游器站點地圖規(guī)則,甚至完全禁用它。因此,如果您需要執(zhí)行此操作,請使用以下代碼從robots.txt排除站點地圖規(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對象時會觸發(fā)wp_sitemaps_init鉤子。注意:如果“發(fā)現(xiàn)”搜索引擎無法訪問該網(wǎng)站,則未添加robots.txt站點地圖規(guī)則(由WP常規(guī)設置“搜索引擎可見性”確定)。因此,啟用該設置后,不需要上面的代碼。

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

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

支付寶贊助
微信贊助

免責聲明,若由于商用引起版權糾紛,一切責任均由使用者承擔。

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

發(fā)表回復

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

立即查看 了解詳情