Ricerca…


Sintassi

  • register_post_type ($ post_type, $ args);

Parametri

Parametro Dettagli
$ post_type (stringa) (obbligatorio)
$ args (array / stringa) (Opzionale)

Registrazione di un tipo di messaggio personalizzato

Supponiamo che tu disponga di un sito Web di una biblioteca e che desideri avere un tipo di post personalizzato denominato Libri . Può essere registrato come

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' );

e, per quanto semplice, ora hai registrato un tipo di messaggio personalizzato.

Screenshot "Libro" personalizzato

Questo snippet può essere inserito nel file functions.php theme o all'interno di una struttura di plugin.

Aggiungi tipi di post personalizzati alla query principale

La registrazione di un tipo di messaggio personalizzato non significa che viene aggiunta automaticamente alla query principale. È necessario utilizzare il filtro pre_get_posts per aggiungere tipi di post personalizzati alla query 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;
}

Aggiunta di tipi di post personalizzati al feed RSS principale

La registrazione di un tipo di messaggio personalizzato non significa che viene aggiunta automaticamente al feed RSS principale. È necessario utilizzare il filtro di request per aggiungere tipi di post personalizzati al feed RSS principale.

// 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');

Registra il tipo di messaggio personalizzato

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 );

}

Tipo di messaggio personalizzato utilizzando Twenty Fifteen WordPress Theme

È possibile utilizzare qualsiasi nome per la funzione.

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'); 

o

add_action('init','custom_postytpe');

Puoi usare uno dei ganci che desideri ma ovviamente hanno un significato e usi diversi.

Tipo di post personalizzato semplice

Tipo di post personalizzato nella ricerca predefinita

Puoi aggiungere post personalizzati di tipo post sulla ricerca di wordpress predefinita, Aggiungi sotto il codice in 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');


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow