J'utilise ce script autocomplete https://github.com/agarzola/jQueryAutocompletePlugin dans mon thème wordpress. J'ai un formulaire dans une page où l'utilisateur peut spécifier des balises. En fait, c’est le code que j’utilise et qui fonctionne bien.
<script>
jQuery(function() {
var data = '<?php global $wpdb; $search_tags = $wpdb->
get_results("SELECT name FROM $wpdb->terms");
foreach ($search_tags as $mytag){ echo $mytag->name. " "; } ?>'.split(" ");
$("#tags").autocomplete(data,{multiple: true});
});
</script>
Le problème est que ce type de requête place toutes les balises dans un tableau lorsque je charge la page. Cela pourrait fonctionner si vous avez 100 tags, mais nous en avons beaucoup plus. Le script comporte également une option de saisie semi-automatique à partir d'un script distant, comme indiqué ci-dessous:
<script type="text/javascript">
jQuery().ready(function() {
$("#tags").autocomplete("<?php bloginfo('template_url'); ?>/get-tags.php",
{
width: 260,
matchContains: true,
selectFirst: false,
multiple: true
});
});
</script>
Cela doit activer la complétion automatique en tant que types d'utilisateurs. Ceci est le code pour get-tags.php (je mets le fichier dans la racine de mon thème)
<?php
include_once(‘../../../wp-config.php’);
include_once(‘../../../wp-load.php’);
include_once(‘../../../wp-includes/wp-db.php’);
global $wpdb;
$search_tags = $wpdb->get_results("SELECT name FROM $wpdb->terms");
foreach ($search_tags as $mytag)
{ echo $mytag->name. " "; }
?>
J'ai tout essayé et cherché en ligne pendant des heures, mais je n'ai pas trouvé de solution pour appeler get-tags.php, cela me donne une erreur interne 500 et la saisie semi-automatique ne fonctionne plus. Merci
n'incluez pas WP comme ça. utilisez $_GET
à la place:
...
$("#tags").autocomplete("<?php echo add_query_arg('get_my', 'terms', home_url()); ?>",
...
functions.php du thème:
add_action('template_redirect', 'terms_for_autocomplete');
function terms_for_autocomplete(){
if(isset($_GET['get_my']) && $_GET['get_my'] == 'terms'):
$terms = &get_terms(get_taxonomies());
foreach ($terms as $term)
echo "{$term->name}|{$term->name} ({$term->count} results)\n";
die();
endif;
}