是否将CPT值包含在另一个CPT中?

时间:2012-10-31 作者:Beto

我试图在另一个CPT中的下拉菜单中添加CPT值,不确定这是否可行。基本上,我有一个店铺CPT和一个经理CPT,在经理CPT中,我有标题、特色图片等常规帖子,我想做的是,当我添加一个新店铺(在店铺CPT上)时,我想有一个下拉菜单,其中填写要选择和关联的经理的标题,以便在店铺页面上我也可以显示店铺经理。

正确方向上的一个点将被通知。

*CPT=自定义职位类型

2 个回复
SO网友:brasofilo

三条建议:

1。创建自己的元框这是您的原始想法:创建/编辑店铺帖子类型时,元框将显示一个下拉列表,其中包含此帖子类型的所有可用管理员。

为此,请使用Bainternet的答案this Question 作为起点get_categories 对于get_posts 您的CPT
这将存储为post meta,并使用get_post_meta.


2。使用Post 2 Posts插件wordpress.org/extend/plugins/posts-to-posts/

在这两种插件情况下,请阅读有关检索方法的文档


3。使用高级自定义字段插件wordpress.org/extend/plugins/advanced-custom-fields/
另一个积极维护的插件,包含大量自定义字段。

字段类型RelationshipPost Object 可用于此目的。

下面是一个测试配置的屏幕截图,使用post类型电影和演员以及关系字段(比post对象更复杂,这将产生一个简单的下拉列表)。

Field Configuration
点击放大field configuration

Field Result
点击放大field result

SO网友:Joseph Leedy

您可以使用Posts 2 Posts 插件,或者您可以自己使用以下类似的东西(未经测试):

<?php
add_action( \'add_meta_boxes\', \'wpa71126_add_meta_box\' );
add_action( \'save_post\', \'wp71126_save_post\' );

function wpa71126_add_meta_box() {
    add_meta_box( 
        \'wpa71126_meta_box\',
        __( \'Managers\', \'textdomain\' ),
        \'wpa71126_meta_box\',
        \'manager\' 
    );
}

function wpa71126_meta_box( $post ) {
    $args = array(
        \'post_type\' => \'manager\',
        \'name\'      => \'wpa71126_manager_dropdown\'
    );

    wp_nonce_field( plugin_basename( __FILE__ ), \'wp71126_nonce\' );

    echo \'<label>\';
    _e(\'Select a manager\', \'textdomain\' );
    wp_dropdown_pages( $args );
    echo \'</label> \';
}

function wp71126_save_post( $post_id ) {
    if ( defined( \'DOING_AUTOSAVE\' ) && DOING_AUTOSAVE ) 
        return;

    if ( ! wp_verify_nonce( $_POST[ \'wp71126_nonce\' ], plugin_basename( __FILE__ ) ) )
      return;

    // Check permissions
    if ( \'manger\' == $_POST[ \'post_type\' ] )  {
        if ( !current_user_can( \'edit_post\', $post_id ) )
          return;
    }

    $manager = $_POST[ \'wpa71126_manager_dropdown\' ];

    update_post_meta( $post_id, \'_manager\', $manager );
}

结束

相关推荐