在“New Post”表单中嵌入“New Post”表单

时间:2012-12-22 作者:cantera25

是否可以将一种自定义帖子类型的“新帖子”表单嵌入另一种自定义帖子类型的“新帖子”表单中?

当用户为自定义类型“事件”添加新帖子时,他们还应该能够为自定义类型“会话”添加新帖子,而无需离开“新事件”页面。用户还应该能够仅为“会话”帖子添加标签。

这几乎与为“事件”post类型添加自定义元数据库相同,唯一的例外是事件的“会话”数据应保存为post而不是术语。

1 个回复
SO网友:brasofilo

是的,可以连接到save_post 一个职位类型的操作,并执行wp_insert_post 在其他post类型中。

备注:

只有在创建新帖子时才会生成元框portfolio 和gallery. portfolio 并且只包含一个textarea字段,用于自动生成的gallery 发布调整合适的帖子类型$add_cpt_clone 根据需要使用$p_id 向自动生成的帖子中添加标签(或自定义分类法)。请参阅此Answer 了解如何

add_action( \'add_meta_boxes\', \'add_custom_box_wpse_76945\' );
add_action( \'save_post\', \'save_postdata_wpse_76945\', 10, 2 );

/**
 * Meta box for PORTFOLIO post type
 */
function add_custom_box_wpse_76945() 
{
    // Show ONLY when creating a NEW POST
    global $pagenow;
    if( \'post-new.php\' != $pagenow )
        return;

    // Add meta box to PORTFOLIO    
    add_meta_box( 
        \'sectionid_wpse_76945\',
        __( \'Create Post in another CPT\' ),
        \'inner_custom_box_wpse_76945\',
        \'portfolio\' 
    );
}

/**
 * Meta box content 
 */
function inner_custom_box_wpse_76945( $post ) 
{
    // Use nonce for verification
    wp_nonce_field( plugin_basename( __FILE__ ), \'noncename_wpse_76945\' );

    // Field for data entry
    echo \'<h4>THE_CONTENT</h4>\';
    echo \'<textarea id="the_content_wpse_76945" name="the_content_wpse_76945" cols="90" rows="5"></textarea>\';
}   

/**
 * Creates a new post in GALLERY post type
 */
function save_postdata_wpse_76945( $post_id, $post_object ) 
{
    // Auto save?
    if ( defined( \'DOING_AUTOSAVE\' ) && DOING_AUTOSAVE )  
        return;

    // Correct post_type
    if ( \'portfolio\' != $post_object->post_type )
        return;

    // Security
    if ( 
        !isset($_POST[\'noncename_wpse_76945\']) 
        || !wp_verify_nonce( $_POST[\'noncename_wpse_76945\'], plugin_basename( __FILE__ ) ) 
        )
        return;

    // Prepare contents
    $add_cpt_clone = array(
                    \'post_title\'   => $post_object->post_title,
                    \'post_content\' => $_POST[\'the_content_wpse_76945\'],
                    \'post_status\'  => \'publish\',
                    \'post_type\'    => \'gallery\'
                  );

    // Insert the post into the database
    $p_id = wp_insert_post( $add_cpt_clone );

    // Use $p_id to insert new terms
}

结束

相关推荐

使自定义POST类型的Metabox完全自动保存和批量/快速编辑兼容

我正在尝试创建一个自定义的帖子类型,我遇到了与上面描述的相同的问题here; 手动保存时,我的自定义元信息已正确保存,但在autosave ajax至少运行一次后就丢失了。因此,我现在使用所示的解决方案来解决此问题:function save_stationinfo($post_id) { if((defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE) || (defined(\'DOING_AJAX\') && DOI