WP-autosuggest 0.24 w WordPressie 3.0.1

Wtyczka wp-autosuggest pokazuje sugestie przy polu wyszukiwania. Według opisu działa do wersji 2.8. Po aktualizacji WordPressa mogą pojawić się z nią problemy. Jedną z przyczyn jest bezpośrednie wywołanie autosuggest.php. Brakuje bazy danych, która kiedyś była w wp-config.php. Dlatego też zmieniamy górną część pliku:

if ($wpas_action == 'query') {

	require_once ('../../../wp-config.php');
        require_once('../../../wp-load.php');
        require_once('../../../wp-includes/wp-db.php');


        // Create a new wpdb object
        $wpdb = new wpdb( DB_USER, DB_PASSWORD, DB_NAME, DB_HOST );

	header('Content-Type: text/xml');
	echo '<results>';
	
        $wpdb->set_prefix($table_prefix);

	$wpas_keys = str_replace(' ','%',$_GET['wpas_keys']);
	$pageposts = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE (post_title LIKE '%$wpas_keys%') AND post_status = 'publish' ORDER BY post_date DESC limit 10");
         foreach ($pageposts as $post) {
		setup_postdata($post);
		echo "<rs id=\"";
		the_permalink();
		echo "\" info=\"" . autosuggest_excerpt(apply_filters('the_title', get_the_content())) . "\">";
		the_title();
		echo "</rs>";
	}
	echo '</results>';
	die();
}

Rozwiązanie nie jest zbyt eleganckie, ale za to skuteczne. Na sztywno wstawiłem limit rekordów, ale nie powinno być problemów z przekazaniem liczby przez parametr w ajaxie albo bezpośrednio przy zapytaniu za pomocą get_wpas_option(’wpas_maxresults’,’10’).

Gdyby okienko z podpowiedziami znikało pod innymi elementami, to należy w pliku wp_autosuggest.css dopisać z-index:99; do div.autosuggest div.as_container oraz div.autosuggest.

Informacje o tym, jak odwołać się do $wpdb znalezione na stronie http://martin.ind-web.com/2010/06/04/using-the-wordpress-database-class-within-your-own-scripts/

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*