Apache上WordPress免插件生成適應(yīng)360站長平臺sitemap.xml的php代碼
編輯:狂族晨曦 來源:WordPress技巧 日期:2016-04-23 閱讀: 5,094 次 7 條評論 » 百度已收錄
先森使用了WordPress的DX-Seo插件,該插件已經(jīng)能自動生成sitemap.xml文件了,但是先森為什么還要折騰有張戈博客提供的代碼版呢?因?yàn)镈X-Seo生成的sitemap.xml文件360不能識別,而百度則識別正常。
先來看看先森用了張哥代碼版的效果,我設(shè)置的代碼版是sitemap-360.xml文件:

360站長平臺 Sitemap提交
DX-Seo生成的sitemap.xml文件在360中鏈接數(shù)量一直顯示為0.而用了張哥的代碼版生成的則非常給力。
下面就為大家介紹這個(gè)WordPress技巧。既然是代碼版,首先你得確定你有顆愿意折騰的心。
PHP代碼部分
張戈提供的代碼版sitemap.xml文件可以同時(shí)生成首頁、文章、單頁面、分類和標(biāo)簽,這點(diǎn)比網(wǎng)上其他代碼要完善的多。
<?php
require('./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/">'
?>
<!-- generated-on=<?php echo get_lastpostdate('blog'); ?> Diy By 張戈博客(http://zhangge.net)-->
<url>
<loc><?php echo get_home_url(); ?></loc>
<lastmod><?php $ltime = get_lastpostmodified(GMT);$ltime = gmdate('Y-m-d\TH:i:s+00:00', strtotime($ltime)); echo $ltime; ?></lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
<?php
/* 文章頁面 */
$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
/* 單頁面 */
$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 }} /* 單頁面循環(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)站根目錄。一定要記住,是網(wǎng)站根目錄。
眼尖的同學(xué)估計(jì)已經(jīng)發(fā)現(xiàn),代碼結(jié)尾處有一個(gè)</urlset>的關(guān)閉標(biāo)簽,這并不是多寫了哦,千萬不要刪除。
Apache偽靜態(tài)
如果要看Nginx的偽靜態(tài)代碼可以去下面的原文鏈接張戈博客那里去看,先森本文著重講下Apache方面的偽靜態(tài)。
張哥提供的Apache偽靜態(tài)代碼是在.htaccess中添加下面的代碼:
RewriteRule ^(sitemap)\.xml$ $1.php
先森實(shí)際操作后發(fā)現(xiàn),可能還需要在前面加上一句,也就是在.htaccess中添加下面的代碼:
RewriteEngine on RewriteRule ^(sitemap)\.xml$ $1.php
由于.htaccess是比較重要的文件,在修改前請務(wù)必備份。
做好偽靜態(tài)規(guī)則后,就可以直接訪問sitemap.xml看看效果了,比如 //www.cnidcc.cn/sitemap-360.xml
總結(jié)
這篇WordPress技巧一定要有愿意折騰的心,實(shí)際操作中可能會出現(xiàn)很多意外的問題。下面總結(jié)一下需要注意的地方:
①php文件要放在網(wǎng)站根目錄下;
②注意不要誤刪除結(jié)尾的</urlset>標(biāo)簽;
③php代碼可以根據(jù)實(shí)際需求增減內(nèi)容,如刪除標(biāo)簽部分的php代碼;
④修改.htaccess前注意備份;
⑤php文件設(shè)置的什么文件名,.htaccess文件中寫規(guī)則時(shí)則做相應(yīng)的修改。如新建的是sitemap-360.php,那么.htaccess規(guī)則中的(sitemap)需改成(sitemap-360)。
本文鏈接地址:http://www.cnidcc.cn/aswpmcjscsy360zcptspdm.html , 轉(zhuǎn)載請保留本說明!

川公網(wǎng)安備 51011202000104號
厲害!
我還在用插件,沒想到可以自動生成。
@紫杉倒影: 我現(xiàn)在是插件和代碼版的同時(shí)用,主要是插件的sitemap站點(diǎn)地圖只是附帶功能。
我用的張哥的!!
我用的百度sitemap插件,貌似360也能識別。
你的sitemap-360.xml,你都不看看!里面顯示“generated-on=2016-05-26 18:38:23 Diy By 張戈博客(http://zhangge.net)”………
@龍笑天: 沒事啊,故意留的,因?yàn)橛玫氖菑埜甑拇a的嘛,一般我都會留的