Cập nhật 2016-01-21
Tất cả các thử nghiệm hiện tại của tôi đang được thực hiện trên các bản cài đặt mới 4.4.1 với các cài đặt sau:
Plain permalinks
Twentysixteen Theme
No plugins activated
Nếu bài đăng chỉ có 1 trang (tức là <!--nextpage-->
không xuất hiện trong bài viết) thì các trang phụ sẽ được nối thành công (ngay cả khi bạn nối thêm nhiều trang).
Welcome to WordPress. This is your first post. Edit or delete it, then start writing!
Nếu bài đăng có hơn 2 trang thì các trang phụ 404 và chuyển hướng chính tắc sang trang 1 của bài đăng.
Welcome to WordPress. This is your first post. Edit or delete it, then start writing!
<!--nextpage-->
This is page 2
Trong trường hợp thứ hai $wp_query->queried_object
là trống khi bạn nhấn vào các trang phụ. Bạn sẽ cần phải vô hiệu hóa chuyển hướng chính tắc để thấy điều nàyremove_filter('template_redirect', 'redirect_canonical');
Cả hai bản sửa lỗi cốt lõi sau đây đã được thử, riêng rẽ và cùng nhau, không có thay đổi trong hành vi: https://core.trac.wordpress.org/ticket353344#comment:16
https://core.trac.wordpress.org/ticket353344#comment:34
Để dễ sử dụng, đây là mã tôi hiện đang thử nghiệm với:
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;
}
Đây là mã tôi đã sử dụng để kiểm tra nhiều trang bổ sung trên một bài đăng trang
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;
}
Câu hỏi gốc
Trước 4.4 tôi đã có thể nối thêm một trang vào một bài đăng khác nhau như sau:
add_action('template_redirect', 'custom_content');
function custom_content() {
global $post;
$content = html_entity_decode(stripslashes(get_option('custom_content')));
$post->post_content .= $content;
}
Với get_option ('custom_content') là một cái gì đó như:
<!--nextpage-->
Hello World
Kể từ khi nâng cấp lên 4.4, mã không hoạt động; điều hướng đến trang bổ sung gây ra lỗi 404 và redirect_canonical gửi chúng trở lại permalink của bài đăng. Vô hiệu hóa redirect_canonical cho phép tôi xem trang phụ và nội dung bổ sung ở đó, nhưng nó vẫn gây ra lỗi 404.
Tôi đã thử một số cách giải quyết, không có cách nào khắc phục lỗi 404, bao gồm:
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;
}
Cũng đã thử tận dụng bộ lọc content_pagination mới được thêm vào trong 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;
}
Tại thời điểm này tôi không biết gì về cách khôi phục chức năng này và mọi hỗ trợ sẽ được đánh giá cao.