当前位置: 首页 > 知识库问答 >
问题:

为什么$query->main\u query()返回false(wordpress)

韩彦君
2023-03-14

我有一个非常简单的索引。在我的wordpress myTheme文件夹中的php文件中,我只想使用“pre_get_posts”钩子显示带有“friends”类别的帖子。但是美元查询-

<?php
function myCategory( $query ) {
	if ( ! is_admin() && $query->is_main_query() && $query->is_search() ) {
		$query->set( 'category_name', 'friends' );
	}
}
add_action( 'pre_get_posts', 'myCategory' );


$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$wp_query = new WP_Query( 'posts_per_page=2&paged='.$paged );
if ($wp_query->have_posts()) {
 	while ( $wp_query->have_posts() ) {
		$wp_query->the_post();
		echo "<h2><a href='".get_the_permalink()."'>".get_the_title()."</a></h2>";
		the_content("read more..",false);
	}
} 
previous_posts_link("<< Previous");
next_posts_link("More >>");

?>

但是当我使用下面的代码只是删除$查询-

<?php
function myCategory( $query ) {
	if ( $query->is_home() && ! is_admin() ) {
		$query->set( 'category_name', 'friends' );
	}
}
add_action( 'pre_get_posts', 'myCategory' );


$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$wp_query = new WP_Query( 'posts_per_page=2&paged='.$paged );
if ($wp_query->have_posts()) {
 	while ( $wp_query->have_posts() ) {
		$wp_query->the_post();
		echo "<h2><a href='".get_the_permalink()."'>".get_the_title()."</a></h2>";
		the_content("read more..",false);
	}
} 
previous_posts_link("<< Previous");
next_posts_link("More >>");

?>

现在,我想知道为什么$查询-

共有1个答案

法烨华
2023-03-14

从你的例子中,我看到在第一个例子中,你正在检查它是否是一个搜索页面,在第二个例子中,你正在检查页面是否是主页。所以我想说问题不是is_main_query()检查,而是is_search()检查,可能你正在检查主页上的变化,这就是为什么它不起作用。

 类似资料:
  • 问题内容: 我正在使用a 检查我的哈希密码。我有PHP 5.5: 我上车了。我已经检查了posts的值和mysql user_password_hash返回。 我不知道为什么它返回假 有任何想法吗? 问题答案: 手册中的列长度可能是问题所在: 建议将结果存储在可扩展超过60个字符的数据库列中(255个字符是一个不错的选择)。 链接

  • 问题内容: 我刚刚研究OCPJP问题,发现了这个奇怪的代码: 运行代码时,我得到: 当我们比较看起来彼此相同的两件事时,输出如何?什么NaN意思 问题答案: 溢出的操作将生成有符号无穷大,下溢的操作将生成非规范化的值或有符号的零,而数学上没有确定结果的操作将生成NaN。将NaN作为操作数的所有数值运算都会产生NaN。如前所述,NaN是无序的,因此涉及一个或两个NaN返回的数值比较操作以及涉及NaN

  • 问题内容: 我找到了JavaDoc的方法: 返回:如果此线程已被中断,则返回true;否则返回false。 否则为假。 我对这种方法的理解有误。此外,我可能会误解Thread中的“中断”概念。 欢迎任何解释!谢谢! 程式码片段: 在线程定义中: 调用: 问题答案: 引发异常后,线程不再处于中断状态。

  • 问题内容: 如果我这样做: 那又回来了。仅仅是因为在列表中。 但是,如果我这样做: 那又回来了。而等于: 为什么? 问题答案: 运算符优先级 2.x,3.x。的优先级低于的优先级。因此,它等效于: 这就是你想要的: 正如@Ben指出的那样:建议从不写作,更喜欢。前者使它看起来像一个函数调用,而它却是一个运算符,而不是一个函数。

  • 问题内容: 即使正则表达式应返回true,程序也不会退出。代码有什么问题? 问题答案: 仅当整个字符串与正则表达式匹配时才返回。在你的情况下,你的正则表达式仅代表 一个 字符不是,或。 我怀疑您要检查字符串是否包含您在正则表达式中描述的这些特殊字符之一。在这种情况下,请将您的正则表达式括起来,以使正则表达式匹配整个字符串。哦,您不必逃脱character class内部。

  • 为什么以下输出为True? 这将始终输出,即使条件似乎表明并非如此。如果我删除括号,那么它可以工作,但我不明白为什么。