在插件中传递id时,GET_EDIT_POST_LINK()未按预期工作

时间:2018-01-17 作者:Davies-Barnard

因此,在我的插件中,我有以下代码。它从custom\\u帖子中获取问题。我在这里处理它,以便通过AJAX/JSON进行进一步的更新,并且只需为一种类型的数据源配置页面。

$observations = new WP_Query($args);  
if ( $observations-> have_posts() ) :
    $questionpost = $observations->posts[0];
    $question = array (
        \'id\' => $questionpost->ID,
        \'title\' => $questionpost->post_title,
        \'name\' =>  $questionpost->post_name,
        \'excerpt\' => $questionpost->post_excerpt,
        \'content\' => $questionpost->post_content,
        \'code\' => get_post_meta( $questionpost->ID, \'code\', true ),
        \'edit_link\' => get_edit_post_link($questionpost->ID),
    );
    if ( has_post_thumbnail($questionpost->ID) ) {
        $question[\'thumbnail\'] = get_the_post_thumbnail( $questionpost->ID, \'full\', array(\'class\' => \'card-img-top\')); 
    } else {
        $question[\'thumbnail\'] = get_template_directory_uri()."/img/no-image.png";
    }
    print_r($question);
}
除了get\\u edit\\u post\\u链接外,一切正常-下面是print\\r dump:

Array ( [id] => 208 [title] => Main ... pipework. [name] => nr-60 [excerpt] => [content] => The ... external. [code] => NR [edit_link] => [thumbnail] => http://.../img/no-image.png ) 
https://codex.wordpress.org/Function_Reference/edit_post_link 建议我们可以传递一个ID,所以我不明白为什么这是空白的。

2 个回复
最合适的回答,由SO网友:Max Yudin 整理而成

根据get_edit_post_link() 作用source 在以下情况下可能发生这种情况:

没有这样的职位

  • _edit_link 在后期类型注册期间更改
  • 前两种情况并非如此,因为ID可用。第四个是不好的做法:不适用于一般用途-核心开发人员recommend 注册自己的帖子类型时不使用此选项。

    在这种情况下,用户没有足够的权限。根据OP在该问题下的评论,他已经注销,这是同样的事情。

    SO网友:Peter HvD

    这可能是某些函数作为循环的一部分工作得更好的时候之一。虽然您使用的是循环,但实际上并没有使用完整的WP循环功能。

    尝试添加\'posts_per_page\'=> 1 到您的$args 只得到一个帖子,然后替换$questionpost = $observations->posts[0]; 缺少循环构造,即:while($observations->have_posts()) : $observations->the_post(); (不要忘记关闭endwhile; 当然)。这将允许您使用正常的in-loop功能(例如,get_the_ID(), get_the_title(), 等)并尝试使用get_edit_post_link() 没有将ID传递给它。

    结束

    相关推荐