重复我和一个搜索引擎优化的家伙,我想用工作来产生我们自己的站点地图(出于某些原因)。要做到这一点,显然我需要遍历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差异。 –