このWebサイトでは、検索またはカテゴリクエリの結果全体を1つの大きなドキュメントとして印刷できるように、ページ付けを無効にすることができます。明らかに思えるので、私はプラグインが見つからなかったのには驚きました...今は多分私はその理由を知っています。
私はしばらくこれに取り組んできました、そして私はWordPressの私の理解がちょうどそれに達していないのではないかと思っています...私が試みてきたものは以下の通りです:
Ithink私が抱えている問題は、URLからクエリ文字列を取得してそれをテストすることができる場所に到達する前に、WordPressプロセスでページ付けが早すぎる設定になっていることです。コアをハックせずに!)
2つの質問と考え
redirect_canonical
を使ってこれを行うことが可能かもしれません(私は全く理解していないと認めます!)私はこれの無限のバリエーションに戸惑いました - ここに最新の試みがあります(若干の重複があるかもしれませんが)。クエリ文字列を設定してURLから取り出すことはうまくいくようです、そしてページ付けを無効にする機能も働きます...しかしそれが定位置にあるときalwaysは動作します(または動作しません)。条件付きでオン/オフを切り替える方法はありません。
Functions.phpで:
/* register custom query var (from URL) to toggle pagination */
function jr_add_query_vars_filter( $displayvars ){
$displayvars[] = "onepageprint";
return $displayvars;
}
add_filter( 'query_vars', 'jr_add_query_vars_filter' );
get_query_var( 'onepageprint', 0 );
/* disable pagination conditionally on custom query var setting (from URL query string)
* NOT WORKING YET */
add_Action('init', 'remove_pagination');
function remove_pagination() {
if ( ! $onepageprint == 1 )
return; // stop here.
/* Disable content pagination, based on
* https://wp-types.com/forums/topic/remove-pagination-from-archive-view/ */
add_action('parse_query', 'no_nopaging');
function no_nopaging($query) {
$query->set('nopaging', 1);
}
}
ページテンプレートで(多くの試みのうちの1つ) - 私はこれ、あるいはそれに類するものがsearch.phpとarchive.phpの両方に入る必要があると思います:
// call no-pagination function - DIDN'T WORK
if ( $onepageprint == 1 ) {
no_nopaging($query);
}
私はこれがいくらか理にかなっていることを願っています、そしてそれに答えるためにあなたが私の設定についてもっと必要とするなら私に知らせてください。残念ながら、私は実際のサイトへのリンクを投稿することはできません。それは私的なリサーチサイトなのですから、その上のすべてのものは機密です!
これを行うより良い方法へのいくつかのポインターさえ素晴らしいでしょう。どうもありがとう。
[編集:投稿直後にタイトルが改善!]
pre_get_posts
にフックすることでうまくいくはずだと思います。
function wpse_254661_remove_pagination( $query ) {
if ( $query->is_main_query() && get_query_var( 'onepageprint', 0 ) ) {
$query->query_vars['nopaging'] = 1;
$query->query_vars['posts_per_page'] = -1;
}
}
add_action( 'pre_get_posts', 'wpse_254661_remove_pagination' );
このように、あなたはそれがフェッチされる直前にあなたのクエリを修正することができて、クエリオブジェクトはフックによって正しく関数に渡されます。メインクエリにのみ影響を与えるチェックもあります。