添加到自定义帖子类型的附件是否有帖子父项?

时间:2015-04-17 作者:Adam Smith

在附件页上,我有一个指向上传文件的帖子/页面的链接。(对于直接添加到媒体库的文件,不会显示此选项,这很好。)

对于添加到帖子和页面的附件,以下代码将生成链接:

$post = get_post( get_the_ID() );

if ( $post->post_parent ) {
  echo \'<a href="\' . get_permalink( $post->post_parent ) . \'">\' . get_the_title(
  $post->post_parent ) . \'</a>\';
}
然而,当我尝试查看上传到自定义帖子类型的附件时,它不起作用。

如果显示$post的var\\u转储,则会得到以下结果:

object(WP_Post)#398 (24) { ["ID"]=> int(789) ["post_author"]=> string(1) "1" ["post_date"]=> string(19) "2015-04-17 13:32:39" ["post_date_gmt"]=> string(19) "2015-04-17 13:32:39" ["post_content"]=> string(0) "" ["post_title"]=> string(5) "image" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "inherit" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(5) "image" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2015-04-17 13:32:39" ["post_modified_gmt"]=> string(19) "2015-04-17 13:32:39" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(63) "wp-content/uploads/2015/04/image.jpg" ["menu_order"]=> int(0) ["post_type"]=> string(10) "attachment" ["post_mime_type"]=> string(10) "image/jpeg" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" }
相关部分为["post_parent"]=> int(0) 这意味着附加到自定义帖子的文件没有父级。

有人能证实这一点吗?或者这可能是我设置自定义帖子类型的错误吗?

我尝试了分层和非分层类型,以及支持和不支持“页面属性”。

提前感谢任何人的帮助,

亚当

2 个回复
SO网友:Nishant Kumar

经过一些研究,我发现自定义帖子类型不会为附件存储Post\\u parent,或者可能需要进行一些调整register_post_type().

然而,我发现在将附件上传到常规帖子时,WordPress会用AJAX发送一个post\\u id,而自定义帖子类型则不会这样。因此,我们需要将post\\u id分配给自定义post类型的媒体上载程序。以下是片段。

add_filter( \'wp_insert_post\', \'foo_insert_post\');
function foo_insert_post( $post_id, $post, $update ){
    //if this is cpt, go on
    if( \'your_cpt\' === $post->post_type ){
        //ref: wp-includes\\media.php @ ~2648
        //ref: https://developer.wordpress.org/reference/hooks/plupload_default_params/
        add_filter( \'plupload_default_params\', \'foo_plupload_config\');
    }
}

function foo_plupload_config($params){
    global $post;
    //assign current post id
    $params[\'post_id\']      = $post->ID;
    return $params;
}
希望,它能起作用。

SO网友:Edward

我最近也有类似的问题,我发现以下选项register_post_type 功能:

"hierarchical" => true
这就是答案。

结束

相关推荐

how to edit attachments?

在将例如文件附加到帖子时,如何在事后编辑/删除它们?在帖子编辑器中找不到任何内容。谢谢