Get_permarink()始终返回空

时间:2011-10-28 作者:JVC

我的插件中突然出现了一个bug,我不知道到底是什么导致了它。此代码失败,因为get_permalink() 始终返回空:

$select = "SELECT * FROM `".DB_NAME."`.`wp_posts` WHERE `post_status` = \'publish\'";
$result = mysql_query($select);
while($meta_posts = mysql_fetch_array($result, MYSQL_ASSOC) ){
    $menu .= "<option value=\\"".get_permalink($meta_posts[\'ID\'])."\\">".$meta_posts[\'post_title\']."</option>\\n";
}
它过去工作得很好,它所做的只是返回所有已发布的WP帖子/页面的下拉菜单。现在我得到了标题的下拉列表,但选项值中没有永久链接。

有人知道为什么吗get_permalink() 会是空的吗?我甚至尝试将一个已知的帖子硬编码到其中,但它仍然是空的。

2 个回复
SO网友:chrisguitarguy

首先,你应该使用get_posts 而不是原始SQL查询。或者至少使用$wpdb.

<?php
$posts = get_posts(
    array(
        \'post_status\' => \'publish\'
        \'numberposts\' => -1
    )
);
然后,尝试将整个post对象传递给get_permalink, 哪一个saves some database queries.

<?php
foreach( $posts as $p )
{
    $link = get_permalink( $p );
    // do stuff here...
}
我唯一看到的get_permalink 这可能会导致一个空字符串it it it正在检查一个空的帖子ID。请尝试上述操作,看看它是否适合您的需要。

SO网友:romulodl

Try this:

query_posts( \'post_status=publish&posts_per_page=-1\' );

while ( have_posts() ) : the_post();
    $menu .= "<option value=\\"".get_permalink(get_the_ID())."\\">".get_the_title()."</option>\\n";
endwhile;
结束

相关推荐

Can't get permalinks working!

我无法让WordPress pretty permalinks在我的Fedora LAMP服务器上工作。如果我设置它们并单击页面/帖子链接,我会得到一个“哎呀!此链接似乎已断开。“”这个。htaccess文件可写且正在更新,mod\\u重写模块似乎已加载到我的httpd中。conf(见下文)我的apache日志中的错误只是说“找不到文档”</我已经筋疲力尽了!这是httpd.conf:### Section 1: Global Environment # start the rew