/ / Personalizzazione del post prima della post impaginazione - php, wordpress, paginazione, hook

Personalizzazione del post prima della post-impaginazione - php, wordpress, impaginazione, hook

Voglio eseguire uno script poco prima che il post venga impaginato.

Sono anche riuscito a raggiungere questo risultato eseguendo lo script poco prima che i dati venissero impaginati

if ( false !== strpos( $content, "<!--nextpage-->" ) )

in wp-includes/query.php

Ho bisogno di cambiare le pagine di post che è impaginato in base ad alcune condizioni.

Diciamo

if(condition == true){
$paged_data = explode("<!--nextpage-->", $content);
$i = 0;
$allpages = "";
foreach($paged_data as $p_data){
if( ($i) % 3 != 0){
$allpages = $allpages.$p_data;
}
else{
$allpages = $allpages . "<!--nextpage-->" .$p_data;
}
$i++;
}
$content = $allpages;
}

Ma ho bisogno di questo per essere raggiunto utilizzando alcuni ganci o filtri. In modo che il codice non venga cancellato quando wordpress viene aggiornato.

Ho provato the_content hook ma viene eseguito dopo che il post è stato impaginato.

Anche io ci ho provato the_post aggancia ma funziona solo con pochi temi.

risposte:

0 per risposta № 1

Ecco un esempio di come possiamo fondersi pagine in blocchi, quando si utilizza impaginazione del contenuto:

Dettaglio

Demo Plugin:

Possiamo usare il content_pagination per modificare l'impaginazione del contenuto:

/**
* Content Pagination - Merge pages in chunks
*/
add_filter( "content_pagination", function( $pages )
{
// Nothing to do without content pagination
if( count( $pages ) <= 1 )
return $pages;

// Number of pages per chunk
$pages_per_chunk = 3; // <-- Edit to your needs!

// Create chunks of pages
$chunks = array_chunk( $pages, $pages_per_chunk );

// Merge pages in each chunk
$merged = [];
foreach( (array) $chunks as $chunk )
$merged[] = join( "", $chunk );

return $merged;

} );

dove aggiustiamo il $pages_per_chunk come necessario.