在附件页上,我有一个指向上传文件的帖子/页面的链接。(对于直接添加到媒体库的文件,不会显示此选项,这很好。)
对于添加到帖子和页面的附件,以下代码将生成链接:
$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)
这意味着附加到自定义帖子的文件没有父级。
有人能证实这一点吗?或者这可能是我设置自定义帖子类型的错误吗?
我尝试了分层和非分层类型,以及支持和不支持“页面属性”。
提前感谢任何人的帮助,
亚当
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;
}
希望,它能起作用。