問題: カスタムカテゴリテンプレートのデフォルトのWordPressクエリが実行されないようにしようとしている。私は可能な解決策を見つけました、しかしそれがすべてのpostクエリの実行を妨げるように見えます:
function _cancel_query( $query ) {
if ( !is_admin() && !is_feed() && is_search() ) {
$query = false;
}
return $query;
}
add_action( 'posts_request', '_cancel_query' );
ソース: http://vadimk.com/2010/05/11/disable-wordpress-search-query/ /
'@ query-> is_main_query()'は 'posts_request'アクションでは動作しません。無駄な操作を実行せずに、コードが投稿の取得を処理できるようにする、デフォルトのWordPressクエリのみを防ぐための優雅な方法はありますか。
なぜ: 重複したコンテンツのない通常の投稿の固定量を取得する必要があります。これは、投稿クエリで十分な検索結果が得られるとは限らないためです。おすすめボックスに入力するおすすめ投稿。それでもやはり、AJAXページネーションを追加する必要があります。
編集#2: Rarstが提案したように 'pre_get_posts'でWP_Queryを実行しようとした場合( テンプレートでWP_Queryを使用する能力を維持しながら、デフォルトのクエリの実行を防ぐ方法? ):
"WP_Queryが設定される前にpre_get_postsが実行されます。WP_Queryに依存するテンプレートタグや条件付き関数の中には機能しないものがあります。例えば、is_front_page()は機能しませんが、is_home()は機能します。その場合は直接作業する必要があります。引数varとしてpre_get_postsフックに引数として渡されます(このページの例では$ query)。
ソース: https://codex.wordpress.org/Class_Reference/WP_Query
WP_Queryはメインのクエリの前のこの段階で初期化されます、そしてこのような結果を避けるために(ログをチェックアウトする)あなたはそれをラップしなければなりません:
if ($query->is_main_query()) {
$args = array();
$query = new WP_Query( $args );
}
LOG:
[30-Apr-2013 17:07:12 UTC] PHP Fatal error: Maximum function nesting level of '100' reached, aborting! in C:\Users\serwis\Dropbox\www\XYZ\wp-includes\functions.php on line 2769
[30-Apr-2013 17:07:12 UTC] PHP Stack trace:
[30-Apr-2013 17:07:12 UTC] PHP 1. {main}() C:\Users\serwis\Dropbox\www\XYZ\index.php:0
[30-Apr-2013 17:07:12 UTC] PHP 2. require() C:\Users\serwis\Dropbox\www\XYZ\index.php:17
[30-Apr-2013 17:07:12 UTC] PHP 3. wp() C:\Users\serwis\Dropbox\www\XYZ\wp-blog-header.php:14
[30-Apr-2013 17:07:12 UTC] PHP 4. WP->main() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\functions.php:779
[30-Apr-2013 17:07:12 UTC] PHP 5. WP->query_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\class-wp.php:549
[30-Apr-2013 17:07:12 UTC] PHP 6. WP_Query->query() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\class-wp.php:485
[30-Apr-2013 17:07:12 UTC] PHP 7. WP_Query->get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:2972
[30-Apr-2013 17:07:12 UTC] PHP 8. do_action_ref_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:1924
[30-Apr-2013 17:07:12 UTC] PHP 9. call_user_func_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487
[30-Apr-2013 17:07:12 UTC] PHP 10. gs_pre_get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487
[30-Apr-2013 17:07:12 UTC] PHP 11. WP_Query->__construct() C:\Users\serwis\Dropbox\www\XYZ\wp-content\themes\roots-XYZ\lib\custom.php:14
[30-Apr-2013 17:07:12 UTC] PHP 12. WP_Query->query() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:3059
[30-Apr-2013 17:07:12 UTC] PHP 13. WP_Query->get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:2972
[30-Apr-2013 17:07:12 UTC] PHP 14. do_action_ref_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:1924
[30-Apr-2013 17:07:12 UTC] PHP 15. call_user_func_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487
[30-Apr-2013 17:07:12 UTC] PHP 16. gs_pre_get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487
[30-Apr-2013 17:07:12 UTC] PHP 17. WP_Query->__construct() C:\Users\serwis\Dropbox\www\XYZ\wp-content\themes\roots-XYZ\lib\custom.php:14
[30-Apr-2013 17:07:12 UTC] PHP 18. WP_Query->query() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:3059
[30-Apr-2013 17:07:12 UTC] PHP 19. WP_Query->get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:2972
[30-Apr-2013 17:07:12 UTC] PHP 20. do_action_ref_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:1924
[30-Apr-2013 17:07:12 UTC] PHP 21. call_user_func_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487
[30-Apr-2013 17:07:12 UTC] PHP 22. gs_pre_get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487
[30-Apr-2013 17:07:12 UTC] PHP 23. WP_Query->__construct() C:\Users\serwis\Dropbox\www\XYZ\wp-content\themes\roots-XYZ\lib\custom.php:14
[30-Apr-2013 17:07:12 UTC] PHP 24. WP_Query->query() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:3059
[30-Apr-2013 17:07:12 UTC] PHP 25. WP_Query->get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:2972
[30-Apr-2013 17:07:12 UTC] PHP 26. do_action_ref_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:1924
[30-Apr-2013 17:07:12 UTC] PHP 27. call_user_func_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487
[30-Apr-2013 17:07:12 UTC] PHP 28. gs_pre_get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487
[30-Apr-2013 17:07:12 UTC] PHP 29. WP_Query->__construct() C:\Users\serwis\Dropbox\www\XYZ\wp-content\themes\roots-XYZ\lib\custom.php:14
[30-Apr-2013 17:07:12 UTC] PHP 30. WP_Query->query() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:3059
[30-Apr-2013 17:07:12 UTC] PHP 31. WP_Query->get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:2972
[30-Apr-2013 17:07:12 UTC] PHP 32. do_action_ref_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:1924
[30-Apr-2013 17:07:12 UTC] PHP 33. call_user_func_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487
[30-Apr-2013 17:07:12 UTC] PHP 34. gs_pre_get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487
[30-Apr-2013 17:07:12 UTC] PHP 35. WP_Query->__construct() C:\Users\serwis\Dropbox\www\XYZ\wp-content\themes\roots-XYZ\lib\custom.php:14
[30-Apr-2013 17:07:12 UTC] PHP 36. WP_Query->query() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:3059
[30-Apr-2013 17:07:12 UTC] PHP 37. WP_Query->get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:2972
[30-Apr-2013 17:07:12 UTC] PHP 38. do_action_ref_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:1924
[30-Apr-2013 17:07:12 UTC] PHP 39. call_user_func_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487
[30-Apr-2013 17:07:12 UTC] PHP 40. gs_pre_get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487
[30-Apr-2013 17:07:12 UTC] PHP 41. WP_Query->__construct() C:\Users\serwis\Dropbox\www\XYZ\wp-content\themes\roots-XYZ\lib\custom.php:14
[30-Apr-2013 17:07:12 UTC] PHP 42. WP_Query->query() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:3059
[30-Apr-2013 17:07:12 UTC] PHP 43. WP_Query->get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:2972
[30-Apr-2013 17:07:12 UTC] PHP 44. do_action_ref_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:1924
[30-Apr-2013 17:07:12 UTC] PHP 45. call_user_func_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487
[30-Apr-2013 17:07:12 UTC] PHP 46. gs_pre_get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487
[30-Apr-2013 17:07:12 UTC] PHP 47. WP_Query->__construct() C:\Users\serwis\Dropbox\www\XYZ\wp-content\themes\roots-XYZ\lib\custom.php:14
[30-Apr-2013 17:07:12 UTC] PHP 48. WP_Query->query() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:3059
[30-Apr-2013 17:07:12 UTC] PHP 49. WP_Query->get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:2972
[30-Apr-2013 17:07:12 UTC] PHP 50. do_action_ref_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:1924
[30-Apr-2013 17:07:12 UTC] PHP 51. call_user_func_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487
[30-Apr-2013 17:07:12 UTC] PHP 52. gs_pre_get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487
[30-Apr-2013 17:07:12 UTC] PHP 53. WP_Query->__construct() C:\Users\serwis\Dropbox\www\XYZ\wp-content\themes\roots-XYZ\lib\custom.php:14
[30-Apr-2013 17:07:12 UTC] PHP 54. WP_Query->query() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:3059
[30-Apr-2013 17:07:12 UTC] PHP 55. WP_Query->get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:2972
[30-Apr-2013 17:07:12 UTC] PHP 56. do_action_ref_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:1924
[30-Apr-2013 17:07:12 UTC] PHP 57. call_user_func_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487
[30-Apr-2013 17:07:12 UTC] PHP 58. gs_pre_get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487
[30-Apr-2013 17:07:12 UTC] PHP 59. WP_Query->__construct() C:\Users\serwis\Dropbox\www\XYZ\wp-content\themes\roots-XYZ\lib\custom.php:14
[30-Apr-2013 17:07:12 UTC] PHP 60. WP_Query->query() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:3059
[30-Apr-2013 17:07:12 UTC] PHP 61. WP_Query->get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:2972
[30-Apr-2013 17:07:12 UTC] PHP 62. do_action_ref_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:1924
[30-Apr-2013 17:07:12 UTC] PHP 63. call_user_func_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487
[30-Apr-2013 17:07:12 UTC] PHP 64. gs_pre_get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487
[30-Apr-2013 17:07:12 UTC] PHP 65. WP_Query->__construct() C:\Users\serwis\Dropbox\www\XYZ\wp-content\themes\roots-XYZ\lib\custom.php:14
[30-Apr-2013 17:07:12 UTC] PHP 66. WP_Query->query() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:3059
[30-Apr-2013 17:07:12 UTC] PHP 67. WP_Query->get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:2972
[30-Apr-2013 17:07:12 UTC] PHP 68. do_action_ref_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:1924
[30-Apr-2013 17:07:12 UTC] PHP 69. call_user_func_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487
[30-Apr-2013 17:07:12 UTC] PHP 70. gs_pre_get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487
[30-Apr-2013 17:07:12 UTC] PHP 71. WP_Query->__construct() C:\Users\serwis\Dropbox\www\XYZ\wp-content\themes\roots-XYZ\lib\custom.php:14
[30-Apr-2013 17:07:12 UTC] PHP 72. WP_Query->query() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:3059
[30-Apr-2013 17:07:12 UTC] PHP 73. WP_Query->get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:2972
[30-Apr-2013 17:07:12 UTC] PHP 74. do_action_ref_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:1924
[30-Apr-2013 17:07:12 UTC] PHP 75. call_user_func_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487
[30-Apr-2013 17:07:12 UTC] PHP 76. gs_pre_get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487
[30-Apr-2013 17:07:12 UTC] PHP 77. WP_Query->__construct() C:\Users\serwis\Dropbox\www\XYZ\wp-content\themes\roots-XYZ\lib\custom.php:14
[30-Apr-2013 17:07:12 UTC] PHP 78. WP_Query->query() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:3059
[30-Apr-2013 17:07:12 UTC] PHP 79. WP_Query->get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:2972
[30-Apr-2013 17:07:12 UTC] PHP 80. do_action_ref_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:1924
[30-Apr-2013 17:07:12 UTC] PHP 81. call_user_func_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487
[30-Apr-2013 17:07:12 UTC] PHP 82. gs_pre_get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487
[30-Apr-2013 17:07:12 UTC] PHP 83. WP_Query->__construct() C:\Users\serwis\Dropbox\www\XYZ\wp-content\themes\roots-XYZ\lib\custom.php:14
[30-Apr-2013 17:07:12 UTC] PHP 84. WP_Query->query() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:3059
[30-Apr-2013 17:07:12 UTC] PHP 85. WP_Query->get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:2972
[30-Apr-2013 17:07:12 UTC] PHP 86. do_action_ref_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:1924
[30-Apr-2013 17:07:12 UTC] PHP 87. call_user_func_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487
[30-Apr-2013 17:07:12 UTC] PHP 88. gs_pre_get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487
[30-Apr-2013 17:07:12 UTC] PHP 89. WP_Query->__construct() C:\Users\serwis\Dropbox\www\XYZ\wp-content\themes\roots-XYZ\lib\custom.php:14
[30-Apr-2013 17:07:12 UTC] PHP 90. WP_Query->query() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:3059
[30-Apr-2013 17:07:12 UTC] PHP 91. WP_Query->get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:2972
[30-Apr-2013 17:07:12 UTC] PHP 92. do_action_ref_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:1924
[30-Apr-2013 17:07:12 UTC] PHP 93. call_user_func_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487
[30-Apr-2013 17:07:12 UTC] PHP 94. gs_pre_get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487
[30-Apr-2013 17:07:12 UTC] PHP 95. WP_Query->__construct() C:\Users\serwis\Dropbox\www\XYZ\wp-content\themes\roots-XYZ\lib\custom.php:14
[30-Apr-2013 17:07:12 UTC] PHP 96. WP_Query->query() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:3059
[30-Apr-2013 17:07:12 UTC] PHP 97. WP_Query->get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:2972
[30-Apr-2013 17:07:12 UTC] PHP 98. WP_Query->parse_query() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:1922
[30-Apr-2013 17:07:12 UTC] PHP 99. absint() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:1442
メインのクエリを完全にキャンセルすることは、かなり高レベルな狂気です。それは、wp
クラスをサブクラス化することを含みます。
私は...するだろう:
is_main_query()
チェックでpre_get_posts
にフック私はそれが答えに遅れるかもしれないことを知っています、しかし私は私のテストプロジェクトをしている間、私は同様の問題に出くわしました。これが私がそれを解決した方法です。
/* apply this filter only on relevant to you pages */
function mb_bail_main_wp_query( $sql, WP_Query $wpQuery ) {
if ( $wpQuery->is_main_query() ) {
/* prevent SELECT FOUND_ROWS() query*/
$wpQuery->query_vars['no_found_rows'] = true;
/* prevent post term and meta cache update queries */
$wpQuery->query_vars['cache_results'] = false;
return false;
}
return $sql;
}
add_filter( 'posts_request', 'mb_bail_main_wp_query', 10, 2 );
@更新:
匿名の関数ではなく通常の関数を使用するようにコードを変更し、ダミーの空のWP_Postオブジェクトを1つ返すため、コードを 'SELECT 0 AS ID'の代わりに 'false'にしました。 'false'を返すと$ wpdb-> get_results()は早期に保釈されるので問い合わせは行われません。