Skip to content

Conversation

@mpertici-beapi
Copy link

Capture d’écran 2025-12-08 à 16 35 59

francoistibo
francoistibo previously approved these changes Dec 8, 2025
@herewithme herewithme requested review from herewithme and removed request for francoistibo December 8, 2025 20:09
@herewithme
Copy link
Member

@mpertici-beapi @francoistibo le but du jeu, c'est d'éviter que le plugin ne fasse cette requête : https://github.com/BeAPI/simple-punctual-translation/blob/master/inc/class.admin.php#L275 qui crash sur les "gros" WP, donc il ne faut pas ajouter un JS pour juste avoir une recherche, mais bien éviter toute requête serveur ultra-fat.

Merci de revoir la PR, et étant l'auteur du plugin, je veux la valider, svp.

@francoistibo
Copy link

francoistibo commented Dec 10, 2025

@herewithme la PR est à jour.
Ticket projet concerné : https://support.beapi.fr/issues/85078

1. PHP - ajaxBuildSelect() (ligne 376)

  • Ajout du paramètre search pour rechercher par titre
  • Ajout du paramètre limit (par défaut 100 au lieu de 1000)
  • Gestion du current_value pour qu'il apparaisse même s'il n'est pas dans les résultats initiaux
  • Réduction de posts_per_page de 1000 à 100

2. PHP - MetaboxOriginalContent() (ligne 277)

  • Réduction de posts_per_page de 2000 à 100 pour la version no-js
  • Ajout de wp_reset_postdata() pour nettoyer la requête

3. JavaScript - admin.js

  • Recherche AJAX avec debounce (300 ms)
  • Recherche déclenchée après 2 caractères
  • Rechargement de la liste initiale si la recherche est effacée
  • Désactivation de la recherche locale de Choices.js au profit de la recherche AJAX

Avantages

  • Performance : réduction de 90–95% des posts chargés initialement (100 au lieu de 1000–2000)
  • Accessibilité : tous les posts restent accessibles via la recherche AJAX
  • Expérience utilisateur : recherche en temps réel avec debounce
  • Compatibilité : la version no-js fonctionne toujours avec 100 posts
  • Les requêtes sont allégées tout en conservant la possibilité de trouver n'importe quel post via la recherche.

Choix librairie JS pour le select (qui permet à la liste d'etre recherchable)
J'ai conservé Choices.js vs Select2 qui est clairement surdimensionné et globalement une usine à gaz pas vraiment accessible. J'avais d'ailleurs volontairement orienté @mpertici-beapi sur cette lib dans le ticket dédié pour cette raison.

Comparatif global
Capture d’écran 2025-12-10 à 11 36 57

## Changelog

* Version 1.1.6 :
* Use Choices.js to enable search on select
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

préciser aussi l'impact sur la performance/crash sur les gros sites.

'post_type' => ! empty( $current_options['cpt'] ) ? $current_options['cpt'] : 'any',
'post_status' => 'any',
'posts_per_page' => 2000,
'posts_per_page' => 100,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On a besoin d'afficher quelque chose dans le HTML ? on peut pas ne rien afficher du tout ? à la part, la valeur cochée ? est-ce que si la valeur choisi est dans 400ème dans la liste, la sélection reste préservée avec ce limite à 100 ?

@herewithme
Copy link
Member

@francoistibo 2 commentaires

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants