如何将数据从另一个插件插入到meta box中?

时间:2021-12-22 作者:Rohit kc

我有两个不同的插件。我的自定义帖子类型在第一个插件上,它有一些元框。现在在第二个插件中,我使用IMAP提取了电子邮件,并将其存储在第一个插件的post类型中。在下面的代码中,两个变量ticket_usernameticket_email 在一个班级里。

for($i=1; $i<=imap_num_msg($this->conn); $i++) {
   $res = imap_headerinfo($this->conn, $i);
     $ticket_username = $res->fromaddress; //For username
     $ticket_email = $res->from[0]->mailbox . "@" . $res->from[0]->host;// For E-mail.
}
我从电子邮件中分配了用户名和电子邮件。现在我想把这封电子邮件和用户名和电子邮件一起插入我的元框。

if(!function_exists(\'custom_meta_ticket_field_callback\')){
    function custom_meta_ticket_field_callback($post) {
        wp_nonce_field( \'custom_ticket_metabox_nonce\', \'faqpress_ticket_meta_fields_nonce\' );
        $ticket_username = get_post_meta( $post->ID, \'ticket_username\', true );
        $ticket_email     = get_post_meta( $post->ID, \'ticket_email\', true );
        ?>
            <label for="custom_design"><h4><?php  _e( \'Name\', \'Custom\' ); ?></h4></label>
            <input type="text"  id="" class="widefat" name="ticket_username" value="<?php echo esc_attr( $ticket_username ); ?>" size="25" readonly />


            <label for="design"><h4><?php  _e( \'Email\', \'Custom\' ); ?></h4></label>
            <input  type="email" id="" class="widefat" name="email" value="<?php echo esc_attr( $ticket_email ); ?>" size="25" readonly />

            <?php 
        }

    }
注意:CPT和metabox在另一个插件中注册,电子邮件由另一个插件提取并存储在CPT中。

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

元框是不相关的。元框只是向经典编辑器添加任意表单和数据的UI。

重要的是数据存储的方式和位置。谢天谢地,您包含的代码揭示了这一点。从您的代码中,我们可以看到保存的值存储为post meta:

$faqpress_ticket_username = get_post_meta( $post->ID, \'faqpress_ticket_username\', true );
$faqpress_ticket_email    = get_post_meta( $post->ID, \'faqpress_ticket_email\', true );
因此,如果您想将数据存储在与元框相同的位置,那么还需要将其存储为post meta。存储post meta就像使用相应的update_post_meta():

update_post_meta( $post_id, \'faqpress_ticket_username\', $value );
update_post_meta( $post_id, \'faqpress_ticket_email\', $value );
你只需要确保$post_id$value 适当填充变量。