使用自定义POST类型填充的Metabox-如何根据选择输出CPT?

时间:2014-03-11 作者:Marco

我有一个用自定义帖子类型填充的下拉式元框,现在在我的模板中,我可以获得元框输出的值,但我真正需要的是从所选CPT存储的所有信息,以显示在帖子的某些区域。

My metabox

$meta_boxes[] = array(
\'id\' => \'actordetails\',
\'title\' => \'Select an Actor\',
\'pages\' => array( \'films\' ),
\'context\' => \'normal\',
\'priority\' => \'high\',

// List of meta fields
\'fields\' => array(

    array(
\'name\' => \'\',
\'id\' => $prefix . \'getactors\',
\'type\' => \'select\',
\'clone\' => false,
\'options\' => get_actors_options(),
    ),


)
 );

My function

function get_actors_options( $query_args ) {

$args = wp_parse_args( $query_args, array(
    \'post_type\' => \'actors\',
) );

$posts = get_posts( $args );

$post_options = array();
if ( $posts ) {
    foreach ( $posts as $post ) {
        $post_options [ $post->post_title ] = $post->post_title;
    }
}

return $post_options;
}
这就是我得到的:

    <?php echo get_post_meta($post->ID, \'nt_getactors\', true); ?>
enter image description here

This is what I need:

enter image description here

那么,我将使用什么代码来获取我选择的其他自定义帖子类型呢。

1 个回复
最合适的回答,由SO网友:alpipego 整理而成

如果将metabox的值设置为authors cpt post id,则应该能够使用

//get the id for the actors cpt
$actors_id   = get_post_meta( $post->ID, \'nt_getactors\', true );

//get the post obejct for the author
$actors_post = get_post( $actors_id, OBJECT ); //or ARRAY_A if you want an array and not an object

//to output e.g. the title use
$actors_post->post_title;
请参见get_post 更多选项。

更新更改

$post_options [ $post->post_title ] = $post->post_title;

$post_options [ $post->ID ] = $post->post_title;
更新2使用$actors_post post对象与普通post对象一样。检查the codex 获取可用成员变量的良好引用。

e、 g。

$actors_post->post_content;
请记住,$actors\\u post数据是“原始”的,您可能需要对其应用一些过滤器,这取决于您使用它的方式;e、 g。

apply_filters( \'the_content\', $actors_post->post_content );
更新3以从演员帖子中获取元值,可以对单个值执行此操作

get_post_meta( $actor_post->ID, \'ecpt_bio\', true );
或者(如果有多个值,可以在一个数组中获取所有值),如下所示:

$actor_meta = get_post_meta( $actor_post->ID );
//and then access the array element
echo $actor_meta[\'ecpt_bio\'];
将回调函数更改为引用帖子的id而不是标题(请参见更新#1)

//get the id for the actors cpt
$actors_id   = get_post_meta( $post->ID, \'nt_getactors\', true );

//get the post obejct for the author
$actors_post = get_post( $actors_id, OBJECT );

//to output e.g. the title use
echo apply_filters( \'the_title\', $actors_post->post_title );

//output the content
echo apply_filters( \'the_content\', $actors_post->post_content );

//get the meta values from the actor post
$actor_meta = get_post_meta( $actor_post->ID );

//and output it like this
echo $actor_meta[ \'ecpt_bio\' ];

结束

相关推荐

有关使用Metabox的问题-复选框以启用销售项目

使用WP 3.8.1,我有一个Custom Post Type 这被称为“Sport“它的Metdabox-medata数据如下:我不需要设置网上购物,但我喜欢将我的产品价格添加到任何运动CPT中,并通过选中Sale on复选框并指定Sale amount或presentage来更新WP表中的价格。所以输出看起来像 我知道JavaScript可以在复选框上完成部分工作(如将Sale类添加到价格或将Sale图标添加到方框),但在WP端,我还需要更新表格以获取新价格,还可以列出每个CPT的所有待售项目。你能