Gibt es eine Möglichkeit, dass is_search () immer false zurückgibt

Ich mache ein Plugin, das verwandte Beiträge anzeigt, wenn Benutzer die falsche URL eingeben …

Proben sind so

http://diskonblog.net/gandaria/hellow

Ich möchte das Thema überhaupt nicht ändern. Aus Gründen der Codierung habe ich das Thema jedoch so geändert, dass es zeigt, dass is_search () 1 anzeigt.

Was soll ich tun, damit wenn die Themes is_search () ausführen, stattdessen false angezeigt wird

Ich habe es versucht

function returnfalse( ){ return false; } add_filter ('is_search','returnfalse'); 

und das hat nicht funktioniert.

Der Code im Plugin sind diese:

 class RandomPosts { function orderby($orderby) { if ( get_query_var('random') == 'true' ) return "RAND()"; else return $orderby; } function register_query_var($vars) { $vars[] = 'random'; return $vars; } } add_filter( 'posts_orderby', array('RandomPosts', 'orderby') ); add_filter( 'query_vars', array('RandomPosts', 'register_query_var') ); function query_random_posts($query) { return query_posts($query . '&random=true'); } 

Um zu prüfen, was falsch ist, vereinfache ich den Code

 function setUp404Template($toInclude = "default") { header("HTTP/1.1 200 OK"); //queryBasedOnPage (); query_posts('&random=true'); if ($toInclude=="default") { $toInclude= get_template_directory() . "/index.php"; //Can also require(TEMPLATEPATH . "/search.php"); if exist } require($toInclude); } function redirect_404() { global $options, $wp_query; if ($wp_query->is_404) { setUp404Template(); // $redirect_404_url = esc_url(get_permalink(get_page_by_title($page_title))); // wp_redirect( $redirect_404_url ); exit(); } } 

Alles funktioniert wie vorgesehen.

Wenn ich jedoch query_posts('&random=true'); zu

 query_posts('s=makan ikan&random=true'); 

Das Flag is_search () ist aktiviert.

Grundsätzlich möchte ich Beiträge, die tatsächlich relevant sind, zurückgeben und dann is_search () auf false setzen.

Solutions Collecting From Web of "Gibt es eine Möglichkeit, dass is_search () immer false zurückgibt"

Um is_search () immer falsch zurück zu geben, können Sie Folgendes verwenden:

 add_action( 'parse_query', 'search_even_empty' ); function search_even_empty($query) { $query->is_search = false; }