国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > CMS > Wordpress > 正文

WordPress免插件生成完整站點(diǎn)地圖(sitemap.xml)的php代碼及實(shí)現(xiàn)方法

2024-09-07 00:49:48
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
這篇文章主要為大家詳細(xì)介紹了WordPress免插件生成完整站點(diǎn)地圖(sitemap.xml)的php代碼及實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,有需要的朋友可以收藏方便以后借鑒。

       站點(diǎn)地圖(sitemap.xml)的作用,相信站長(zhǎng)們都有所了解,這里織夢(mèng)模板小編就不多說(shuō)了。而免插件生成sitemap.xml,網(wǎng)絡(luò)上也早就有了純代碼生成的方法。

WordPress免插件生成完整站點(diǎn)地圖(sitemap.xml)的php代碼及實(shí)現(xiàn)方法

一直以來(lái),都是用DX-SEO這個(gè)很好用的中文SEO插件生成的sitemap。今天整理電腦文件時(shí),看到了以前收藏的生成sitemap.xml的php腳本,就隨手打開(kāi)看了看,發(fā)現(xiàn)這個(gè)代碼只能生成主頁(yè)和文章頁(yè)的sitemap。果斷百度了一下,發(fā)現(xiàn)網(wǎng)上分享的都大同小異,只有首頁(yè)和文章頁(yè)。感覺(jué)有點(diǎn)缺憾,反正今天也是閑著,就動(dòng)手改造了一番,讓這個(gè)代碼更加完善,可以同時(shí)生成首頁(yè)、文章、單頁(yè)面、分類和標(biāo)簽的sitemap!

一、PHP代碼

<?phprequire('./wp-blog-header.php');header("Content-type: text/xml");header('HTTP/1.1 200 OK');$posts_to_show = 1000;echo '<?xml version="1.0" encoding="UTF-8"?>';echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:mobile="http://www.baidu.com/schemas/sitemap-mobile/1/">'?>    <url>            <loc><?php echo get_home_url(); ?></loc>            <lastmod><?php $ltime = get_lastpostmodified(GMT);$ltime = gmdate('Y-m-dTH:i:s+00:00', strtotime($ltime)); echo $ltime; ?></lastmod>            <changefreq>daily</changefreq>            <priority>1.0</priority>    </url><?php/* 文章頁(yè)面 */$myposts = get_posts( "numberposts=" . $posts_to_show );foreach( $myposts as $post ) { ?>    <url>            <loc><?php the_permalink(); ?></loc>            <lastmod><?php the_time('c') ?></lastmod>            <changefreq>monthly</changefreq>            <priority>0.6</priority>    </url><?php } /* 文章循環(huán)結(jié)束 */ ?><?php/* 單頁(yè)面 */$mypages = get_pages();if(count($mypages) > 0) {        foreach($mypages as $page) { ?>        <url>            <loc><?php echo get_page_link($page->ID); ?></loc>            <lastmod><?php echo str_replace(" ","T",get_page($page->ID)->post_modified); ?>+00:00</lastmod>            <changefreq>weekly</changefreq>            <priority>0.6</priority>    </url><?php }} /* 單頁(yè)面循環(huán)結(jié)束 */ ?><?php/* 博客分類 */$terms = get_terms('category', 'orderby=name&hide_empty=0' );$count = count($terms);if($count > 0){foreach ($terms as $term) { ?>        <url>            <loc><?php echo get_term_link($term, $term->slug); ?></loc>            <changefreq>weekly</changefreq>            <priority>0.8</priority>    </url><?php }} /* 分類循環(huán)結(jié)束 */?><?php  /* 標(biāo)簽(可選) */$tags = get_terms("post_tag");foreach ( $tags as $key => $tag ) {    $link = get_term_link( intval($tag->term_id), "post_tag" );              if ( is_wp_error( $link ) )            return false;            $tags[ $key ]->link = $link;?>  <url>            <loc><?php echo $link ?></loc>            <changefreq>monthly</changefreq>            <priority>0.4</priority>    </url><?php } /* 標(biāo)簽循環(huán)結(jié)束 */ ?></urlset>

將以上代碼保存為sitemap.php,傳到網(wǎng)站根目錄,手動(dòng)訪問(wèn)查看效果。

二、偽靜態(tài)

①、Nginx

編輯已存在的Nginx偽靜態(tài)規(guī)則,新增如下規(guī)則后(平滑)重啟nginx即可:

rewrite ^/sitemap.xml$/sitemap.php last;

②、Apache

編輯網(wǎng)站根目錄的 .htaccess ,加入如下規(guī)則:

RewriteRule ^(sitemap).xml$ $1.php

做好偽靜態(tài)規(guī)則后,就可以直接訪問(wèn)sitemap.xml看看效果了。

三、純靜態(tài)

看到很多朋友已經(jīng)在問(wèn)這個(gè)sitemap如何靜態(tài)化,加快打開(kāi)速度。畢竟每次重新生成絕對(duì)是一個(gè)耗能大戶,而且還有可能被有心之人拿來(lái)作為攻擊入口!實(shí)現(xiàn)方法有多種,比如在Nginx的fastcgi緩存中取消xml文件的緩存屏蔽,或者使用博客最早使用的php生成靜態(tài)文件等。

在這里,我就分享一個(gè)自己一直在用的最簡(jiǎn)單的實(shí)現(xiàn)方法:Linux定時(shí)任務(wù)+wget定時(shí)生成sitemap.xml

具體實(shí)現(xiàn):將sitemap.php放到某個(gè)不為人知的目錄,然后定時(shí)使用wget去請(qǐng)求這個(gè)文件,并將數(shù)據(jù)保存為sitemap.xml存放到網(wǎng)站根目錄就可以了!比如:

#每天在網(wǎng)站根目錄生成一個(gè)sitemap.xml diypath為sitemap.php的實(shí)際位置0 1 * * * wget -O/home/wwwroot/www.yudouyudou.com/sitemap.xml https://www.yudouyudou.com/diypath/sitemap.php >/dev/null 2>&1

如果是啟用了https的站點(diǎn),需要加入 --no-check-certificate  的選項(xiàng),即:

#每天在網(wǎng)站根目錄生成一個(gè)sitemap.xml diypath為sitemap.php的實(shí)際位置(針對(duì)https網(wǎng)站)0 1 * * * wget -O/home/wwwroot/www.yudouyudou.com/sitemap.xml --no-check-certificate https://zhang.ge/diypath/sitemap.php >/dev/null 2>&1

Ps:使用這個(gè)方法,注意sitemap.php里面的 require('./wp-blog-header.php'); 要改成 require('../wp-blog-header.php'); 也就是注意相對(duì)位置!

如果實(shí)在搞不清楚什么是相對(duì)路徑,那么就用簡(jiǎn)單粗暴的方法:將網(wǎng)站根目錄的sitemap.php重命名為一個(gè)只有自己知道的php文件,比如xml.php,然后如下添加任務(wù):

#每天在網(wǎng)站根目錄生成一個(gè)sitemap.xml(xml.php為自己重命名的php文件名稱)0 1 * * * wget -O/home/wwwroot/www.yudouyudou.com/sitemap.xml https://www.yudouyudou.com/xml.php >/dev/null 2>&1

這樣一來(lái),就解決了sitemap.xml是動(dòng)態(tài)數(shù)據(jù)問(wèn)題了!

四、文章最后

①、確認(rèn)無(wú)誤之后,已開(kāi)通sitemap權(quán)限的就可以前往百度站長(zhǎng)平臺(tái)提交了,沒(méi)開(kāi)通權(quán)限的可以發(fā)送申請(qǐng)郵件到百度站長(zhǎng)平臺(tái)管理員郵箱申請(qǐng),并且將sitemap.xml使用a標(biāo)簽鏈接在網(wǎng)站底部即可。

②、代碼使用很簡(jiǎn)單,可以根據(jù)需要增減內(nèi)容,比如覺(jué)得標(biāo)簽不應(yīng)該出現(xiàn)在sitemap里面的,可以將標(biāo)簽部分的php代碼刪除即可,但一定要注意不要誤刪除結(jié)尾的</urlset>標(biāo)簽。

以上就是WordPress免插件生成完整站點(diǎn)地圖(sitemap.xml)的php代碼及實(shí)現(xiàn)方法的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)和解決疑問(wèn)有所幫助,也希望大家多多支持武林網(wǎng)。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 肥东县| 云浮市| 高密市| 丽江市| 九龙县| 司法| 双江| 贵港市| 江华| 徐闻县| 郁南县| 桑植县| 中方县| 利辛县| 高州市| 清河县| 垫江县| 武义县| 大厂| 大厂| 黄石市| 四子王旗| 如东县| 织金县| 灌南县| 翁源县| 阿鲁科尔沁旗| 三门峡市| 砚山县| 名山县| 墨竹工卡县| 甘谷县| 定日县| 阜新市| 翁牛特旗| 藁城市| 玉林市| 佛学| 枣阳市| 谢通门县| 洪洞县|