Показывать сообщения созданной категории в пользовательских типах сообщений - PullRequest
1 голос
/ 12 июля 2020
  1. Я создал настраиваемый тип сообщения в функции. php.

  2. Я добавил функцию категорий для настраиваемого типа сообщения.

  3. Я создал напр. Сообщение 1 и сообщение 2.

  4. Затем я создал 2 категории Категория 1, Категория 2.

и установил на панели WP этот пост 1 имеет категорию 1, а сообщение 2 - категорию 2, но сообщения не отображаются на странице категории, я пытался отредактировать категорию. php но ничего не происходит.

есть ли у вас какие-либо идеи по поводу как это решить? Какую функцию мне добавить в категорию. php?

функций. php

/* Custom Post Type Start */

function create_posttype() {
    register_post_type( 'news',
    // CPT Options
    array(
      'labels' => array(
       'name' => __( 'news' ),
       'singular_name' => __( 'News' )
      ),
      'taxonomies' => array('category'),  //add this....
      'public' => true,
      'has_archive' => false,
      'rewrite' => array('slug' => 'news'),
     )
    );
    }
    // Hooking up our function to theme setup
    add_action( 'init', 'create_posttype' );


/* Edit custom post type */

    function cw_post_type_news() {
        $supports = array(
      
        'title', // post title
        'editor', // post content
        'thumbnail', // featured images
        'excerpt', // post excerpt
        'custom-fields', // custom fields
        'revisions', // post revisions
        'post-formats', // post formats
        );
        $labels = array(
        'name' => _x('Produkty', 'plural'),
        'singular_name' => _x('Produkt', 'singular'),
        'menu_name' => _x('Produkty', 'admin menu'),
        'name_admin_bar' => _x('produkty', 'admin bar'),
        'add_new' => _x('Dodaj', 'add new'),
        'add_new_item' => __('Dodaj produkt'),
        'new_item' => __('Nowy '),
        'edit_item' => __('Edytuj '),
        'view_item' => __('Zobacz'),
        'all_items' => __('Wszystkie produkty'),
        'search_items' => __('Wyszukaj'),
        'not_found' => __('Brak'),
        );
        $args = array(
        'supports' => $supports,
      
        'labels' => $labels,
        'public' => true,
        'query_var' => true,
        'rewrite' => array('slug' => 'news'),
        'has_archive' => true,
        'hierarchical' => false,
        );
        register_post_type('news', $args);
        }
      
        add_action('init', 'cw_post_type_news');
        

Ответы [ 2 ]

0 голосов
/ 12 июля 2020

Хороший способ показать сообщение из произвольного типа сообщения, вам нужно использовать файл шаблона taxonomy- {taxonomy}. php или taxonomy- {taxonomy} - {term}. php.

Но на самом деле использование category. php или taxonomy. php может оказаться не тем, чем вы хотите. Вы пробовали использовать archive- {post-type}. php для отображения списка индекса архива сообщений из вашего пользовательского типа сообщения?

Если вы используете постоянные ссылки, оптимизированные для SEO, то URL вашего CPT, скорее всего, будет будет примерно так:

http://example.com/movies

Если вы не используете постоянные ссылки, оптимизированные для SEO, тогда URL-адрес вашего настраиваемого типа сообщения будет примерно таким:

http://example.com/?post_type=movies

Не забудьте заменить example.com своим собственным доменным именем, а фильмы - своим собственным именем типа сообщения.

Но если вы нужно показать сообщение на странице категории по умолчанию, вам нужно сделать это:

add_action( 'pre_get_posts', 'add_my_custom_post_type' );
function add_my_custom_post_type( $query ) {
    if ($query->is_main_query()) 
        $query->set( 'post_type', array( 'post', 'news' ) );
    return $query;
}
0 голосов
/ 12 июля 2020

Вам необходимо создать настраиваемую таксономию для вашего настраиваемого типа сообщения, потому что если category. php вызывает тип сообщения = post, то ваш тип сообщения не попадает в запрос.

Пример настраиваемой таксономии :

function taxonomies_examle() {
$labels = array(
    'name'              => _x( 'Example', 'Example' ),
    'singular_name'     => _x( 'Example', 'Example' ),
    'search_items'      => __( 'Search Example' ),
    'all_items'         => __( 'All Example' ),
    'parent_item'       => __( 'Parent Example' ),
    'parent_item_colon' => __( 'Parent Example:' ),
    'edit_item'         => __( 'Edit Example' ), 
    'update_item'       => __( 'Update Example' ),
    'add_new_item'      => __( 'Add New Example' ),
    'new_item_name'     => __( 'New Example' ),
    'menu_name'         => __( 'Example' ),
);

$args = array(
    'labels' => $labels,
    'hierarchical' => true,
    'public' => true,  // it's not public, it shouldn't have it's own permalink, and so on
    'publicly_queriable' => true,  // you should be able to query it
    'show_ui' => true,  // you should be able to edit it in wp-admin
    'exclude_from_search' => false,  // you should exclude it from search results
    'show_in_nav_menus' => true,  // you shouldn't be able to add it to menus
    'has_archive' => true,  // it shouldn't have archive page
    'rewrite' => true,  // it shouldn't have rewrite rules
    'supports' => array('title', 'thumbnail'),
);

register_taxonomy( 'examle', 'your-custom-post-type', $args );
}
add_action( 'init', 'taxonomies_examle', 0);

Затем вы можете создать пример таксономии. php и запросить там свое сообщение из категорий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...