更新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
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;
}
¹これは、1ページの投稿で複数の追加ページをテストするために使用したコードです
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;
}
また、4.4で追加された新しいcontent_paginationフィルターを活用してみました。
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;
}
この時点で、私はこの機能を復元する方法についてのアイデアがありません。どんな支援も歓迎します。