如何在草稿中获得干净的永久链接?

时间:2012-02-08 作者:supertrue

当我使用the_permalinkget_the_permalink 在草稿或预定帖子中,提供的URL不是“最终”永久链接,而是非即时链接?p=xxxxx 版本

如何让最终的“干净”permalink出现在草稿或预定的帖子中?

我可以做一些涉及$post->post_name, 但我也需要路径,这在不同的帖子类型中有所不同,并且取决于permalink结构。有没有“通用”的方法可以做到这一点?

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

这有点“骇客”,但当你打电话时get_permalink 并且,您需要永久链接作为草稿,提供post对象的克隆,并填写详细信息:

global $post;
if ( in_array( $post->post_status, array( \'draft\', \'pending\', \'auto-draft\' ) ) ) {
    $my_post = clone $post;
    $my_post->post_status = \'publish\';
    $my_post->post_name = sanitize_title(
        $my_post->post_name ? $my_post->post_name : $my_post->post_title,
        $my_post->ID
    );
    $permalink = get_permalink( $my_post );
} else {
    $permalink = get_permalink();
}

SO网友:Rarst

由于编辑器为slug editor显示投影的permalink,所以它必须有某种方法来解决这个问题。从查看由get_sample_permalink_html()get_sample_permalink().

由于我们只需要不带表单积垢的链接,我们可以将其重新制作成如下内容:

function get_draft_permalink( $post_id ) {

    require_once ABSPATH . \'/wp-admin/includes/post.php\';
    list( $permalink, $postname ) = get_sample_permalink( $post_id );

    return str_replace( \'%postname%\', $postname, $permalink );
}
毫无疑问,它是万无一失的,但通过快速测试,效果很好。:)

结束

相关推荐

Post Auto Draft Issue

我创建了没有标题和编辑器的自定义帖子类型,并使用自定义分类法、自定义字段和附件来形成帖子。我的标题是从自定义分类法和自定义字段生成的(如果未设置其他内容,则为“ID#”)。以下是标题代码(可能需要一些修饰):function custom_post_type_title ( $post_id ) { global $wpdb; if ( get_post_type( $post_id ) == \'cars\' ) { $autos = wp_get