web-dev-qa-db-fra.com

Comment ajouter de nouveaux types d'options à l'arborescence d'options?

J'utilise l'arbre d'options en mode thème et en mode thème enfant et j'essaie d'ajouter de nouveaux types d'options. Les nouveaux types d'option seront basés sur le type d'option post-sélection, mais ne répertorieront que les publications d'une catégorie spécifique.

J'ai créé un nouveau fichier et l'a ajouté au tableau de fichiers à inclure qui commence à la ligne 178 du fichier ot-loader.php. Dans le nouveau fichier, j'ai coupé et collé le type d'option de post-sélection qui commence à la ligne 905 du fichier /includes/ot-functions-options-type.php. Vous pouvez voir ce nouveau fichier ici .

Dans mon post type d’option, j’ai ajouté un slug unique au nom de la fonction. J'ai également mis ce slug sur la classe CSS .type-post-select pour le wrapper de paramètres de format externes. Dans le tableau post query post, j'ai ajouté un paramètre de catégorie.

Ensuite, j'ai ajouté mon nouveau type d'option de post-sélection à mes options de thème, en espérant qu'il ne montrerait que les messages de la catégorie que j'avais définie. Il a montré les messages de toutes les catégories. Curieusement, l’option a été encapsulée dans .type-post-select. J'ai également créé une post-sélection régulière, qui n'avait pas le css modifié.

En tant qu'expérience, je me suis fatigué en ajoutant le paramètre category à l'option de post-sélection d'origine de la même manière et cela a fonctionné exactement comme je le souhaitais - en affichant uniquement les messages de cette catégorie. Malheureusement, j'ai besoin de créer 6 nouvelles post-sélections, chacune affichant des publications d'une catégorie différente.

Clairement, il me manque une étape, mais pour la vie de moi, je ne le trouve pas. J'ai cherché un autre endroit où les types d'options doivent être enregistrés ou quelque chose, mais je ne l'ai pas trouvé ...

7
JPollock

Ce que vous essayez de faire peut être accompli sans jamais modifier les fichiers de base dans OptionTree. Ajoutez vos fonctions de type d'option personnalisées à vos thèmes functions.php et au code suivant.

/**
 * Filter to add custom option types.
 *
 * @param     array     An array of option types.
 * @return    array
 */
function add_custom_option_types( $types ) {

  $types['post_select_a_1'] = 'Post Select option type. (_a_1)';
  $types['post_select_a_2'] = 'Post Select option type. (_a_2)';
  $types['post_select_a_3'] = 'Post Select option type. (_a_3)';
  $types['post_select_a_4'] = 'Post Select option type. (_a_4)';
  $types['post_select_a_5'] = 'Post Select option type. (_a_5)';
  $types['post_select_a_6'] = 'Post Select option type. (_a_6)';

  return $types;

}
add_filter( 'ot_option_types_array', 'add_custom_option_types' );

Cela chargera automatiquement vos fonctions dans OptionTree et vous ne devrez éditer aucun des fichiers principaux. Lorsque vous ajoutez de nouvelles options, il existe deux exigences. Un, toutes les fonctions doivent être précédées de ot_type_. Deuxièmement, lors de l’ajout au tableau d’options, vos nouvelles clés de tableau doivent correspondre au nom de la fonction moins ot_type_, vous pouvez utiliser - ou _ lors de la création de la clé. Donc, si vous avez une fonction personnalisée nommée ot_type_super_awesome, vous pouvez l'ajouter au tableau filtré avec:

$types['super_awesome'] = 'Super Awesome';

ou

$types['super-awesome'] = 'Super Awesome';

J'espère que cela dissipe toute confusion. Sur une note de côté, il y a deux ot_type_post_select_a_5 dans le fichier que vous avez créé et je suppose que le dernier devrait être ot_type_post_select_a_6. À votre santé!

4
Derek Herman