Хорошие URL-адреса RSS-каналов для каждого пользовательского типа публикации


По умолчанию WP, похоже, отображает все сообщения всех типов в основной RSS-ленте. Вам нужно добавить переменную запроса post_type, чтобы отобразить запись определенного типа...

Итак, как я могу повернуть это:

http://site.com/feed/?post_type=book

В

http://site.com/feed/books/

?

И, если возможно, перепишите http://site.com/feed/ на http://site.com/feed/blog/, в котором должны отображаться только обычные сообщения...

Author: onetrickpony, 2011-03-25

1 answers

Если вы установите 'has_archive' => TRUE в register_post_type(), тип публикации будет иметь свой собственный канал на /books/feed/, и его элементы не будут включены в основной канал.

Пример плагина

<?php
/*
Plugin Name: WPSE13006 feed for CPT demo
*/
! defined( 'ABSPATH' ) and exit;

add_action( 'init', 'wpse13006_register' );

// Call wp-admin/options-permalink.php once after activation to make permalinks work
function wpse13006_register()
{
    register_post_type(
        'wpse13006'
    ,   array (
            'has_archive'         => TRUE
        ,   'label'               => 'wpse13006'
        ,   'public'              => TRUE
        ,   'publicly_queryable'  => TRUE
        ,   'query_var'           => 'wpse13006'
        ,   'rewrite'             => array ( 'slug' => 'wpse13006' )
        ,   'show_ui'             => TRUE
        ,   'show_in_menu'        => TRUE
        ,   'supports'            => array ( 'title', 'editor' )
        )
    );
}

Создайте один пост, опубликуйте и просмотрите его. Если вы подниметесь на один уровень до /wpse13006/ сейчас, вы найдете канал на /wpse13006/feed/. Сообщение не будет отображаться в основной ленте.

 4
Author: fuxia, 2020-06-15 08:21:38