我可以在管理区的另一个自定义帖子类型中列出一个自定义帖子类型吗?

时间:2014-05-07 作者:lz430

我希望有人能把我引向正确的方向。我有一个名为“位置”的自定义帖子类型。我有另一个自定义的帖子类型,叫做“推荐”。

我真正想做的是能够将“推荐”与“地点”联系起来。所以我想知道我是否可以在管理区的推荐帖子页面中列出这些位置。就像一个元盒子。

我在任何地方都找不到这样的东西。

感谢您的任何帮助!

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

是的,你可以。

您需要添加一个自定义字段来存储其他帖子类型的ID。我建议使用选择列表。

您可以尝试以下方法:

add_action( \'add_meta_boxes\', \'wpse_143600_add_box\' );
add_action( \'save_post\', \'143600_save_box\' );

//create the metabox
function wpse_143600_add_box() {
   add_meta_box( 
    \'related_testimonial\',
    __( \'Testimonails\', \'wpse_143600_translation\' ),
    \'wpse_143600_testimonial_box\',
    \'locations\',
    \'normal\'
    );
}

//build the box
function wpse_143600_testimonial_box($post) {

wp_nonce_field( basename( __FILE__ ), \'wpse_143600_nonce\' );

$wpse_143600_stored_meta = get_post_meta( $post->ID );

$testimonialArgs = array(
\'post_type\' => \'testimonials\',
\'post_status\' => \'publish\',
\'numberposts\' => -1
);

$testimonials = get_posts($testimonialArgs);

if($testimonials): ?>
<p>
  <label for="meta-select" class="wpse_143600-row-title"><?php _e( \'Example Select Input\', \'wpse_143600_translation\' )?></label>
  <select name="meta-select" id="meta-select">
    <option value="NULL">Please choose a testimonial…</option>
<?php foreach($testimonials as $testimonial): ?>
    <option value="<?php echo $testimonial->ID; ?>" <?php if ( isset ( $wpse_143600_stored_meta[\'meta-select\'] ) ) selected( $wpse_143600_stored_meta[\'meta-select\'][0], $testimonial->ID ); ?>><?php echo $testimonial->post_title; ?></option>
<?php endforeach; ?>
  </select>
</p>    
<?php
else:
?>
<p>There are no testimonials - please save this post, and write some testimonials. You\'ll then be able to choose a testimonial for this location.</p>
<?php
endif;
}

//save the box
function wpse_143600_save_box( $post_id ) {
$is_autosave = wp_is_post_autosave( $post_id );
$is_revision = wp_is_post_revision( $post_id );
$is_valid_nonce = ( isset( $_POST[ \'wpse_143600_nonce\' ] ) && wp_verify_nonce( $_POST[ \'wpse_143600_nonce\' ], basename( __FILE__ ) ) ) ? \'true\' : \'false\';

// Exits script depending on save status
if ( $is_autosave || $is_revision || !$is_valid_nonce ) {
    return;
}
// Checks for input and saves if needed
if( isset( $_POST[ \'meta-select\' ] ) ) {
update_post_meta( $post_id, \'meta-select\', $_POST[ \'meta-select\' ] );
}
}
这是相当粗糙的代码,但应该可以让您接近。

对不起,长度太长了,您可以在pastebin上找到它:http://pastebin.com/zA4aDiV9

SO网友:christianpv

您可以使用post 2 post scribu插件。它完全可以满足您的需要,是最先进的插件。

结束

相关推荐

根据自定义角色限制在users.php中显示的角色

我已使用一个名为\'regional_manager\'我为这个角色提供了添加\\u用户的功能,并为我的函数创建了一个自定义代码段。仅在“角色”下拉列表中列出订阅者的php文件。这意味着regional\\u manager角色只能创建具有subscriber角色的新用户。现在,我想阻止他们在访问时看到所有其他用户www.mydomain.com/wp-admin/users.php 有没有一种简单的方法可以做到这一点?有没有人可以举一个类似的例子来为我指明方向?