Modifiche a in_category in WP 4.7?

18 dic 2016, 19:48:06
Visualizzazioni: 141
Voti: 0

Dopo l'aggiornamento alla versione 4.7, questa linea di codice non restituisce più il risultato atteso:

function foo(bar){
    global $post;
    if(in_category("my-test-category", $post)) return;
    echo "Non nella categoria my-test-category";
}

C'è stato qualche cambiamento con il filtro in_category?

Nota: "my-test-category" è una sottocategoria di "Uncategorized"

4
Commenti

Non credo. Sembra che foo() restituirà sempre null, indipendentemente dal controllo in_category().

birgire birgire
18 dic 2016 20:55:35

Posso fare in modo che foo stampi qualsiasi cosa, tranne che questo if dovrebbe restituire ma non lo fa. Perché dici che restituisce sempre null?

Scott B Scott B
18 dic 2016 21:58:58

in_category() funziona al di fuori della funzione e dove lo usi (contesto)? Non puoi saltare il secondo argomento $post, se vuoi l'oggetto globale $post, perché get_post( null ) proverà a utilizzare l'oggetto post globale se esiste?

birgire birgire
19 dic 2016 00:41:09

Ho trovato il problema. Sto eseguendo un filtro su list_terms_exclusions per rimuovere i figli di "Uncategorized". È possibile che questo filtro non venisse eseguito su in_category() prima della versione 4.7 e forse fino alla versione 3.x?

Scott B Scott B
19 dic 2016 16:18:55
Tutte le risposte alla domanda 1
1

Ho identificato il problema. Stavo utilizzando un filtro su list_terms_exclusions specificamente per rimuovere tutti i figli di "Uncategorized" dalla visualizzazione sul sito pubblico.

add_filter('list_terms_exclusions', 'my_list_terms_exclusions',10,2);  

Tuttavia, utilizzando in_category() ottenevo ancora corrispondenze su quelle categorie, che era esattamente quello che volevo. Avevo bisogno di nascondere quelle categorie dagli elenchi di categorie, ma dovevo comunque sapere quando un post specifico aveva una o più di quelle categorie presenti. E quindi potevo usare in_category() per quello scopo.

Questa tecnica ha funzionato bene per tutto il tempo che ricordo fino alla versione 4.7

Tuttavia, dalla versione 4.7 (e forse prima), la funzione in_category() viene filtrata da list_terms_exclusions. Quindi non restituisce più nessuna delle mie categorie sotto Uncategorized.

19 dic 2016 16:25:12
Commenti

Sto ancora cercando di determinare quale versione ha modificato questo comportamento, in modo che "in_category()" venga filtrato da list_terms_exclusions

Scott B Scott B
20 dic 2016 16:01:44