1
我試圖掛鉤WordPress的send_headers
功能,所以我可以檢查是否請求sitemap.xml
。這樣,我可以提供一個自定義的PHP函數來根據WordPress的帖子和頁面自動生成XML。WordPress發送404時掛接到send_headers
add_action('send_headers', 'custom_send_headers');
if(!function_exists('custom_send_headers')) :
function custom_send_headers()
{
global $route, $wp_query, $window_title;
$bits = explode("/", $_SERVER['REQUEST_URI']);
if($bits[1] === 'sitemap.xml')
{
if ($wp_query->is_404) {
$wp_query->is_404 = false;
}
include('sitemap.php');
die();
}
}
endif;
一切正常服務了,而我的PHP文件包括相應的頭:
<?php header('Content-Type: application/xml'); ?>
<?php echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
....
</urlset>
爲什麼WordPress的再送404?
我試過使用WordPress模板,但似乎沒有工作。
$template = locate_template('sitemap.php');
load_template($template);
是否還有其他的功能我應該掛鉤?我錯過了我應該做的其他事情嗎?
你有沒有註冊'sitemap.xml'重寫規則? – Scuzzy
你是否建議我手動修改我的.htaccess文件?我試圖避免這一點,因此掛鉤到WordPress的標題。 – Quantastical
由於您規避了發送內容的常規方法,因此您可能仍需要發送'200 OK'標頭。你可以試試'header(「HTTP/1.1 200 OK」);''include'之前'嗎? – Scuzzy