यहाँ प्रपत्र के पृष्ठ पर अंक लगाना का समर्थन करने का एक तरीका है:
<!--nextpage(.*?)?-->
कोर समर्थन करता है के रूप में एक simlar तरीके से <!--more(.*?)?-->
।
यहाँ एक उदाहरण है:
<!--nextpage Planets -->
Let's talk about the Planets
<!--nextpage Mercury -->
Exotic Mercury
<!--nextpage Venus-->
Beautiful Venus
<!--nextpage Earth -->
Our Blue Earth
<!--nextpage Mars -->
The Red Planet
उत्पादन के समान:
यह ट्वेंटी सोलह विषय पर परीक्षण किया गया था , जहाँ मुझे पैडिंग को समायोजित करना था और थोड़ी सी चौड़ाई :
.page-links a, .page-links > span {
width: auto;
padding: 0 5px;
}
डेमो प्लगइन
यहाँ एक डेमो प्लगइन का उपयोग करता है है content_pagination
, wp_link_pages_link
, pre_handle_404
और wp_link_pages_args
फिल्टर के इस extenstion समर्थन करने के लिए NextPage मार्कर ( पीएचपी 5.4+ ):
<?php
/**
* Plugin Name: Content Pagination Titles
* Description: Support for <!--nextpage(.*?)?--> in the post content
* Version: 1.0.1
* Plugin URI: http://wordpress.stackexchange.com/a/227022/26350
*/
namespace WPSE\Question202709;
add_action( 'init', function()
{
$main = new Main;
$main->init();
} );
class Main
{
private $pagination_titles;
public function init()
{
add_filter( 'pre_handle_404', [ $this, 'pre_handle_404' ], 10, 2 );
add_filter( 'content_pagination', [ $this, 'content_pagination' ], -1, 2 );
add_filter( 'wp_link_pages_link', [ $this, 'wp_link_pages_link' ], 10, 2 );
add_filter( 'wp_link_pages_args', [ $this, 'wp_link_pages_args' ], PHP_INT_MAX );
}
public function content_pagination( $pages, $post )
{
// Empty content pagination titles for each run
$this->pagination_titles = [];
// Nothing to do if the post content doesn't contain pagination titles
if( false === stripos( $post->post_content, '<!--nextpage' ) )
return $pages;
// Collect pagination titles
preg_match_all( '/<!--nextpage(.*?)?-->/i', $post->post_content, $matches );
if( isset( $matches[1] ) )
$this->pagination_titles = $matches[1];
// Override $pages according to our new extended nextpage support
$pages = preg_split( '/<!--nextpage(.*?)?-->/i', $post->post_content );
// nextpage marker at the top
if( isset( $pages[0] ) && '' == trim( $pages[0] ) )
{
// remove the empty page
array_shift( $pages );
}
// nextpage marker not at the top
else
{
// add the first numeric pagination title
array_unshift( $this->pagination_titles, '1' );
}
return $pages;
}
public function wp_link_pages_link( $link, $i )
{
if( ! empty( $this->pagination_titles ) )
{
$from = '{{TITLE}}';
$to = ! empty( $this->pagination_titles[$i-1] ) ? $this->pagination_titles[$i-1] : $i;
$link = str_replace( $from, $to, $link );
}
return $link;
}
public function wp_link_pages_args( $params )
{
if( ! empty( $this->pagination_titles ) )
{
$params['next_or_number'] = 'number';
$params['pagelink'] = str_replace( '%', '{{TITLE}}', $params['pagelink'] );
}
return $params;
}
/**
* Based on the nextpage check in WP::handle_404()
*/
public function pre_handle_404( $bool, \WP_Query $q )
{
global $wp;
if( $q->posts && is_singular() )
{
if ( $q->post instanceof \WP_Post )
$p = clone $q->post;
// check for paged content that exceeds the max number of pages
$next = '<!--nextpage';
if ( $p
&& false !== stripos( $p->post_content, $next )
&& ! empty( $wp->query_vars['page'] )
) {
$page = trim( $wp->query_vars['page'], '/' );
$success = (int) $page <= ( substr_count( $p->post_content, $next ) + 1 );
if ( $success )
{
status_header( 200 );
$bool = true;
}
}
}
return $bool;
}
} // end class
स्थापना : /wp-content/plugins/content-pagination-titles/content-pagination-titles.php
फ़ाइल बनाएं और प्लगइन को सक्रिय करें। हमेशा किसी भी प्लगइन का परीक्षण करने से पहले बैकअप के लिए एक अच्छा विचार है।
यदि शीर्ष अगला पृष्ठ मार्कर गायब है, तो पहला पृष्ठांकन शीर्षक संख्यात्मक है।
साथ ही यदि कोई कंटेंट पेजिनेशन टाइटल गायब है <!--nextpage-->
, तो यह उम्मीद के मुताबिक ही न्यूमेरिक होगा।
मैं पहले कक्षा में अगले पृष्ठ बग के बारे में भूल गया था WP
, यह दिखाता है कि क्या हम content_pagination
फ़िल्टर के माध्यम से पृष्ठों की संख्या को संशोधित करते हैं । यह हाल ही में # 35562 में यहां @PieterGoosen द्वारा रिपोर्ट किया गया था ।
हम अपने डेमो प्लगइन में एक pre_handle_404
फिल्टर कॉलबैक के साथ इसे दूर करने की कोशिश करते हैं , यहां की WP
कक्षा की जांच के आधार पर , जहां हम इसके बजाय की जांच करते हैं ।<!--nextpage
<!--nextpage-->
टेस्ट
यहाँ कुछ और परीक्षण हैं:
टेस्ट # 1
<!--nextpage-->
Let's talk about the Planets
<!--nextpage-->
Exotic Mercury
<!--nextpage-->
Beautiful Venus
<!--nextpage-->
Our Blue Earth
<!--nextpage-->
The Red Planet
1 चयनित के लिए आउटपुट :
जैसा सोचा था।
टेस्ट # 2
Let's talk about the Planets
<!--nextpage-->
Exotic Mercury
<!--nextpage-->
Beautiful Venus
<!--nextpage-->
Our Blue Earth
<!--nextpage-->
The Red Planet
5 चयनित के लिए आउटपुट :
जैसा सोचा था।
टेस्ट # 3
<!--nextpage-->
Let's talk about the Planets
<!--nextpage Mercury-->
Exotic Mercury
<!--nextpage-->
Beautiful Venus
<!--nextpage Earth -->
Our Blue Earth
<!--nextpage Mars -->
The Red Planet
3 चयनित के लिए आउटपुट :
जैसा सोचा था।
टेस्ट # 4
Let's talk about the Planets
<!--nextpage Mercury-->
Exotic Mercury
<!--nextpage Venus-->
Beautiful Venus
<!--nextpage Earth -->
Our Blue Earth
<!--nextpage Mars -->
The Red Planet
पृथ्वी के साथ आउटपुट चयनित:
जैसा सोचा था।
वैकल्पिक
एक और तरीका यह होगा कि इसके साथ जोड़े जाने वाले पृष्ठांकन शीर्षक का समर्थन करने के लिए इसे संशोधित किया जाए:
<!--pt Earth-->
सभी पृष्ठांकन शीर्षकों ( pts ) के लिए एकल टिप्पणी का समर्थन करना भी आसान हो सकता है :
<!--pts Planets|Mercury|Venus|Earth|Mars -->
या शायद कस्टम क्षेत्रों के माध्यम से?