重複我和一個搜索引擎優化的傢伙,我想用工作來產生我們自己的站點地圖(出於某些原因)。要做到這一點,顯然我需要遍歷wordpress安裝中的所有帖子和頁面。我編寫了一個快速功能,並將其上載到實時站點上的服務器上,以查看它是否有效,並確實如此。循環遍歷所有的帖子顯示WordPress的
然而奇怪的是,當我試圖測試上的本地相同功能,安裝WordPress的(使用WAMP),它打印出一些名字後多次(又名重複)。我只想知道某人是否知道可能發生的錯誤,或者如果我的代碼需要更改。例如,我的代碼現在可能在現場網站上工作,但我寧願在稍後添加更多帖子時也不會遇到此問題,並且我開始在XML文件中看到重複項。
不管怎麼說,這裏是我的代碼:
<?php
$posts = new WP_Query('post_type=any&posts_per_page=-1&post_status=publish');
$posts = $posts->posts;
// Loop through each post, and echo out the url and it's amp extension.
foreach($posts as $post) {
if($post->post_type == 'post') {
$permalink = get_permalink($post->ID);
echo "\n\t<url>\n\t\t<loc>{$permalink}</loc>\n\t</url>";
echo "\n\t<url>\n\t\t<loc>{$permalink}amp/</loc>\n\t</url>";
}
}
正如我所說,它的工作原理上線的站點,並且不打印重複。所以你不必擔心自己與回聲語句的語法,這裏是將打印在網站上每篇文章:
<url>
<loc>https://www.somedomain.com/post1/</loc>
</url>
<url>
<loc>https://www.somedomain.com/post1/amp/</loc>
</url>
任何人有這樣的看法?
您在本地環境中使用的是同一個數據庫嗎? –
不是。這是完全不同的安裝,它們沒有任何關係。我甚至在我的本地計算機上創建了一個全新的數據庫,並安裝了新的wordpress副本。然後我創建了3個新帖子,並打印出5個帖子。這是瘋狂,我不能輕易得到我的職位沒有dups的名單...我討厭WordPress的。 –
但爲什麼不直接將實時數據庫複製到本地環境?然後你可以很容易地判斷是因爲你的代碼還是DB差異。 –