Обновление 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;
}
CodeЭто код, который я использовал для тестирования нескольких дополнительных страниц в одном посте
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 отправляет их обратно на постоянную ссылку сообщения. Отключение redirect_canonical позволяет мне просматривать дополнительную страницу, и дополнительный контент есть, но он все равно вызывает ошибку 404.
Я пробовал несколько обходных путей, ни один из которых не устраняет ошибку 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;
}
Также попытался использовать новый фильтр content_pagination, который был добавлен в 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;
}
На данный момент у меня нет идей о том, как восстановить эту функциональность, и любая помощь будет принята с благодарностью.