Rimuovere i risultati di ricerca corrotti in bbPress

Un sito che amministro usa bbPress come piattaforma per il forum. È un gran bel CMS ottimo per le funzioni essenziali, però c’è un bug relativo ai risultati della ricerca. La pagina fornisce i messaggi divisi in due categorie, “recenti” e “rilevanti”, però il problema sorge quando bbPress decide che un messaggio recente debba essere anche rilevante.

Il risultato ottenuto è un link (nella parte dei messaggi rilevanti) completamente corrotto, senza descrizione e duplicato del corrispondente sopra: qualcosa di simile a http://giovani.mathesisvicenza.it/forum/topic.php#post-.

Notate i messaggi 5 e 3

Chiaramente questo link duplicato male non è nulla di utile e risulta anche scomodo: una persona infatti potrebbe tentare di cliccarci sopra e non arrivare da nessuna parte. Per ovviare a questo problema ho provato a pensare a come poter distinguere facilmente gli elementi corrotti da quelli giusti. Sono giunto ad alcune conclusioni:

  • non si può discriminare direttamente l’url, in quanto viene direttamente stampato da una funzione di bbPress, non è salvato nell’array
  • un articolo malformato non ha un contenuto, viene visto come vuoto
  • ogni articolo sano deve avere un contenuto, altrimenti la ricerca non avrebbe restituito nulla

Alla luce di ciò, la cosa migliore mi è sembrata quella di fare una prima scansione dei messaggi rilevanti ed eliminare tutti quelli senza testo. Il codice seguente va inserito nel file search.php del tema da correggere e va prima della riga <?php if ( $relevant ) : ?>:

<?php
foreach ( $relevant as $elementKey => $bb_post ) {
if(!($bb_post->post_text)) unset($relevant[$elementKey]);
}
?>

A questo punto la ricerca lavora alla perfezione e senza doppioni. Se volete, provate pure quella dei Giovani Matematici di Vicenza.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *