php 创建Metabox

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php 创建Metabox相关的知识,希望对你有一定的参考价值。

<?php

add_action( 'admin_init', 'add_meta_boxes' );
function add_meta_boxes() {
    add_meta_box( 'hotel_list', 'Hotels Availibility', 'hotel_field', 'event', 'advanced', 'high' );
}

function hotel_field() {
    global $post;

    $hotels = get_posts( array(
        'post_type' => 'hotel',
        'numberposts' => -1,
        'orderby' => 'post_title',
        'order' => 'ASC'
    ) ); ?>
    <input type="hidden" name="hotels_once" value="<?php echo wp_create_nonce( basename( __FILE__ ) ); ?>" />
    <?php
        $selected = get_post_meta( $post->ID, 'ebd_event_hotels_' . $i, true );

        if ( empty($selected) ) 
        {
            $selected = [];
        }
    ?>
    <table class="form-table">
		<tr valign="top">
			<th scope="row" style="width: 20%;">
				<label for="hotels">Hotel</label>
			</th>
			<td>
				<select class="selectize" multiple name="hotels[]" placeholder="Choose available hotels">
					<?php foreach ( $hotels as $hotel ) : ?>
					<option value="<?php echo $hotel->ID; ?>" <?php echo (in_array( $hotel->ID, $selected )) ? 'selected="selected"' : ''; ?>><?php echo $hotel->post_title; ?></option>
					<?php endforeach; ?>
				</select>
			</td>
		</tr>
    </table>
<?php
} 


// save our metabox
add_action( 'save_post', 'save_hotel_field' );
function save_hotel_field( $post_id ) {

    // only run this for event post type
    if ( 'event' != get_post_type( $post_id ) )
        return $post_id;        

    // verify nonce
    if ( empty( $_POST['hotels_once'] ) || !wp_verify_nonce( $_POST['hotels_once'], basename( __FILE__ ) ) )
        return $post_id;

    // check autosave
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
        return $post_id;

    // check permissions
    if ( !current_user_can( 'edit_post', $post_id ) )
		return $post_id;

    update_post_meta( $post_id, 'ebd_event_hotels', array_map( 'intval', $_POST['hotels'] ) );	

}

以上是关于php 创建Metabox的主要内容,如果未能解决你的问题,请参考以下文章

php 使用Metabox设置类

php Post Editor屏幕中的WordPress Checkbox Metabox - 作为插件添加

php 将Yoast SEO优先级更改为“低”以在Yoast metabox之前获得ACF字段。

php 卸妆o metabox do OCEANWP Extrasdapáginadeediçãodosprodutos do WooCommerce

如何在自定义帖子类型上使用Woocommerce的二级图像上传Metabox?

Wordpress 自定义 Metabox 复选框保存问题