4.4 में टूटी हुई <-! अगले पृष्ठ -> के साथ सामग्री जोड़ना


14

अपडेट 2016-01-21

मेरे अंत पर सभी वर्तमान परीक्षण निम्नलिखित सेटिंग्स के साथ 4.4.1 के नए इंस्टाल पर किए जा रहे हैं: Plain permalinks Twentysixteen Theme No plugins activated

यदि पोस्ट में केवल 1 पृष्ठ है (अर्थात <!--nextpage-->पोस्ट में प्रदर्शित नहीं होता है) तो अतिरिक्त पृष्ठों को सफलतापूर्वक जोड़ दिया जाता है (भले ही आप कई अतिरिक्त पेज जोड़ते हों)।

Welcome to WordPress. This is your first post. Edit or delete it, then start writing!

यदि पोस्ट में 2+ पृष्ठ हैं तो अतिरिक्त पृष्ठ 404 और पोस्ट के पृष्ठ 1 पर कैनोनिकल रीडायरेक्ट

Welcome to WordPress. This is your first post. Edit or delete it, then start writing!

<!--nextpage-->

This is page 2

$wp_query->queried_objectएक बार अतिरिक्त पृष्ठों को हिट करने के बाद दूसरा मामला खाली है। इसे देखने के लिए आपको विहित पुनर्निर्देशन को अक्षम करना होगाremove_filter('template_redirect', 'redirect_canonical');

निम्नलिखित दोनों मुख्य सुधारों को अलग-अलग और एक साथ करने की कोशिश की गई है, व्यवहार में कोई बदलाव नहीं: https://core.trac.wordpress.org/ticket/35344#comment:16

https://core.trac.wordpress.org/ticket/35344#comment:34

उपयोग में आसानी के लिए यह वह कोड है जिसका मैं वर्तमान में परीक्षण कर रहा हूं:

add_action('template_redirect', 'custom_content_one');
function custom_content_one() {
    global $post;
    $content = "\n<!--nextpage-->\nThis is the extra page v1";
    $post->post_content .= $content;
}

add_filter('content_pagination', 'custom_content_two', 10, 2);
function custom_content_two($pages, $post) {
    if ( in_the_loop() && 'post' === $post->post_type ) {
        $content = "This is the extra page v2";

        $pages[] = $content;
    }
    return $pages;
}

add_action('the_post', 'custom_content_three');
function custom_content_three() {
    global $multipage, $numpages, $pages;
    $content = "This is the extra page v3";

    $multipage = 1;
    $numpages++;
    $pages[] = $content;
}

Extraयह वह कोड है जिसका उपयोग मैंने एक पृष्ठ पर कई अतिरिक्त पृष्ठों का परीक्षण करने के लिए किया था

add_action('template_redirect', 'custom_content_one');
function custom_content_one() {
    global $post;
    $content = "\n<!--nextpage-->\nThis is the extra page v1-1\n<!--nextpage-->\nThis is the extra page v1-2\n<!--nextpage-->\nThis is the extra page v1-3";
    $post->post_content .= $content;
}

मूल प्रश्न

4.4 से पहले मैं निम्नलिखित के साथ एक अतिरिक्त पृष्ठ को एक अतिरिक्त पोस्ट करने में सक्षम था:

add_action('template_redirect', 'custom_content');
function custom_content() {
    global $post;
    $content = html_entity_decode(stripslashes(get_option('custom_content')));
    $post->post_content .= $content;
}

Get_option के साथ ('custom_content') कुछ इस तरह है:

<!--nextpage-->
Hello World

4.4 में अपग्रेड करने के बाद से कोड काम नहीं किया है; अतिरिक्त पृष्ठ पर नेविगेट करने से 404 त्रुटि हो जाती है और रीडायरेक्ट_कोनॉजिकल उन्हें पोस्ट के पारलिंक पर वापस भेज देता है। Redirect_canonical को अक्षम करने से मुझे अतिरिक्त पृष्ठ देखने की सुविधा मिलती है और इसमें एडिटोनल कंटेंट होता है, लेकिन फिर भी यह 40% की त्रुटि को ट्रिगर करता है।

मैंने कई वर्कअराउंड की कोशिश की है, जिनमें से कोई भी 404 त्रुटि को हल नहीं करता है, जिसमें शामिल हैं:

add_action('the_post', 'custom_content');
function custom_content() {
    global $multipage, $numpages, $pages;
    $content = html_entity_decode(stripslashes(get_option('custom_content')));

    $multipage = 1; // ensure post is considered multipage: needed for single page posts
    $numpages++; // increment number of pages
    $pages[] = $content;
}

4.4 में जोड़ा गया नया content_pagination फ़िल्टर का लाभ उठाने की कोशिश की :

add_filter('content_pagination', 'custom_content', 10, 2);
function custom_content($pages, $post) {
    $content = html_entity_decode(stripslashes(get_option('custom_content')));

    $pages[] = $content;
    return $pages;
}

इस बिंदु पर मैं इस कार्यक्षमता को पुनर्स्थापित करने के बारे में विचारों से बाहर हूं और किसी भी सहायता की सराहना की जाएगी।


ठीक है इसलिए मेरे पास इसका अपडेट है, दुर्भाग्य से यह सकारात्मक नहीं है। जाहिरा तौर पर अगर यह अतिरिक्त पेज 2 है, तो यह ताजा इंस्टॉल पर काम करता है। हालाँकि, अगर अतिरिक्त पेज पेज 3 है (या उच्चतर है, तो यह टूट जाता है)। / कलाई
मिलंबर

1
बग खोदो !!!!! हाँ !!!!। जल्द ही मेरे उत्तर को अपडेट करूंगा
पीटर गोसन

जवाबों:


8

अद्यतन 21-01-2016 19:35 SA समय - बग ध्वनि !!!!! हाँ !!!!!!

मैंने आखिरकार बग ढूंढ लिया। जैसा कि आपने अपने अंतिम अपडेट में कहा था, विफलता केवल तब होती है जब सामग्री में $post_contentकोई <!--nextpage-->टैग होता है। मैंने इसका परीक्षण किया, और पुष्टि की कि पृष्ठ <!--nextpage-->४०४ के बाद के पृष्ठ के बाद का कोई भी पृष्ठ और फिर पृष्ठ पहले पृष्ठ पर पुनः निर्देशित हो जाता है।

यह उस विधि में कोड की निम्न पंक्तियों के कारण है handle_404()जो वर्डप्रेस 4.4 में WPकक्षा में पेश की गई थी

// check for paged content that exceeds the max number of pages
$next = '<!--nextpage-->';
if ( $p && false !== strpos( $p->post_content, $next ) && ! empty( $this->query_vars['page'] ) ) {
    $page = trim( $this->query_vars['page'], '/' );
    $success = (int) $page <= ( substr_count( $p->post_content, $next ) + 1 );
}

यह कोड क्या करता है, जब भी <!--nextpage-->टैग में सेट किया जाता है post_content, तो यह 404 लौटाएगा जब कोई भी पृष्ठ एक्सेस किया जाएगा जो content_paginationफ़िल्टर के माध्यम से सामग्री के बाद जोड़ा जाता है । 404 सेट होने के कारण, redirect_canonical()किसी भी पृष्ठ को पहले पृष्ठ पर वापस भेज देता है

मैंने इस मुद्दे के बारे में एक टीआरसी टिकट दायर किया है जिसे आप यहां देख सकते हैं

लेखन के समय अभी तक कोई प्रतिक्रिया नहीं थी, इसलिए नियमित रूप से टिकट की स्थिति की जांच करना सुनिश्चित करें

वर्तमान समाधान - ए / डब्ल्यू TRICK टिकट फ़ीडबैक

अभी के लिए, जब तक हमें भविष्य की रिलीज़ में कोई प्रतिक्रिया और संभावित सुधार नहीं मिलते, तब तक उन पंक्तियों को WPअगली सूचना तक कक्षा से हटा दें

यह समय क्या है ...... यह समय खत्म हो रहा है !!!!!

मेरे पास इसे पूरी तरह से परखने का समय था। मैंने आपका कोड लिया और उस पर परीक्षण किया:

  • मेरा v4.3 लोकल इंस्टाल

  • मेरा v4.4.0 लोकल इंस्टाल

  • मेरा v4.4.1 लोकल इंस्टाल

  • पूरा नया v4.4.1 स्थानीय केवल Hello Worldपोस्ट और Sample Pageपेज के साथ स्थापित करें

मेरे पर्मलिंक के साथ सेट पर

  • default तथा

  • Post Name

यहां मेरी परीक्षा पोस्ट के अंदर 4 पेज बनाने के लिए मेरा टेस्ट कोड है।

add_filter('content_pagination', 'custom_content', 10, 2);
function custom_content($pages, $post) {
    $pages_to_add = [
        'Hello World Page 2',
        'Hello World Page 3',
        'Hello World Page 4',
    ];

    foreach ( $pages_to_add as $page_to_add ){
        $pages[]  = html_entity_decode(
            stripslashes(
                $page_to_add
            )
        );
    }

    return $pages;
}

मैंने भी परीक्षण किया

add_filter('content_pagination', 'custom_content', 10, 2);
function custom_content($pages, $post) {
    $pages_to_add = [
        '<!--nextpage--> Hello World Page 2',
        '<!--nextpage--> Hello World Page 3',
        '<!--nextpage--> Hello World Page 4',
    ];

    foreach ( $pages_to_add as $page_to_add ){
        $pages[]  = html_entity_decode(
            stripslashes(
                $page_to_add
            )
        );
    }

    return $pages;
}

अच्छे मापन के लिए

प्रत्येक और प्रत्येक स्थापित और पर्मलिंक संरचना पर, आपके सभी कोड काम ( v4.3 को छोड़कर content_paginationजो अपेक्षित है ) को छोड़कर

मैंने Sample Pageएक स्थिर फ्रंट पेज के रूप में भी सेट किया है, लेकिन यह पेज 2 पर विफल रहा है जो बग के अनुरूपता के रूप में मेरे मूल ANSWER और ** EDIT में वर्णित है।

इसलिए निष्कर्ष यह है कि इसका कोर में बग या कोर के किसी अन्य बग से कोई लेना-देना नहीं है। टिप्पणियों से, कुछ पृष्ठांकित पोस्ट पृष्ठों पर queried ऑब्जेक्ट को परेशान कर रहा है, और वह कुछ है जिसे हमें डीबग करने की आवश्यकता है। दुर्भाग्य से यह समस्या अब स्थानीय हो गई है, मैं सटीक समाधान नहीं दे सकता।

ISSUE को छोड़ना

आपको समस्या को डीबग करने के लिए निम्न कार्य प्रवाह का उपयोग करने की आवश्यकता है

  • अपने आप को बहुत सारी चीनी के साथ उच्च कैफीन कॉफी की एक बड़ी मात्रा में प्राप्त करें

  • आप का db बैकअप लें

  • निम्न प्लगइन्स डाउनलोड करें और इंस्टॉल करें ( मेरा किसी भी प्लगइन से कोई संबंध नहीं है )

    • सामान्य डीबगिंग के लिए ऑब्जेक्ट डीबग करें । एक बार स्थापित और सेटअप, सभी स्पष्ट बगों की मरम्मत करें जो प्लगइन द्वारा हाइलाइट किए जा सकते हैं। यदि आपके पास स्पष्ट कीड़े हैं, तो अगले मुख्य बुलेट बिंदु पर जारी न रखें। पहले उन्हें ठीक करो

    • DB प्रबंधक जिसे आप अगली बुलेट बिंदु पर जारी रखने से पहले अपने DB की मरम्मत और सफाई के लिए उपयोग करेंगे

  • सभी कैश, ब्राउज़र और प्लगइन्स साफ़ करें

  • सभी प्लगइन्स को निष्क्रिय करें और अच्छे उपाय के लिए सभी कैश को फिर से साफ़ करें। चूँकि यह समस्या एक पुनर्निर्देशन समस्या की तरह दिखती है, मैं शायद पहले सभी प्लगइन्स को निष्क्रिय कर दूंगा, जिसमें पुनर्निर्देशन के साथ कुछ करना हो सकता है। यह हो सकता है कि एक प्लगइन अभी तक v4.4 के साथ संगत नहीं है। जाँच करें कि क्या समस्या बनी रहती है, यदि ऐसा होता है, तो अगले बुलेट बिंदु पर जारी रखें, अन्यथा, इसे और अधिक विस्तार से देखें

    सभी प्लगइन्स को निष्क्रिय करके प्रारंभ करें, आप केवल उन प्लगइन्स को निष्क्रिय करके भी शुरू कर सकते हैं जो समस्या पैदा करने के लिए स्पष्ट हो सकते हैं। प्रत्येक प्लगइन की सक्रियता के बाद अपने इंस्टॉल को सही तरीके से परखें। पहला प्लगइन सक्रिय हो गया जो समस्या का कारण बना। उस स्थिति में, डिबगिंग विवरण के साथ प्लगइन लेखक से संपर्क करें। बस हर उपाय के बाद अपने कैश को साफ करना सुनिश्चित करें

  • यदि आप इस बिंदु पर पहुंच गए हैं, तो पिछले बुलेट बिंदु ने आपके मुद्दे को हल नहीं किया है। अगला कदम इस मुद्दे के रूप में अपनी थीम को खत्म करने के लिए एक बंडल किए गए विषय पर स्विच करना चाहिए। बस फिर से, स्पष्ट कैश।

  • यदि सब कुछ विफल रहा, तो आपको दो और विकल्पों के साथ छोड़ दिया जाएगा

    • हटाएं .htaccessऔर वर्डप्रेस को एक नया बनाएँ

    • वर्डप्रेस को पुनर्स्थापित करें

इससे आपकी समस्या का समाधान होना चाहिए। यदि ऐसा नहीं होता है, तो आपको वर्डप्रेस कोर में एक बग पर विचार करने की आवश्यकता है जो समस्या का कारण हो सकता है।

मुझे उम्मीद है कि यह बग को पकड़ने में मदद करेगा

अपडेट करें

मुझे वास्तव में फ़ोलोइंग ट्रेक टिकट से जुड़ा होना चाहिए जो कि सब कुछ अधिक विस्तार से समझाता है

उपरोक्त ट्रेक टिकट से दिलचस्प और काफी प्रासंगिक पैच

मैं इस समय किसी भी चीज का परीक्षण नहीं कर सकता, लेकिन आपको सुझाए गए पैच के माध्यम से काम करना चाहिए और उनका परीक्षण करना चाहिए। जो मैं उठा सकता हूं, वह यह है कि एक ही कोड redirect_canonical()जिसमें स्थिर फ्रंट पेजों के पेजिनेशन के लिए जिम्मेदार है, सिंगल पेजों के लिए पेजिनेशन के लिए भी जिम्मेदार है।

मूल ANSWER

सिंगल पेज ( जैसे स्टैटिक फ्रंट पेज ) get_query_var( 'page' )पेजेंट का उपयोग करता है। वर्डप्रेस 4.4 ( और v4.4.1 में ) के साथ, एक बग आया था जो पेजेशन केget_query_var( 'page' ) लिए उपयोग करते समय पेजेशन के साथ समस्याओं का कारण बनता है ।

वर्तमान बग रिपोर्टें, जैसे trac टिकट # 35365 , में केवल स्थैतिक फ्रंट पेजों का उल्लेख है, जिनमें पेजेशन की समस्या है, लेकिन जैसा कि बग से संबंधित है get_query_var( 'page' ), मुझे लगता है कि यह एकल पोस्ट पेजिनेशन के साथ मुद्दों का भी कारण होगा जो भी उपयोग करता है get_query_var( 'page' )

आपको ट्रेक टिकट में वर्णित पैच की कोशिश करनी चाहिए। यदि यह काम करता है, तो आप पैच लागू कर सकते हैं और v4.4.2 की प्रतीक्षा कर सकते हैं, जिसमें यह बग तय हो जाएगा


1
उम्मीद है कि यह ओपी के लिए मुद्दा है, बहुत संभावना लगता है (आज इस में खुदाई करने में सक्षम नहीं; ;-))
बीरगीर

1
तय करने की कोशिश की, भी अक्षम permalinks; कोई परिवर्तन नहीं होता है।
मिलम्बर

1
समय रहते ही मैं इस पर गौर करूंगा। मुझे लगता है कि जवाब बग में निहित है, इसे नीचे ट्रैक करना है। आशा है कि आपको जल्द ही कोई समाधान मिल जाएगा
पीटर गोसन

2
मेरे अपडेट की जाँच करें, मैंने बग ढूंढ लिया है और बग रिपोर्ट भी दर्ज की है
पीटर गोज़ेन

2
पुष्टि की गई कि सभी 3 विधियां एक बार उन पंक्तियों पर टिप्पणी करने का काम करती हैं :) बंद टिकट 35544 आपके पक्ष में
मिलम्बर

4

ध्यान दें कि आपके द्वारा दिए गए उन तीन उदाहरणों के लिए एक सिंटैक्स त्रुटि है:

add_filter('content_pagination', 'custom_content'), 10, 2);

add_action('the_post', 'custom_content'));

add_action('template_redirect', 'custom_content'));

जहां एक अतिरिक्त )जोड़ा जाता है।

इन पंक्तियों को बदलें:

add_filter( 'content_pagination', 'custom_content', 10, 2);

add_action( 'the_post', 'custom_content' );

add_action( 'template_redirect', 'custom_content' );

मैं सामान्य रूप से वैश्विक वस्तुओं के साथ खिलवाड़ करने की सलाह नहीं दूंगा, इसलिए मुझे लगता है कि content_paginationफिल्टर के साथ आपका अंतिम उदाहरण यहां जाने का तरीका है।

आप इसके साथ खाली पन्नों को जोड़ने से भी बचना चाह सकते हैं:

if( ! empty( $content ) )
    $pages[] = $content;

यहां भी एक लापता )है:

$content = html_entity_decode(stripslashes(get_option('custom_content'));

1
मेरी गलती, अतिरिक्त) को कॉपी करने और उन्हें उस वर्ग से बाहर चिपकाने से छोड़ दिया गया जो वे मेरे वास्तविक कार्यान्वयन के साथ हैं। मैंने उन्हें ऑप से हटा दिया है। दुर्भाग्य से content_pagination संस्करण 404 त्रुटि को भी ठीक नहीं करता है।
19

1
$ सामग्री लाइन में एक लापता) भी है - अपडेट देखें। @ माइलम्बर
20:00

1
धन्यवाद, निश्चित। कोई भी सिंटैक्स त्रुटियां जो आप op कोड में देख रहे हैं, वे पोस्ट के लिए इसे सरल बनाने से हैं।
मिलंबर

2
ठीक है, मैंने इसे एक वैनिला WP 4.4 पर ट्वेंटी सिक्सटीन थीम के साथ स्थापित किया है और यह वहां अपेक्षित रूप से काम करता है, इसलिए मुझे लगता है कि यह आपके सेटअप में कुछ और हो सकता है जो आपको समस्या दे रहा है। @ माइलम्बर
21

1
अजीब बात है, मैंने इसे 2 अलग-अलग देव परिवेशों में ट्वेंटीफिनह के साथ आजमाया और उन दोनों का परिणाम समान था। मैं इस पर एक और नज़र डालूंगा, धन्यवाद @birgire
मिलंबर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.