WordPress
Types de messages personnalisés
Recherche…
Syntaxe
- register_post_type ($ post_type, $ args);
Paramètres
Paramètre | Détails |
---|---|
$ post_type | (chaîne) (obligatoire) |
$ args | (tableau / chaîne) (facultatif) |
Enregistrement d'un type de message personnalisé
Supposons que vous ayez un site Web de bibliothèque et que vous souhaitiez un type de publication personnalisé nommé Livres . Il peut être enregistré comme
function create_bookposttype() {
$args = array(
'public' => true,
'labels' => array(
'name' => __( 'Books' ),
'singular_name' => __( 'Book' )
),
);
register_post_type( 'custompost_books', $args );
}
add_action( 'init', 'create_bookposttype' );
et, aussi simple soit-il, vous avez maintenant un type de poste personnalisé enregistré.
Cet extrait peut être placé dans votre fichier functions.php
ou dans une structure de plugin.
Ajouter des types de publication personnalisés à la requête principale
L'enregistrement d'un type de publication personnalisé ne signifie pas qu'il est ajouté automatiquement à la requête principale. Vous devez utiliser le filtre pre_get_posts
pour ajouter des types de publication personnalisés à la requête principale.
// Show posts of 'post' and 'book' custom post types on home page
add_action( 'pre_get_posts', 'add_my_post_types_to_query' );
function add_my_post_types_to_query( $query ) {
if ( is_home() && $query->is_main_query() )
$query->set( 'post_type', array( 'post', 'book' ) );
return $query;
}
Ajout de types de publication personnalisés au flux RSS principal
Enregistrer un type de publication personnalisé ne signifie pas qu'il est ajouté automatiquement au flux RSS principal. Vous devez utiliser le filtre de request
pour ajouter des types de publication personnalisés au flux RSS principal.
// Add 'books' custom post types on main RSS feed
function add_book_post_types_to_rss($qv) {
if (isset($qv['feed']) && !isset($qv['post_type']))
$qv['post_type'] = array('post', 'books', );
return $qv;
}
add_filter('request', 'add_book_post_types_to_rss');
Enregistrer le type de poste personnalisé
if ( ! function_exists('products_post_type') ) {
function products_post_type() {
$labels = array(
'name' => _x( 'Products', 'Post Type General Name', 'text_domain' ),
'singular_name' => _x( 'Product', 'Post Type Singular Name', 'text_domain' ),
'menu_name' => __( 'Products', 'text_domain' ),
'name_admin_bar' => __( 'Product', 'text_domain' ),
'archives' => __( 'Item Archives', 'text_domain' ),
'attributes' => __( 'Item Attributes', 'text_domain' ),
'parent_item_colon' => __( 'Parent Product:', 'text_domain' ),
'all_items' => __( 'All Products', 'text_domain' ),
'add_new_item' => __( 'Add New Product', 'text_domain' ),
'add_new' => __( 'New Product', 'text_domain' ),
'new_item' => __( 'New Item', 'text_domain' ),
'edit_item' => __( 'Edit Product', 'text_domain' ),
'update_item' => __( 'Update Product', 'text_domain' ),
'view_item' => __( 'View Product', 'text_domain' ),
'view_items' => __( 'View Items', 'text_domain' ),
'search_items' => __( 'Search products', 'text_domain' ),
'not_found' => __( 'No products found', 'text_domain' ),
'not_found_in_trash' => __( 'No products found in Trash', 'text_domain' ),
'featured_image' => __( 'Featured Image', 'text_domain' ),
'set_featured_image' => __( 'Set featured image', 'text_domain' ),
'remove_featured_image' => __( 'Remove featured image', 'text_domain' ),
'use_featured_image' => __( 'Use as featured image', 'text_domain' ),
'insert_into_item' => __( 'Insert into item', 'text_domain' ),
'uploaded_to_this_item' => __( 'Uploaded to this item', 'text_domain' ),
'items_list' => __( 'Items list', 'text_domain' ),
'items_list_navigation' => __( 'Items list navigation', 'text_domain' ),
'filter_items_list' => __( 'Filter items list', 'text_domain' ),
);
$args = array(
'label' => __( 'Product', 'text_domain' ),
'description' => __( 'Product information pages.', 'text_domain' ),
'labels' => $labels,
'supports' => array( 'title', 'editor', 'excerpt', 'author', 'thumbnail', 'comments', 'custom-fields', ),
'taxonomies' => array( 'category', 'post_tag' ),
'hierarchical' => false,
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'menu_position' => 5,
'menu_icon' => 'dashicons-products',
'show_in_admin_bar' => true,
'show_in_nav_menus' => true,
'can_export' => true,
'has_archive' => true,
'exclude_from_search' => false,
'publicly_queryable' => true,
'capability_type' => 'page',
'show_in_rest' => true,
);
register_post_type( 'product', $args );
}
add_action( 'init', 'products_post_type', 0 );
}
Type de message personnalisé à l'aide du thème WordPress Twenty Fifteen
Vous pouvez utiliser n'importe quel nom pour la fonction.
function custom_postype(){
register_post_type('cus_post',array(
'labels'=>array(
'name'=>'khaiyam'// Use any name you want to show in menu for your users
),
'public'=>true,// **Must required
'supports'=>array('title','editor','thumbnail')// Features you want to provide on your posts
));
}
add_action('after_setup_theme','custom_postytpe');
ou
add_action('init','custom_postytpe');
Vous pouvez utiliser n'importe lequel des crochets que vous voulez, mais ils ont bien sûr une signification et des utilisations différentes.
Type de poste personnalisé dans la recherche par défaut
Vous pouvez ajouter des posts de type post personnalisés sur la recherche wordpress par défaut, Ajouter le code ci-dessous dans le theme functions.php
function my_search_filter($query) {
if ( !is_admin() && $query->is_main_query() ) {
if ($query->is_search) {
$query->set('post_type', array( 'news','post','article' ) );
}
}
}
add_action('pre_get_posts','my_search_filter');