Szukaj…


Składnia

  • register_post_type ($ post_type, $ args);

Parametry

Parametr Detale
$ post_type (ciąg) (wymagane)
$ args (tablica / ciąg) (opcjonalnie)

Rejestracja niestandardowego typu postu

Załóżmy, że masz witrynę internetową biblioteki i chcesz mieć niestandardowy typ postu o nazwie Książki . Można go zarejestrować jako

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

i tak proste, że masz teraz zarejestrowany niestandardowy typ postu.

Niestandardowy zrzut ekranu „Książka”

Ten fragment kodu można umieścić w pliku motywu functions.php lub w strukturze wtyczki.

Dodaj niestandardowe typy postów do głównego zapytania

Zarejestrowanie niestandardowego typu postu nie oznacza, że zostanie on automatycznie dodany do głównego zapytania. Musisz użyć filtru pre_get_posts aby dodać niestandardowe typy postów do głównego zapytania.

// 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;
}

Dodawanie niestandardowych typów postów do głównego kanału RSS

Rejestracja niestandardowego typu postu nie oznacza, że zostanie on automatycznie dodany do głównego kanału RSS. Aby dodać niestandardowe typy postów do głównego kanału RSS, musisz użyć filtru request .

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

Zarejestruj niestandardowy typ postu

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

}

Niestandardowy typ wpisu za pomocą motywu dwudziestu piętnastu WordPress

Możesz użyć dowolnej nazwy dla funkcji.

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

lub

add_action('init','custom_postytpe');

Możesz użyć dowolnego haka, który chcesz, ale oczywiście mają one inne znaczenie i zastosowania.

Prosty niestandardowy typ postu

Niestandardowy typ postu w domyślnym wyszukiwaniu

Możesz dodawać niestandardowe posty w domyślnym wyszukiwaniu wordpress, Dodaj poniższy kod w funkcjach theme.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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow