web-dev-qa-db-fra.com

wp_insert_term ajoute un terme qui n'a pas de nom

J'essaie d'insérer un terme pour une taxonomie personnalisée et un type de publication personnalisé dans Wordpress. Le problème que je rencontre est qu'il insère avec succès un terme et au bon niveau hiérarchique, mais que le terme n'a pas de nom. La ligne qui insère le terme est:

$lasttermarray = wp_insert_term($categoryname, "department", array( "parent" => $parentcategory ) );

J'ai vérifié que $ categoryname et $ parentcategory sont définis sur les bonnes valeurs. Comme je l'ai dit, le terme est inséré, avec un nom vide. Le slug du terme vide est défini sur l'ID du nouveau terme.

Y a-t-il une raison pour laquelle la fonction ne lirait pas la variable de nom et ne l'aurait pas fait Merci de votre aide.

4
Eric Strom

Comme indiqué dans les commentaires de l'OP, certains caractères non-ASCII peuvent ne pas être pris en charge dans les noms de termes sous certaines conditions. Pour remplacer tous les caractères suspects par un trait de soulignement , utilisez le code suivant:

$categoryname = preg_replace('/[^a-z0-9]/i', '_', strtolower($categoryname));
wp_insert_term($categoryname, "department");

Pour remplacer tous les caractères suspects par un tiret , utilisez le code suivant:

$categoryname = preg_replace('/[^a-z0-9]/i', '-', strtolower($categoryname));
wp_insert_term($categoryname, "department");

Pour supprimez simplement tous les caractères suspects , utilisez le code suivant:

$categoryname = preg_replace('/[^a-z0-9]/i', '', strtolower($categoryname));
wp_insert_term($categoryname, "department");
1
dotancohen