如何控制WordPress的搜索行为?

时间:2013-02-17 作者:Thiha Maung

我正在开发一个网站使用WordPress,我需要做一个完全定制的主题。一切似乎都很好,直到我在搜索结果中发现一些不符合客户要求的错误。我没有使用PHP和WordPress的经验。所以让我问两个问题。

如何验证WordPress搜索框users do not enter any words and make search? 我不想在上述情况下进行任何搜索过程exclude Home Page from any search results?

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

你试图使用的东西坏了。

add_filter( \'pre_get_posts\', \'modified_pre_get_posts\' ); 
function modified_pre_get_posts( WP_Query $query ) { 
  if ( $query->is_search() ) { 
    $query->set( \'post_type\', array( \'page-home\' ) ); 
  } 
  return $query; 
}
该函数定义无效。如果有,你会看到一个错误debugging enabled. 您需要:

add_filter( \'pre_get_posts\', \'modified_pre_get_posts\' ); 
function modified_pre_get_posts( $query ) { 
  if ( $query->is_search() ) { 
    $query->set( \'post_type\', array( \'page-home\' ) ); 
  } 
  return $query; 
}
但那只会搜索for post_type = “主页”。我认为这也不对。我想这就是您希望排除主页的方式。事实上,你做了一些非常不同的事情。我想你想要:

add_filter( \'pre_get_posts\', \'modified_pre_get_posts\' ); 
function modified_pre_get_posts( $query ) { 
  if ( $query->is_search() ) { 
    $query->set( \'post__not_in\', array( id-of-home-page ) ); // should be a number; you have to replace that text with the actual ID
  } 
  return $query; 
}
使用默认的搜索小部件,在我被殴打和滥用的沙盒安装上,如果我尝试提交没有任何条款的内容,则不会运行搜索。博客索引页将加载。但是,如果要完全中断提交,则需要使用Javascript。

结束

相关推荐

meta post search

我需要查询post元字段,通过多个复选框进行筛选当前,在提交表单时,查询仅适用于第二个参数(人员)。如何使用两个参数进行筛选?HTML(表单提交)<input type=\"checkbox\" id=\"inlineCheckbox1\" name=\"category[]\" value=\"Planet\"> <input type=\"checkbox\" id=\"inlineCheckbox2\" name=\"category[]\" value=\"People