Schimbare în in_category în WP 4.7?

18 dec. 2016, 19:48:06
Vizualizări: 141
Voturi: 0

După actualizarea la versiunea 4.7, această linie de cod nu mai returnează:

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

S-a schimbat ceva cu filtrul in_category?

Notă: "my-test-category" este o subcategorie a "Uncategorized"

4
Comentarii

Nu cred. Se pare că foo() va întoarce întotdeauna null, indiferent de verificarea in_category().

birgire birgire
18 dec. 2016 20:55:35

Pot face foo să afișeze orice, cu excepția acestui if care ar trebui să returneze dar nu o face. De ce spui că întoarce întotdeauna null?

Scott B Scott B
18 dec. 2016 21:58:58

Funcționează in_category() în afara funcției și unde o folosești (context)? Nu poți să omiți al doilea argument $post, dacă vrei obiectul global $post, pentru că get_post( null ) va încerca să folosească obiectul post global dacă acesta există?

birgire birgire
19 dec. 2016 00:41:09

Am găsit problema. Rulez un filtru pe list_terms_exclusions pentru a elimina copiii categoriei "Uncategorized". Este posibil ca acest filtru să nu fi fost rulat pe in_category() înainte de versiunea 4.7 și poate chiar până la versiunea 3.x?

Scott B Scott B
19 dec. 2016 16:18:55
Toate răspunsurile la întrebare 1
1

Am identificat problema. Am folosit un filtru pe list_terms_exclusions special pentru a elimina toți copiii categoriei "Necategorizat" de pe site-ul public.

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

Cu toate acestea, folosind in_category() încă returna potriviri pentru acele categorii, ceea ce era exact ceea ce doream. Aveam nevoie să ascund acele categorii din listările de categorii, dar totuși să știu când un articol anume avea una sau mai multe dintre acele categorii. Și astfel am putut folosi in_category() în acest scop.

Această tehnică a funcționat bine de cât timp îmi amintesc până la versiunea 4.7.

Totuși, începând cu versiunea 4.7 (și posibil înainte), funcția in_category() este filtrată de list_terms_exclusions. Așa că nu mai returnează niciuna din categoriile mele de sub Necategorizat.

19 dec. 2016 16:25:12
Comentarii

Încă încerc să determin care versiune a schimbat acest lucru astfel încât "in_category()" să fie filtrat de list_terms_exclusions

Scott B Scott B
20 dec. 2016 16:01:44