anu
  • 0
Гуру

Как и где создается объект wp_query для RSS-каналов?

  • 0

Глядя на код в feed-rss2.php и feeds-rss2-comments.php, после преамбулы заголовка у нас есть цикл — например, в feeds-rss2-comments.php:

if ( have_comments() ) : while ( have_comments() ) : the_comment();
$comment_post = get_post($comment->comment_post_ID);
get_post_custom($comment_post->ID);

Где создается объект wp_comment_query для этого цикла?

То, что я делаю (следуя моему вчерашнему вопросу), создает 2 новых RSS-канала: один показывает сообщения, которые были удалены, а другой показывает комментарии, которые были удалены. Достаточно просто добавить новый вызов query_posts/get_comments, но есть ли более эффективный способ сделать это?

Share
  1. Эти файлы не загружаются напрямую, а аналогичны обычным файлам шаблонов, только после WP инициализации класса. Этот класс выполняет основной запрос, который уже может включать комментарии, если заданы правильные переменные запроса.

    Поток выполнения выглядит следующим образом, начиная с main index.php :

    require('./wp-blog-header.php');
        require_once( dirname(__FILE__) . '/wp-load.php' );
            // Initialization of settings, plugins, theme
        wp();
            WP::main();
                WP::init();
                WP::parse_request();
                    // Parse `/feed/` and `/comments/feed/` and set the query variables
                WP::send_headers();
                WP::query_posts();
                    WP::build_query_string();
                    WP_Query::query();
                        WP_Query::init();
                        WP_Query::get_posts();
                            // This does the actual query
                            // `pre_get_posts` is the action you'll probably want to use
                WP::handle_404();
                WP::register_globals();
        require_once( ABSPATH . WPINC . '/template-loader.php' );
            if ( is_feed() ) {
                do_feed();
                    // This calls the `do_feed_[feedtype]` action, e.g. rss2
                        do_feed_rss2( $for_comments );
                            if ( $for_comments )
                                load_template( ABSPATH . WPINC . '/feed-rss2-comments.php' );
                            else
                                load_template( ABSPATH . WPINC . '/feed-rss2.php' );
            }
    
    • 0

Оставить ответ

You must login to add an answer.