Aug
03

今天在做一个站的时候需要对Wordpress的文章进行调用,也就是在Wordpress以外环境,例如wordpress安装在/blog/目录下,而根目录下的index.php需要调用博客最新文章。

很高兴在关于非WP目录下的.php文件显示文章摘要或者别的WP信息的方法一文中找到了实现方法,也很容易上手,放在一个空白的测试页中运行成功。

不过当我把Wordpress的永久链接(Permalink)形式从默认改成了任何伪静态形式,文章列表调用就失效了,显示空白。

后来查阅Wordpress支持论坛,似乎也有人遇到过由于更改了默认的永久链接设置而造成列表调用失败的问题,不过作者似乎自己解决了该问题。问题主要可能是出现在将Wordpress安装在子目录下,如/blog/,而在永久链接设置的地方是不需要指定目录的。然而在自行外部调用的时候就出现了问题,这个可能是Wordpress设计上的一个BUG吧。

我尝试了一下加上了目录的路径,/blog/%postname%/,这样设置以后列表调用成功显示内容,只不过,在Wordpress中的所有永久链接地址就出现了2次/blog/,不过这个却不影响使用,只是不好看而已。囧

由于我也是第一次接触wordpress的开发,所以并不是很熟悉那些函数接口,在查阅了手册之后发现可以使用自定义的查询方式,使用query_posts来调用,结果使用了这个方法以后,问题解决。

具体代码如下:

<?php
        $loca="/blog";//这里定义你的WP目录
        require_once( dirname(__FILE__) . $loca.'/wp-load.php' );//注意这里是wp目录下的wp-load.php
	wp();//这样wp的加载就完成了,我们不需要加载模板。
?>
<?php
query_posts('showposts=3');   //就是这里加了一句query_posts,这样也可以实现调用条数的指定。
while (have_posts()) : the_post();
?><div>
<?php the_excerpt();?>
</div>
<?php endwhile; ?>
<!--导航开始-->
<p align="center">
<?php
global $paged, $wp_query;
if($paged>1)
echo '<a href='.str_replace($loca,'',get_previous_posts_page_link()).'>&laquo; Previous Entry</a> ';
if($paged<$wp_query->max_num_pages)
echo ' <a href='.str_replace($loca,'',get_next_posts_page_link()).'>Next Entry &raquo;</a>';
?>
</p>
<!--导航结束-->

PS:这个方法只能用在同一个站点下,不同域名,也就是跨站的情况下,是不能使用这个方法的,如果跨站的话还是只能使用javascript方式调用。JS调用可以采用Feed to JS来实现。

欢迎转载,务必请记得保留出处,否则就如看帖不回帖一样,是不道德的!
本文地址:http://www.steveluo.name/wordpress-call-posts-excerpts-list-permalink-fixed/

您可能还对这些文章感兴趣:

5 Comments

Make A Comment

Comments RSS Feed   TrackBack URL

Leave a comment

top
54 queries. 0.335 seconds.