date - Custom Post Types - How to include custom fields

admin2025-04-21  0

I'm fairly new to wordpress and the content management system. I've been following a couple of tutorials to get started. I've been searching for specifically how to include a date picker in the add new custom post type.

I want to add an extra field in here for the user to select a date to specify when the event will take place. I don't want the user to manually type out the date through text but want to use a date picker, whether it be a normal html5 datepicker or a jquery one.

The code i used to generate this is within the functions.php, I understand that this is probably not the best place to put all my code but i'm currently just experimenting for now but can't seem to find a solution to my problem.

    /*
    Custom post types
*/

function awesome_custom_post_type ()
{
    $labels = array(
        'name' => 'Events',
        'singular_name' => 'Event',
        'add_new' => 'Add Event',
        'all_items' => 'All Events',
        'add_new_item' => 'Add Event',
        'edit_item' => 'Edit Event',
        'new_item' => 'New Event',
        'view_item' => 'View Event',
        'search_item_label' => 'Search Events',
        'not_found' => 'No Events Found',
        'not_found_in_trash' => 'No Events Found in Trash',
        'parent_item_colon' => 'Parent Event'
    );

    $args = array(
        'labels' => $labels,
        'public' => true,
        'has_archive' => true,
        'publicly_queryable' => false,
        'query_var' => true,
        'rewrite' => true,
        'capability_type' => 'post',
        'hierarchical' => true,
        'supports' => array(
            'title',
            'editor',
            'thumbnail',
        ),
        'menu_icon' => 'dashicons-calendar-alt',
        'menu_position' => 5,
        'excluse_from_search' => true
    );

    register_post_type( 'awesome_events', $args );
}
add_action( 'init', 'awesome_custom_post_type' );

Thanks in advance.

I'm fairly new to wordpress and the content management system. I've been following a couple of tutorials to get started. I've been searching for specifically how to include a date picker in the add new custom post type.

I want to add an extra field in here for the user to select a date to specify when the event will take place. I don't want the user to manually type out the date through text but want to use a date picker, whether it be a normal html5 datepicker or a jquery one.

The code i used to generate this is within the functions.php, I understand that this is probably not the best place to put all my code but i'm currently just experimenting for now but can't seem to find a solution to my problem.

    /*
    Custom post types
*/

function awesome_custom_post_type ()
{
    $labels = array(
        'name' => 'Events',
        'singular_name' => 'Event',
        'add_new' => 'Add Event',
        'all_items' => 'All Events',
        'add_new_item' => 'Add Event',
        'edit_item' => 'Edit Event',
        'new_item' => 'New Event',
        'view_item' => 'View Event',
        'search_item_label' => 'Search Events',
        'not_found' => 'No Events Found',
        'not_found_in_trash' => 'No Events Found in Trash',
        'parent_item_colon' => 'Parent Event'
    );

    $args = array(
        'labels' => $labels,
        'public' => true,
        'has_archive' => true,
        'publicly_queryable' => false,
        'query_var' => true,
        'rewrite' => true,
        'capability_type' => 'post',
        'hierarchical' => true,
        'supports' => array(
            'title',
            'editor',
            'thumbnail',
        ),
        'menu_icon' => 'dashicons-calendar-alt',
        'menu_position' => 5,
        'excluse_from_search' => true
    );

    register_post_type( 'awesome_events', $args );
}
add_action( 'init', 'awesome_custom_post_type' );

Thanks in advance.

Share Improve this question edited Aug 1, 2018 at 13:58 Yussuf asked Jul 13, 2018 at 16:30 YussufYussuf 1311 silver badge6 bronze badges
Add a comment  | 

2 Answers 2

Reset to default 1

@vemuez

you need to enqueue js and css files to admin_print_script and admin_print_style

here is the example to how to do it

// Register datepicker ui for properties

function admin_homes_for_sale_javascript()
{
    global $post;
    if($post->post_type == 'homes-for-sale' && is_admin()) {
        wp_enqueue_script('jquery-ui-datepicker', WP_CONTENT_URL . '/themes/yourthemename/js/jquery-ui-datepicker.min.js');  
    }
}
add_action('admin_print_scripts', 'admin_homes_for_sale_javascript');

// Register ui styles for properties

function admin_homes_for_sale_styles(){
    global $post;
    if($post->post_type == 'homes-for-sale' && is_admin()) {
        wp_enqueue_style('jquery-ui', WP_CONTENT_URL . '/themes/yourthemename/css/jquery-ui-1.8.11.custom.css');  
    }
}
add_action('admin_print_styles', 'admin_homes_for_sale_styles');

or try this https://en.bainternet.info/how-i-add-a-wordpress-metabox/#toc-dn

With the help of sunil's answer I figured out exactly what I needed to do.

I went and downloaded the free version of Metabox at https://wordpress/plugins/meta-box/

Once I downloaded it, I've placed it in child-theme/external/meta-boxand referenced it from child-theme/inc/events-custom-post-type.php.

events-custom-post-type.php looks like this.

require_once(get_stylesheet_directory() . '/external/meta-box/meta-box.php');

function custom_events ()
{
    $labels = array(
        'name' => 'Events',
        'singular_name' => 'Event',
        'add_new' => 'Add Event',
        'all_items' => 'All Events',
        'add_new_item' => 'Add Event',
        'edit_item' => 'Edit Event',
        'new_item' => 'New Event',
        'view_item' => 'View Event',
        'search_item_label' => 'Search Events',
        'not_found' => 'No Events Found',
        'not_found_in_trash' => 'No Events Found in Trash',
        'parent_item_colon' => 'Parent Event'
    );

    $args = array(
        'labels' => $labels,
        'public' => true,
        'has_archive' => true,
        'publicly_queryable' => false,
        'query_var' => true,
        'rewrite' => true,
        'capability_type' => 'post',
        'hierarchical' => true,
        'supports' => array(
            'title',
            'editor',
        ),
        'menu_icon' => 'dashicons-calendar-alt',
        'menu_position' => 5,
        'exclude_from_search' => true
    );

    register_post_type( 'custom_events_post_type', $args );
}

function prefix_register_meta_boxes_events( $meta_boxes ) {
    $prefix = 'custom_event_';

    $meta_boxes[] = array(
        'id'         => $prefix . 'details',
        'title'      => 'Event details',
        'post_types' => 'custom_events_post_type',
        'context'    => 'normal',
        'priority'   => 'high',

        'fields' => array(
            array(
                'name'  => 'Event date',
                'desc'  => 'Select event date',
                'id'    => $prefix . 'date',
                'type'  => 'date',
            ),
            array (
                'name' => 'Event location',
                'desc' => 'Location of the event',
                'id'   => $prefix . 'location',
                'type' => 'text'
            )
        )
    );

    return $meta_boxes;
}

add_action( 'init', 'custom_events' );

add_filter( 'rwmb_meta_boxes', 'prefix_register_meta_boxes_events' );

The custom_events function sets up the custom post type while the prefix_register_meta_boxes_events function sets up the custom field date picker.

You just have to make sure that in prefix_register_meta_boxes_events function, where it says post_types to add what your own custom post type is registered as.

After that, I just referenced this file in child-theme/functions.php like so.

require get_stylesheet_directory() . '/inc/events-custom-post-type.php';
转载请注明原文地址:http://conceptsofalgorithm.com/Algorithm/1745172387a288736.html

最新回复(0)