2010-08-06 2 views
0

J'ai un script dans mon fichier functions.php qui vérifie l'existence de plusieurs catégories qui sont requises par mon thème, et si elles ne sont pas présent, il les crée ...Wordpress> Créer une catégorie en tant qu'enfant de "uncategorized" (catid = 1)

if(!get_cat_ID('my-category')){wp_create_category('my-category');} 

Je dois modifier ce script de deux manières ...

Tout d'abord, je dois créer la catégorie de sorte que sa catégorie parente est la catégorie « Non classé » (ou id 1). Deuxièmement, si la catégorie existe déjà, mais que son parent n'est pas l'identifiant 1, j'ai besoin de le faire.

Répondre

0

Pour répondre à la question posée dans votre commentaire sur ma réponse précédente ... Comment faire pour exécuter la fonction de modification de catégorie lorsqu'un utilisateur active votre thème?

Vous devez utiliser un crochet d'action. Plus précisément, "switch_theme". Ceci est la page de codex pour all action hooks, je ne peux pas lier à switch_theme spécifiquement, mais faites défiler vers le bas et vous le trouverez. Il n'y a aucune information spécifique sur ce crochet, mais l'utilisation est simple. Vous pouvez inclure votre fonction dans functions.php ou dans un fichier de plug-in, et après la définition de la fonction, notamment this hook:

function add_my_categories($my-theme-name){ 
     //if $my-theme-name == 'my_theme_name 
      //test if category exists 
      //if exists, update 
      //if doesn't exist, create and assign parent 
    } 
add_action('switch_theme','add_my_categories'); 

le « add_action() » appel exécutera la fonction appelée lorsque le crochet nommé est rencontré dans wordpress. Le hook 'switch_theme' s'exécute après le changement d'un thème.

Il est important de savoir que ce crochet fournira le nom du nouveau thème courant à votre fonction, qui peut l'accepter comme argument si vous en avez besoin. Par exemple, pour vous assurer que la fonction ne s'exécute que si votre thème est activé. Je suppose que si cette fonction est dans le fichier functions.php de votre thème, elle ne fonctionnera JAMAIS à moins que votre thème ne soit activé, ainsi vous pouvez déterminer si vous devez vérifier le nom du thème.

+0

Parfait. Merci Kevtrout –

1

D'abord, testez si la catégorie existe. Si c'est le cas, utilisez pour obtenir les parents d'une catégorie existante.

$parentID = get_category_parents(my-category-ID, false); 

En second lieu, la second accepted argument de wp_create_category() est la catégorie que vous souhaitez attribuer comme la catégorie parente.

if(!get_cat_ID('my-category')){wp_create_category('my-category',parent category ID);} 

En troisième lieu, si la catégorie existe, vous pouvez utiliser wp_update_term() changer ses attributs.

wp_update_term($term_id, $taxonomy, $args); 
+0

Merci kevtrout. Je crois que je suis proche avec votre aide. Je ne veux pas avoir à faire ce test chaque fois que quelqu'un frappe une page sur le site. Je voudrais envelopper ceci dans mes fonctions.php d'une manière qui ne s'exécute qu'une seule fois lorsque le thème est activé pour la première fois. Des idées pour ça? Si oui, à quoi ressemblerait votre solution? –

Questions connexes