Pembaruan 2016-01-21
Semua pengujian saat ini di pihak saya sedang dilakukan pada pemasangan baru 4.4.1 dengan pengaturan berikut:
Plain permalinks
Twentysixteen Theme
No plugins activated
Jika kiriman hanya memiliki 1 halaman (yaitu <!--nextpage-->
tidak muncul di kiriman) maka halaman tambahan ditambahkan dengan sukses (bahkan jika Anda menambahkan beberapa halaman tambahan¹).
Welcome to WordPress. This is your first post. Edit or delete it, then start writing!
Jika posting memiliki 2+ halaman maka halaman tambahan 404 dan redirect kanonik ke halaman 1 dari postingan.
Welcome to WordPress. This is your first post. Edit or delete it, then start writing!
<!--nextpage-->
This is page 2
Dalam kasus kedua $wp_query->queried_object
kosong setelah Anda menekan halaman tambahan. Anda harus menonaktifkan pengalihan kanonik untuk melihatnyaremove_filter('template_redirect', 'redirect_canonical');
Kedua perbaikan inti berikut telah dicoba, secara terpisah dan bersama-sama, tanpa perubahan perilaku: https://core.trac.wordpress.org/ticket/35344#comment:16
https://core.trac.wordpress.org/ticket/35344#comment:34
Untuk kemudahan penggunaan, ini adalah kode yang saat ini saya uji dengan:
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;
}
¹Ini adalah kode yang saya gunakan untuk menguji beberapa halaman tambahan pada posting halaman tunggal
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;
}
Pertanyaan Asli
Sebelum 4.4 saya dapat menambahkan halaman tambahan ke posting mutlipage dengan yang berikut:
add_action('template_redirect', 'custom_content');
function custom_content() {
global $post;
$content = html_entity_decode(stripslashes(get_option('custom_content')));
$post->post_content .= $content;
}
Dengan get_option ('custom_content') menjadi sesuatu seperti:
<!--nextpage-->
Hello World
Sejak memutakhirkan ke 4.4 kode tidak berfungsi; menavigasi ke halaman tambahan memicu kesalahan 404 dan redirect_canonical mengirimkannya kembali ke permalink kiriman. Menonaktifkan redirect_canonical memungkinkan saya untuk melihat halaman tambahan dan konten tambahan ada di sana, tetapi masih memicu kesalahan 404.
Saya sudah mencoba sejumlah solusi, tidak ada yang menyelesaikan kesalahan 404, termasuk:
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;
}
Juga mencoba memanfaatkan filter content_pagination baru yang ditambahkan pada 4.4:
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;
}
Pada titik ini saya kehabisan ide tentang cara mengembalikan fungsi ini dan bantuan apa pun akan dihargai.