Je suis assez nouveau pour Wordpress et le système de gestion de contenu. J'ai suivi quelques tutoriels pour commencer. Je cherchais précisément comment inclure un sélecteur de date dans l'ajout d'un nouveau type de publication personnalisé.
Je souhaite ajouter ici un champ supplémentaire permettant à l'utilisateur de sélectionner une date pour spécifier le moment où l'événement aura lieu. Je ne veux pas que l'utilisateur tape manuellement la date sous forme de texte mais souhaite utiliser un sélecteur de date, que ce soit un datepicker html5 normal ou un jquery.
Le code que j'avais l'habitude de générer se trouve dans le functions.php. Je comprends que ce n'est probablement pas le meilleur endroit pour mettre tout mon code, mais je suis en train d'expérimenter pour l'instant mais je n'arrive pas à trouver une solution à mon problème. .
/*
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' );
Merci d'avance.
Avec Sunil, j'ai compris exactement ce que je devais faire.
Je suis allé télécharger la version gratuite de Metabox à https://wordpress.org/plugins/meta-box/
Une fois que je l'ai téléchargé, je l'ai placé dans child-theme/external/metabox
et l'ai référencé à partir de child-theme/inc/events-custom-post-type.php
.
events-custom-post-type.php
ressemble à ceci.
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,
'excluse_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' );
La fonction custom_events
configure le type de publication personnalisé tandis que la fonction prefix_register_meta_boxes_events
configure le sélecteur de date de champ personnalisé.
Vous devez simplement vous assurer que, dans la fonction prefix_register_meta_boxes_events
, où il est écrit post_types
, vous pouvez ajouter le type de votre propre type de publication personnalisé.
Après cela, je viens de référencer ce fichier dans child-theme/functions.php
comme tel.
require get_stylesheet_directory() . '/inc/events-custom-post-type.php';
@vemuez
vous devez mettre en file d'attente les fichiers js et css dans admin_print_script et admin_print_style
voici l'exemple pour savoir comment le faire
// 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');
ou essayez ceci https://fr.bainternet.info/how-i-add-a-wordpress-metabox/#toc-dn