wordpress在重寫sitemap提交給百度的例子

其實wordpress有自己的sitemap了,但是升級php7之後會發現這個sitemap不兼容了,下面我們來看一篇關于php生成sitemap的例子。

在之前我的是sitemap的一個插件,用起來非常的不爽,每次都要手動去生成sitemap,以我每天更新文章的頻率每天都要點一下,感覺太麻煩了,不點的話百度站長平台裏的sitemap就不會更新

wordpress在重寫sitemap提交給百度的例子

這不影響收錄嗎,于是想這個重寫一個sitemap.php,然後僞靜態成sitemap.xml,這種方式之前做電子商務網站的時候就這麽搞的,後來可能對百度蜘蛛不太友好想了想換了種方式,用定時腳步定時生成sitemap.xml
但是一直都沒有這麽做,心裏默念湊合用用于是就這麽過來了,就在升級到php7之後,發現插件有問題,點擊生成sitemap的時候空白頁,應該是有函數不支持或者沒有啓用,那就直接重寫個sitemap

下面我把其中的代碼分享一下

代碼如下
<?php
require_once( dirname( __FILE__ ) . '/wp-load.php' );

$lc_blog_url = home_url();
$blogtime = current_time('timestamp', Ƈ');
$lc_blog_time = date("Y-m-d\TH:i:s+00:00",$blogtime);
$befor_day=date("Y-m-d H:i:s",strtotime("-1 day"));

$site_xml='
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:mobile="http://www.baidu.com/schemas/sitemap-mobile/1/">'

$site_xml.= "$lc_blog_url$lc_blog_timedaily1.0";

$sql_mini = "select ID,post_modified,post_date,post_type,post_title FROM $wpdb->posts
WHERE post_password = ''
AND (post_type='post' or post_type='page')
AND post_status = 'publish'
ORDER BY post_modified DESC
";
$recentposts_mini = $wpdb->get_results($sql_mini);
if($recentposts_mini){
foreach ($recentposts_mini as $post){

if( $post->post_type == 'page' ){
$loc = get_page_link($post->ID);
$loc=sitemap_xml($loc);
if(!$loc){ continue; }
if($post->post_modified == 񟍰-00-00 00:00:00'){ $post_date = $post->post_date; } else { $post_date = $post->post_modified; }
$lastmod = date("Y-m-d\TH:i:s+00:00",strtotime($post_date));
$changefreq = 'weekly'
$priority = Ɔ.3'
$xml_contents_page .= "";
$xml_contents_page .= "$loc";
$xml_contents_page .= ''
$xml_contents_page .= "$lastmod";
$xml_contents_page .= "$changefreq";
$xml_contents_page .= "$priority";
$xml_contents_page .= "
";
$html_contents .= '
  • '.$post->post_title.'

  • '


  • }else{


  • $loc = get_permalink($post->ID);



  • $loc = sitemap_xml($loc);


  • if(!$loc){ continue; }


  • if($post->post_modified == 񟍰-00-00 00:00:00'){ $post_date = $post->post_date; } else { $post_date = $post->post_modified; } ##$post->post_date_gmt


  • $lastmod = date("Y-m-d\TH:i:s+00:00",strtotime($post_date));


  • $changefreq = 'monthly'


  • $priority = Ɔ.6'


  • $xml_contents_post .= "

  • ";
    $xml_contents_post .= "$loc";
    $xml_contents_post .= ''
    $xml_contents_post .= "$lastmod";
    $xml_contents_post .= "$changefreq";
    $xml_contents_post .= "$priority";
    $xml_contents_post .= "
  • ";



  • $html_contents .= '

  • '.$post->post_title.'

  • '



  • if($post->post_date>$befor_day || $post->post_modified>$befor_day){



  • $tags = wp_get_post_tags($post->ID);


  • foreach($tags as $this_tag){


  • $loc = get_tag_link($this_tag->term_id);


  • $loc = sitemap_xml($loc);




  • if(!$loc){ continue; }


  • $lastmod = date("Y-m-d\TH:i:s+00:00",current_time('timestamp', Ƈ'));


  • $changefreq = 'Weekly'


  • $priority = Ɔ.3' $xml_contents_post .= "

  • ";
    $xml_contents_post .= "$loc";
    $xml_contents_post .= ''
    $xml_contents_post .= "$lastmod";
    $xml_contents_post .= "$changefreq";
    $xml_contents_post .= "$priority";
    $xml_contents_post .= "
  • ";


  • $not_tags[$tags->term_id]=1;


  • }


  • }



  • }



  • }


  • }


  • #欄目


  • $category_ids = get_all_category_ids();


  • if($category_ids){


  • foreach($category_ids as $cat_id) {


  • $loc = get_category_link($cat_id);


  • $loc = sitemap_xml($loc);


  • if(!$loc){ continue; }


  • $lastmod = date("Y-m-d\TH:i:s+00:00",current_time('timestamp', Ƈ'));


  • $changefreq = 'Weekly'


  • $priority = Ɔ.3'


  • $xml_contents_cat .= "

  • ";
    $xml_contents_cat .= "$loc";
    $xml_contents_cat .= ''
    $xml_contents_cat .= "$lastmod";
    $xml_contents_cat .= "$changefreq";
    $xml_contents_cat .= "$priority";
    $xml_contents_cat .= "
  • ";


  • }


  • }


  • #tag



  • $all_the_tags = get_tags(array('orderby'=>'term_id','order'=>'desc'));


  • if($all_the_tags){


  • foreach($all_the_tags as $this_tag) {



  • $tag_id = $this_tag->term_id;


  • if($not_tags[$tag_id]){


  • continue;


  • }



  • $loc = get_tag_link($tag_id);


  • $loc = sitemap_xml($loc);


  • if(!$loc){ continue; }


  • $lastmod = date("Y-m-d\TH:i:s+00:00",current_time('timestamp', Ƈ'));


  • $changefreq = 'Weekly'


  • $priority = Ɔ.3'


  • $xml_contents_tag .= "

  • ";
    $xml_contents_tag .= "$loc";
    $xml_contents_tag .= ''
    $xml_contents_tag .= "$lastmod";
    $xml_contents_tag .= "$changefreq";
    $xml_contents_tag .= "
    $priority";
    $xml_contents_tag .= "
  • ";


  • }


  • }


  • $xml_contents = $xml_contents_post.$xml_contents_page.$xml_contents_cat.$xml_contents_tag;


  • $site_xml= $site_xml.$xml_contents.'

  • '


  • file_put_contents("sitemap.xml",$site_xml);



  • function sitemap_xml($string) {


  • return str_replace ( array ( '&', '"', "'", '<', '>'), array ( '&' , '"', '&apos;' , '<' , '>'), $string);


  • }


把上面的代碼保持到根目錄下sitemap.php裏,然後用定時腳步執行sitemap.php
wordpress又少了個插件,對wordpress的速度可能有所提升何樂而不爲

更多相關文章
  • php curl的好處可以以最快的方式並且模仿post提供我們的url地址給百度搜索引擎進行收錄了,下面來看一個官方的例子吧.百度鏈接提交三種方式:1.主動推送:最爲快速的提交方式,推薦您將站點當天新産出鏈接立即通過此方式推送給百度,以保證新鏈接可以及時被百度收錄.2.sitemap:您可以定期將網
  • 本文是我人總結的幾種php的開源系統在nginx下的重寫規則,其中php程序包括:CI/yii/CakePHP/Symfony/wordpress/Drupal,要在nginx下配置這些重寫的可以拿走.CI nginx重寫規則server { listen 80; server_name ttlsa
  • 下文中整理了在nginx中配置wordpress博客的URL重寫規則了,包括了整站配置與固定鏈接配置了,下面我們就一起來看看吧配置代碼 代碼如下 server {listen 80;server_name www.1
  • WordPress使用Node.js 重寫的例子
    文章來爲各位介紹一個簡單的WordPress使用Node.js 重寫的例子,希望這個例子可以幫助到各位朋友. 要 WordPress 4.3 完全拒絕 PHP 還是不可能的,但是開發者計劃重寫一些基本的核心類,包括 WP_Query .WP_Erro.和 WP_Object_Cache. 值得注意的
  • 網站僞靜態Rewrite重寫中文路徑時亂碼
    僞靜態如果使用直接中文對于搜索引擎不好的同時我們獲取也經常會出現亂碼,有時從google過來正常,但在百度又是亂碼,有時使用360亂碼在ff浏覽器所有搜索引擎都沒問題了,爲了解決這個問題下面我們來總結一下我的分析過程一.問題的由來.URL就是網址,只要上網,就一定會用到.一般來說,URL只能使用英文 ...
  • 小編一般很少使用htaccess了,因爲一台伺服器一個網站所以都會直接在apache中配置像URL重寫(Rewrite)與301重定向(Redirect)了,但如果各位站長有多個站可以開啓在站點根目錄配置了,這個我們只要讓apache支持.htaccess即可了,具體步驟如下.URL重定向是.hta
  • 下面是自己學習java時總結一些關于Java override方法重寫學習筆記,下面記錄一下同時也給需要學習了解的朋友一些幫助哦.重載Overload 表示同一個類中可以有多個名稱相同的方法,但這些方法的參數列表各不
  • asp.net Url Rewriting 地址重寫方法(1/6)
    在探討如何實現網址重寫這項技術之前,很有必要了解一下iis是處理所接收的web請求的機制. 當一個web請求到達iis web伺服器時,iis會根據所請求的文件後綴名來決定如何處理該請求,iis可以處理諸如html頁面.圖片.靜態內容,或者將請求轉發給isapi應 用程序,由該isapi應用程序處理 ...
一周排行
  • 三星T360如何刪除其他用戶
    Galaxy Tab Active如何刪除其他用戶?(T360)三星平板T360可以像電腦
  • Win8.1怎麽設置USB關機充電
    USB關機充電的就是我們在系統中設置好之後我們就是把電腦關機了,我也可以利用usb給其它設
  • Giga Image Viewer插件是基于jquery的一個描點插件了,我們可以利用它來在圖片實現描點效果,下面我們一起來看看例子吧.我就把代碼都down下來,並且處理了一下.其實作者還是提供了很多方便的API,(
  • 如果你直接使用PHP CURL函數來抓取http內容可能沒有任何問題了,但是如果你要正抓取的是https文件才會發現本文章幫你解決了一個大難題了,下面我們來看看具體操作過程.三年前寫過一篇<一個簡陋的支持HTT ...
  • MYSQL 出現Error 1045 access denied 原因與解決方法操作系統:windows-xp 系統數據庫教程版本:mysql教程 5.x提示:access denied for user 'root
  • 本文章轉載一篇關于MySQL Order By Rand()效率分析,有需要了解的朋友可參考參考.大家一般的寫法就是:SELECT * FROM content ORDER BY RAND() LIMIT 1.[飄易 ...
  • 在jquery中提交表單可以使用$.post帶參數直接實現post提交數據,也可以利用ajax的type=post來實現post提交數據,下面我來介紹一下jquery $.post方法在jquery中有這樣一個方法,
  • 本文章來給各位同學介紹在MySQL SQL UPDATE語句出現#1093錯誤解決辦法,有碰互此問題的朋友不防進入參考參考.我使用了這樣一個SQL: 代碼如下 UPDATE `student_quiz_answer` ...
  • 今天在mac中打開word文檔時提示 Microsoft Word 時遇到了問題,需要關閉,出現這種問題的原因有很多,下面我來分析一下.故障現象:在啓動Mac 2011 或 2008年的 Microsoft Word ...
  • 逆戰S3啓航藍鑽抽獎活動解析一覽
    在逆戰這一款遊戲裏面,新的活動和各位玩家們見面啦,那就是S3啓航藍鑽抽獎,那麽這次活動到底