Hãy tìm kiếm trước khi đặt câu hỏi, bạn sẽ tiết kiệm rất nhiều thời gian

Nhưng đừng ngại hỏi và đóng góp câu trả lời

Cần giúp đỡ về vấn đề add Start date, End date, Event Location vào Custom Post Type.

0 phiếu
level-1 đã hỏi 22 Tháng 6, 2015 bởi Khách
Chào mọi người, mình đang rất cần giúp đỡ về vấn đề add Start date, End date, Event Location vào Custom Post Type, mong mọi người chỉ giúp.

Mình xin cảm ơn!
Hỏi bạn bè:

1 câu trả lời

0 phiếu
level-14 level-power đã trả lời 22 Tháng 6, 2015 bởi lampd Chuyên gia (30,040 điểm)

Chào bạn, về vấn đề add Start date, End date, Event Location vào Custom Post Type này, mình chưa làm, nhưng cũng có tìm hiểu và thấy đoạn code này khá tốt, bạn có thể thử sử dụng nhé. Add code vào Functions.php.

function ep_eventposts_metaboxes() {

    add_meta_box( 'ept_event_date_start', 'Start Date and Time', 'ept_event_date', 'event', 'side', 'default', array( 'id' => '_start') );

    add_meta_box( 'ept_event_date_end', 'End Date and Time', 'ept_event_date', 'event', 'side', 'default', array('id'=>'_end') );

    add_meta_box( 'ept_event_location', 'Event Location', 'ept_event_location', 'event', 'side', 'default', array('id'=>'_end') );

}

add_action( 'admin_init', 'ep_eventposts_metaboxes' );

 

// Metabox HTML

 

function ept_event_date($post, $args) {

    $metabox_id = $args['args']['id'];

    global $post, $wp_locale;

 

    // Use nonce for verification

    wp_nonce_field( plugin_basename( __FILE__ ), 'ep_eventposts_nonce' );

 

    $time_adj = current_time( 'timestamp' );

    $month = get_post_meta( $post->ID, $metabox_id . '_month', true );

 

    if ( empty( $month ) ) {

        $month = gmdate( 'm', $time_adj );

    }

 

    $day = get_post_meta( $post->ID, $metabox_id . '_day', true );

 

    if ( empty( $day ) ) {

        $day = gmdate( 'd', $time_adj );

    }

 

    $year = get_post_meta( $post->ID, $metabox_id . '_year', true );

 

    if ( empty( $year ) ) {

        $year = gmdate( 'Y', $time_adj );

    }

 

    $hour = get_post_meta($post->ID, $metabox_id . '_hour', true);

 

    if ( empty($hour) ) {

        $hour = gmdate( 'H', $time_adj );

    }

 

    $min = get_post_meta($post->ID, $metabox_id . '_minute', true);

 

    if ( empty($min) ) {

        $min = '00';

    }

 

    $month_s = '<select name="' . $metabox_id . '_month">';

    for ( $i = 1; $i < 13; $i = $i +1 ) {

        $month_s .= "\t\t\t" . '<option value="' . zeroise( $i, 2 ) . '"';

        if ( $i == $month )

            $month_s .= ' selected="selected"';

        $month_s .= '>' . $wp_locale->get_month_abbrev( $wp_locale->get_month( $i ) ) . "</option>\n";

    }

    $month_s .= '</select>';

 

    echo $month_s;

    echo '<input type="text" name="' . $metabox_id . '_day" value="' . $day  . '" size="2" maxlength="2" />';

    echo '<input type="text" name="' . $metabox_id . '_year" value="' . $year . '" size="4" maxlength="4" /> @ ';

    echo '<input type="text" name="' . $metabox_id . '_hour" value="' . $hour . '" size="2" maxlength="2"/>:';

    echo '<input type="text" name="' . $metabox_id . '_minute" value="' . $min . '" size="2" maxlength="2" />';

 

}

 

function ept_event_location() {

    global $post;

    // Use nonce for verification

    wp_nonce_field( plugin_basename( __FILE__ ), 'ep_eventposts_nonce' );

    // The metabox HTML

    $event_location = get_post_meta( $post->ID, '_event_location', true );

    echo '<label for="_event_location">Location:</label>';

    echo '<input type="text" name="_event_location" value="' . $event_location  . '" />';

}

 

// Save the Metabox Data

 

function ep_eventposts_save_meta( $post_id, $post ) {

 

    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )

        return;

 

    if ( !isset( $_POST['ep_eventposts_nonce'] ) )

        return;

 

    if ( !wp_verify_nonce( $_POST['ep_eventposts_nonce'], plugin_basename( __FILE__ ) ) )

        return;

 

    // Is the user allowed to edit the post or page?

    if ( !current_user_can( 'edit_post', $post->ID ) )

        return;

 

    // OK, we're authenticated: we need to find and save the data

    // We'll put it into an array to make it easier to loop though

 

    $metabox_ids = array( '_start', '_end' );

 

    foreach ($metabox_ids as $key ) {

        $events_meta[$key . '_month'] = $_POST[$key . '_month'];

        $events_meta[$key . '_day'] = $_POST[$key . '_day'];

            if($_POST[$key . '_hour']<10){

                 $events_meta[$key . '_hour'] = '0'.$_POST[$key . '_hour'];

             } else {

                   $events_meta[$key . '_hour'] = $_POST[$key . '_hour'];

             }

        $events_meta[$key . '_year'] = $_POST[$key . '_year'];

        $events_meta[$key . '_hour'] = $_POST[$key . '_hour'];

        $events_meta[$key . '_minute'] = $_POST[$key . '_minute'];

        $events_meta[$key . '_eventtimestamp'] = $events_meta[$key . '_year'] . $events_meta[$key . '_month'] . $events_meta[$key . '_day'] . $events_meta[$key . '_hour'] . $events_meta[$key . '_minute'];

    }

 

    // Add values of $events_meta as custom fields

 

    foreach ( $events_meta as $key => $value ) { // Cycle through the $events_meta array!

        if ( $post->post_type == 'revision' ) return; // Don't store custom data twice

        $value = implode( ',', (array)$value ); // If $value is an array, make it a CSV (unlikely)

        if ( get_post_meta( $post->ID, $key, FALSE ) ) { // If the custom field already has a value

            update_post_meta( $post->ID, $key, $value );

        } else { // If the custom field doesn't have a value

            add_post_meta( $post->ID, $key, $value );

        }

        if ( !$value ) delete_post_meta( $post->ID, $key ); // Delete if blank

    }

 

}

 

add_action( 'save_post', 'ep_eventposts_save_meta', 1, 2 );

 

/**

 * Helpers to display the date on the front end

 */

 

// Get the Month Abbreviation

 

function eventposttype_get_the_month_abbr($month) {

    global $wp_locale;

    for ( $i = 1; $i < 13; $i = $i +1 ) {

                if ( $i == $month )

                    $monthabbr = $wp_locale->get_month_abbrev( $wp_locale->get_month( $i ) );

                }

    return $monthabbr;

}

 

// Display the date

 

function eventposttype_get_the_event_date() {

    global $post;

    $eventdate = '';

    $month = get_post_meta($post->ID, '_month', true);

    $eventdate = eventposttype_get_the_month_abbr($month);

    $eventdate .= ' ' . get_post_meta($post->ID, '_day', true) . ',';

    $eventdate .= ' ' . get_post_meta($post->ID, '_year', true);

    $eventdate .= ' at ' . get_post_meta($post->ID, '_hour', true);

    $eventdate .= ':' . get_post_meta($post->ID, '_minute', true);

    echo $eventdate;

}

Chúc bạn thành công.

Chuyên mục HOT

...