Feed'de sayfa içeriği nasıl gösterilir?


13

Feed'deki her sayfanın tüm içeriğini göstermek istiyorum.Bunu araştırdım ve bazı eklenti buldum ama sorunumu çözemedim.

Ben girdiğinizde istediğim http://swissaudio.com/craftsmanship/feedbana yemlerde sayfa içeriği sağlar. Bunu nasıl yapabilirim?


emin olmak için, yayınlarınızın tüm içeriğinin özet olarak değil özet akışında gösterilmesini mi yoksa tüm sayfaları (sayfanın post_type) özet akışına da mı eklemenizi istersiniz?
Majick

@majick Sayfadaki tüm içeriği feed'de göstermek istiyorum. Bu kodu da kullanıyorum ancak sonuç değişikliği oluyor add_filter('request', 'feed_request'); function feed_request($qv){ $rss_post_types = array('post', 'page'); if(isset($qv['feed']) && !isset($qv['post_type'])) $qv['post_type'] = $rss_post_types; return $qv; }
raxa

ilk bakışta iyi çalışacak gibi görünüyor, test ettiğiniz eklentileri devre dışı bıraktığınızdan emin olun ve ayrıca test ederken önbellekleri devre dışı bırakın.
Majick

Ana sayfa için yukarıdaki kod besleme çalışması nedeniyle @majick.Lütfen bu siteyi kontrol edin Beslemedeki http://swissaudio.com/feed/her sayfanın içeriğini göstermek istiyorum yani craftsmanshipsayfa için böyle bir şey yapmak istiyorum http://swissaudio.com/craftsmanship/feed/ama sonuç göstermiyor
raxa

3
Bu çok zor olduğunu kanıtladı Ben bir şans daha ile birkaç şey test ettik bu yüzden kendim bilmek istiyorum gibi bu için bir ödül açtı. :-)
majick

Yanıtlar:


7

İlk yani ana besleme sayfasındaki ekrana sonrası türünü ayarlamak /feedkullanarak pre_get_postskanca

$q->set('post_type', array('post', 'page'));

Tek bir sayfada WordPress yorum beslemesini gösterir, daha sonra bunu ayarlayın falseve beslemedeki sayfa içeriğini görüntüleyin.

$q->is_comment_feed = false;

Feed şablonunda, WordPress aramalarını the_excerpt_rss()çağırır, get_the_excerpt()böylece excerpt_lengthfiltreyi kullanarak uzunluğu maks.

Komple Örnek: -

add_action('pre_get_posts', 'wpse_227136_feed_content');
/**
 * Set post type in feed content and remove comment feed
 * @param type $q WP Query
 */
function wpse_227136_feed_content($q) {
    //Check if it main query and for feed
    if ($q->is_main_query() && $q->is_feed()) {
        //Set the post types which you want default is post
        $q->set('post_type', array('post', 'page'));
    }

    //Check if it feed request and for single page 
    if ($q->is_main_query() && $q->is_feed() && $q->is_page()) {
        //Set the comment feed to false
        $q->is_comment_feed = false;
    }
}

add_filter( 'excerpt_length', 'wpse_227136_excerpt_length', 999 );
/**
 * Filter the except length to full content.
 *
 * @param int $length Excerpt length.
 * @return int $length modified excerpt length.
 */
function wpse_227136_excerpt_length( $length ) {
    if (is_feed() && !get_option('rss_use_excerpt')) {
        return PHP_INT_MAX;
    }

    return $length;
}

ahh yorumların varsayılanı true. işte bu kadar ..! Peki, bunun /page/comments/feed/yerine aslında yorumları gösterecek bir şey olursa, bunun nasıl yapılacağı hakkında bir fikriniz var mı?
majick

Sanırım bunun için yeni yeniden yazma kuralları eklememiz gerekiyor. WP varsayılan olarak desteklemediğinden, bunun yerine withoutcomments=1cjbj tarafından yanıtlandığı gibi sorgu dizesini destekler . URL yeniden yazmada hiç iyi değilim: D
Sumit

1
URL yeniden yazma ile iyi değil, geri çevirmek ve withcomments=1benim cevap için destek eklemeye karar verdi .
majick

alıntı uzunluk filtresi için, eğer yanlışsa bir alıntı uzunluk filtresi gerekmeyeceği için kontrol get_option('rss_use_excerpt')etmemeliyse !get_option('rss_use_excerpt), tam içeriği zaten gösterecektir. O_o
majick

Peki neden olduğundan emin değilim ama bu satırı kontrol ediyorsanız core.trac.wordpress.org/browser/tags/4.5/src/wp-includes/… bu ayarı etkilemez, bu yüzden düzeltiyorum ne yapması gerekiyor.
Sumit

4

Bu ideal olmayabilir, ancak bir başlangıçtır. İlk önce tüm içeriğin feed'de olduğundan emin olun:

function fullcontentfeed($content) {
    global $post;
    $content = $post->post_content;
    return $content;
    }
add_filter('the_excerpt_rss', 'fullcontentfeed');

Daha sonra bu url'deki tüm feed'i görmelisiniz

http://swissaudio.com/craftsmanship/feed/?withoutcomments=1

Daha sonra add_rewrite_ruleziyaretçileri / feed / sitesinden yönlendirmek için kullanabilirsiniz . İdeal olmaktan uzak, ama belki başka birinin üzerinde çalışmaya başlaması.


kullanarak return get_the_content_feed()uyguladığı çünkü iyi olurdu the_contentayrıca filtreleri ... fakat bunun yerine içerik alanda, yayının açıklama alanına ne yazık ki bu çıkışlar tam içeriği.
majick

3

@Sumit tarafından belirtildiği gibi, bir sayfa için yorum beslemesini kapatmanız gerekir (varsayılan olarak sayfalarda yorumlar kapalı olduğu için gerçekten garip buluyorum?) ... Bu ile sonuçlandım (sayfa yorumlarını almak için izin veriyorum) ?withcomments=1istenirse besleyin ):

add_action('pre_get_posts', 'rss_page_feed_full_content');

function rss_page_feed_full_content($q) {
    // Check if it feed request and for single page
    if ($q->is_main_query() && $q->is_feed() && $q->is_page()) {
        //Set the comment feed to false
        $q->set('post_type', array('page'));
        // allow for page comments feed via ?withcomments=1
        if ( (isset($_GET['withcomments'])) && ($_GET['withcomments'] == '1') ) {return;}
        $q->is_comment_feed = false;
    }
}

Ancak sayfa içeriğini görüntülemek için, feed şablonu aslında rss_use_excerpttam metin mi yoksa özet mi görüntüleneceğine (Ayarlar -> Okuma sayfasında ayarlanır) karar vermeyi denediğinden, tam içeriğin bir sayfa feed'i için görüntülenmesini istiyorsanız bunun geçersiz kılınması gerekir ( böylece ana seçeneği yayınlar için istediğiniz gibi ayarlayabilirsiniz.) Aksi takdirde, içerik başka ne yaparsanız yapın içerik alanı yerine feed'in açıklama alanına gelebilir.

add_filter('pre_option_rss_use_excerpt', 'page_rss_excerpt_option');

function page_rss_excerpt_option($option) {
    // force full content output for pages
    if (is_page()) {return '0';}
    return $option;
}

Ve son olarak, bir sayfa alıntısı görüntülemek için RSS açıklama alanını almak için, bunu yapmak zorunda kalabilirsiniz (temelde wp_trim_excerptolmadan bir kopyasıdır strip_shortcodes) - iyi, yine de yaptım ama sayfadaki bazı garip kısa kod davranışlarından kaynaklanıyor olabilir test ediyordu:

add_filter('the_excerpt_rss','rss_page_excerpt');

function rss_page_excerpt($excerpt) {
    if (is_page()) {
        global $post; $text = $post->post_content;
        // removed this line otherwise got blank
        // $text = strip_shortcodes( $text );
        $text = apply_filters( 'the_content', $text );
        $text = str_replace(']]>', ']]>', $text);
        $excerpt_length = apply_filters( 'excerpt_length', 55 );
        $excerpt_more = apply_filters( 'excerpt_more', ' ' . '[…]' );
        $excerpt = wp_trim_words( $text, $excerpt_length, $excerpt_more );
    }
    return $excerpt;
}

Oh gerçekten üzgünüm: DI withoutcommentsşimdi aklımı kaybettim Şimdi okuyordum GÖRüyorum withcomment: D LOL yorumlarımı
siliyor

hayır problar bu bir fikrimi kesin olarak bükülmüş.
majick
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.