Im Adminmenu unter Optionen > Verschiedenes > das Level niedriger stellen
Beiträge von subs
-
-
PHP
Alles anzeigen<?php /* Plugin Name: Search Reloaded Version: 1.0 Plugin URI: http://www.semiologic.com/projects/search-reloaded/ Description: [url="http://www.semiologic.com/projects/search-reloaded/"]Doc/FAQ[/url] • [url="http://wordpress.org/tags/semiologic"]Support forum[/url] — Enhances WordPress' default search engine Author: Denis de Bernardy Author URI: http://www.semiologic.com */ /* * config **/ $sem_search_version = 1.0; /* * sem_search_init() * ----------------------- * initializes the sem_search_init plugin **/ function sem_search_init() { global $wpdb; global $table_prefix; global $sem_search_version; global $user_ID; global $user_level; $wpdb->sem_nodes = $table_prefix."sem_nodes"; $wpdb->sem_links = $table_prefix."sem_links"; // Initialize $cur_sem_search_version = get_option('sem_search_version'); get_currentuserinfo(); if ( !$user_ID || $user_level < 8 ) return; if ( $_REQUEST['flush'] ) update_option( 'sem_search_version', 0 ); if ( !$cur_sem_search_version || $cur_sem_search_version < $sem_search_version ) { switch ( $cur_sem_search_version ) { case '': case '0': $wpdb->get_results("# sem_search_init CREATE TABLE IF NOT EXISTS `$wpdb->sem_nodes` ( `node_id` int(10) unsigned NOT NULL default '0' , `node_name` tinytext NOT NULL , `node_content` text NOT NULL , PRIMARY KEY (`node_id`) , FULLTEXT KEY `node` (`node_name`,`node_content`) ) TYPE=MyISAM"); case '0.1': case '0.2': case '0.3': case '0.4': $wpdb->query( "DELETE FROM $wpdb->sem_nodes" ); update_option('sem_search_dyn_index_done', ''); default: break; } update_option( 'sem_search_version', $sem_search_version ); } } // end sem_search_init() add_action('init', 'sem_search_init'); /* * sem_search_dyn_index() * ---------------------- **/ function sem_search_dyn_index() { global $wpdb; global $user_ID; global $user_level; if ( get_settings('sem_search_dyn_index_done') ) return; get_currentuserinfo(); if ( !$user_ID || $user_level < 8 ) return; $posts = $wpdb->get_results("# sem_search_dyn_index SELECT posts.* FROM $wpdb->posts AS posts LEFT JOIN $wpdb->sem_nodes AS nodes ON nodes.node_id = posts.ID WHERE nodes.node_id IS NULL LIMIT 100 "); if ( $posts ) foreach ( $posts as $post ) sem_search_index( $post ); else update_option('sem_search_dyn_index_done', true); } // end sem_search_dyn_index() add_action('shutdown', 'sem_search_dyn_index' ); /* * sem_search_index() * ------------------ * index a post **/ function sem_search_index( $post ) { global $wpdb; global $user_ID; global $user_level; get_currentuserinfo(); if ( !$user_ID || $user_level < 8 ) return; if ( !$post ) return; $node_id = $post->ID; # echo ' no worries: this is Denis doing tests. only admins can see this</p>'; $node_name = $post->post_title; $node_name = apply_filters( 'the_title', $node_name ); $node_name = strip_tags( $node_name ); $node_name = trim( $node_name ); $node_name = mysql_real_escape_string( $node_name ); $node_content = $post->post_excerpt."\n\n".$post->post_content; $node_content = apply_filters( 'the_content', $node_content ); $node_content = strip_tags( $node_content ); $node_content = trim( $node_content ); $node_content = mysql_real_escape_string( $node_content ); // echo Markdown($content); $wpdb->query("# sem_search_index REPLACE INTO $wpdb->sem_nodes ( node_id, node_name, node_content ) VALUES ( $node_id, '$node_name', '$node_content' ) "); return $post; } // end sem_search_index() /* * sem_search_reindex() * ------------------ * indexes a post **/ function sem_search_reindex( $ID ) { global $wpdb; if ( !$ID ) return; $post = $wpdb->get_row("# sem_search_reindex SELECT * FROM $wpdb->posts WHERE ID = $ID "); if ( $post ) sem_search_index( $post ); } // end sem_search_reindex() add_filter('edit_post', 'sem_search_reindex'); add_filter('publish_post', 'sem_search_reindex'); add_filter('save_post', 'sem_search_reindex'); /* * sem_search_bypass() * --------------------- * bypass the default search **/ function sem_search_bypass( $where ) { if ( !is_search() ) return $where; return " AND 1 = 0 "; } // sem_search_bypass() add_filter('posts_where', 'sem_search_bypass'); /* * sem_search_reloaded() * -------------------- * enhances the default search **/ function sem_search_reloaded( $posts ) { if ( !is_search() ) return $posts; global $s; global $sem_s; global $wp_query; // Defaults $sem_s = $s; // WordPress damages the query string $paged = $wp_query->get('paged'); if (!$paged) $paged = 1; $posts_per_page = $wp_query->get('posts_per_page'); if ( !$posts_per_page ) $posts_per_page = get_settings('posts_per_page'); $offset = ( $paged - 1 ) * $posts_per_page; return sem_search_posts($s, $posts_per_page, $offset, true); } // sem_search_reloaded() add_filter('the_posts', 'sem_search_reloaded'); # # sem_search_posts() # ------------------ # For use outside of the plugin, e.g. terms2posts # function sem_search_posts($s = "", $num_posts = 5, $offset = 0, $refresh_request = true, $exclude = '') { global $wpdb; global $request; // Initialize $now = gmdate('Y-m-d H:i:59'); $sem_w = array(); // search words $sem_r = array(); // search regexps $all_small_words = true; // Fetch the search words -- this is strictly additive at the moment... preg_match_all( "/\b(\w+)\b|\"([^\"]+)\"/", stripslashes($s), $matches, PREG_SET_ORDER ); if ( !sizeof( $matches ) ) return array(); foreach( $matches as $match ) { if ( $match[1] ) $sem_w[] = $match[1]; else $sem_w[] = $match[2]; } // Build the string filter while ( list( $k, $w ) = each ( $sem_w ) ) { $str_filter .= ( ( $str_filter != "" ) ? " " : "" ) . mysql_real_escape_string( $sem_w[$k] ); $all_small_words &= ( strlen( $sem_w[$k] ) <= 2 ); } reset( $sem_w ); // Build search regexp $sem_regexp_pb = "/(\\/|\\\|\*|\?|\+|\.|\^|\\$|\(|\)|\[|\]|\||\{|\})/"; $sem_regexp_fix = "\\\\$1"; while ( list( $k, $w ) = each( $sem_w ) ) { $sem_r[$k] = $sem_w[$k]; $sem_r[$k] = preg_replace( $sem_regexp_pb, $sem_regexp_fix, $sem_r[$k] ); $sem_r[$k] = mysql_real_escape_string($sem_r[$k]); $sem_r[$k] = preg_replace( "/\s+/", "[[:space:]]+", $sem_r[$k] ); $sem_r[$k] = "([[:<:]]|[[:space:]])".$sem_r[$k]."([[:>:]]|[[:space:]])"; } reset( $sem_w ); /* echo 'Search query: '.stripslashes(preg_replace("/\"/", """, $sem_s )).' '; echo 'Search words: '; while ( list( $k, $w ) = each( $sem_w ) ) echo $sem_w[$k].' - '.$sem_r[$k].' '; reset( $sem_w ); */ while ( list( $k, $w ) = each ( $sem_w ) ) { $reg_all_in_name .= ( ( $reg_all_in_name != "" ) ? " AND " : " " ) . " sem_nodes.node_name REGEXP '".$sem_r[$k]."' "; $reg_all_in_content .= ( ( $reg_all_in_content != "" ) ? " AND " : " " ) . " sem_nodes.node_content REGEXP '".$sem_r[$k]."' "; if ( strlen( $sem_w[$k] ) > 2 || $all_small_words ) { $reg_same_order .= "(". ( ( $reg_same_order != "" ) ? ".+" : "" ) . $sem_r[$k] . ")? "; $reg_one_present .= ( ( $reg_one_present != "" ) ? "|" : "" ) . $sem_r[$k]; } } reset( $sem_w ); $reg_name_in_same_order = " sem_nodes.node_name REGEXP '$reg_same_order' "; $reg_one_in_name = " sem_nodes.node_name REGEXP '$reg_one_present' "; $reg_content_in_same_order = " sem_nodes.node_content REGEXP '$reg_same_order' "; $reg_one_in_content = " sem_nodes.node_content REGEXP '$reg_one_present' "; $seed_sql = "# sem_search_reloaded SELECT posts.*, CASE WHEN $reg_all_in_name THEN 1 ELSE 0 END AS all_in_title, CASE WHEN $reg_name_in_same_order THEN 1 ELSE 0 END AS title_in_same_order, CASE WHEN $reg_one_in_name THEN 1 ELSE 0 END AS one_in_title, CASE WHEN $reg_all_in_content THEN 1 ELSE 0 END AS all_in_content, CASE WHEN $reg_content_in_same_order THEN 1 ELSE 0 END AS content_in_same_order, CASE WHEN $reg_one_in_content THEN 1 ELSE 0 END AS one_in_content, MATCH ( sem_nodes.node_name, sem_nodes.node_content ) AGAINST ( '$str_filter' ) AS mysql_score FROM $wpdb->posts AS posts INNER JOIN $wpdb->sem_nodes AS sem_nodes ON sem_nodes.node_id = posts.ID WHERE ( posts.post_status = 'static' OR posts.post_status = 'publish' ) AND posts.post_date <= '$now' AND ( $reg_one_in_name OR $reg_one_in_content ) " . ( $exclude ? "AND posts.ID NOT IN ( $exclude )" : "" ) . " GROUP BY posts.ID ORDER BY all_in_title DESC, title_in_same_order DESC, one_in_title DESC, all_in_content DESC, content_in_same_order DESC, one_in_content DESC, mysql_score DESC, posts.post_title ASC " . ( ( $num_posts != -1 ) ? "LIMIT $offset, $num_posts" : "" ); /* global $user_ID; get_currentuserinfo(); if ( $user_ID ) $user = get_userdata( $user_ID ); if ( $user->user_level >= 8 ) echo "<pre style=\"font-size: 8pt;\">$seed_sql</pre>"; */ // with smart cluster, we'll fetch the clustered result, which should be more relevant // in the meanwhile, the sql seed will be good enough $posts = $wpdb->get_results( $seed_sql ); // update the request, for use in posts_nav_link if ( $refresh_request ) { $request = "SELECT posts.* FROM $wpdb->posts AS posts INNER JOIN $wpdb->sem_nodes AS sem_nodes ON sem_nodes.node_id = posts.ID WHERE ( posts.post_status = 'static' OR posts.post_status = 'publish' ) AND posts.post_date <= '$now' AND ( $reg_one_in_name OR $reg_one_in_content ) GROUP BY posts.ID " . ( ( $num_posts != -1 ) ? "LIMIT $offset, $num_posts" : "" ); } // update cache if ( function_exists('update_post_cache') ) update_post_cache( $posts ); if ( function_exists('update_page_cache') ) update_page_cache( $posts ); return $posts; } # end sem_search_posts /* * sem_search_results() * -------------------- * Display the search results **/ function sem_search_results() { global $wp_query; global $sem_s; $paged = $wp_query->get('paged'); if (!$paged) $paged = 1; $posts_per_page = $wp_query->get('posts_per_page'); if ( !$posts_per_page ) $posts_per_page = get_settings('posts_per_page'); $start = ( $paged + 1 ) * $posts_per_page - 1; ?> <div class="header"> <h1>Search results for: <?php echo stripslashes(preg_replace("/\"/", """, $sem_s )); ?></h1> <?php if ( function_exists('sem_display_ad_space') ) sem_display_ad_space(); ?> </div> <div class="body"> [list=1]"> <?php while (have_posts()) : the_post(); ?> <li id="post-<?php the_ID(); ?>"><h2>[url="<?php the_permalink(); ?>"]<?php the_title(); ?>[/url] <?php edit_post_link('Edit', '<span class="edit_link"> | ', '</span>'); ?></h2> <?php the_excerpt(); ?> <?php endwhile; ?> [/list] </div> <?php } // end sem_search_results() ?>Es ist das Plugin "Search Reloaded"
nun meine sache. er sortiert die beiträge chronologisch (glaub ich) vom ältesten bis zum neuchsten. ich häts allerdings gern umgekehrt, heißt vom neuchsten bis zum ältesten.steht das da jetzt irgendwo in den kauderwelsch oder im restlichen teil :planlos
und was muss ich änderndanke für eure hilfe :gott