Оновлення 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;
}
Це код, який я використовував для тестування кількох додаткових сторінок на одній публікації сторінки
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, я можу переглянути додаткову сторінку, і вміст додаткового вмісту є, але він все ще викликає помилку 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;
}
На даний момент у мене немає ідей, як відновити цю функціональність, і будь-яка допомога буде вдячна.