Ajouter des balises au type de publication personnalisé
-
29-09-2020 - |
Question
J'utilise le framework Cherry sur un site WP.Il est livré avec un type de publication personnalisé qui peut être utilisé pour ajouter des « membres de l'équipe » et créer des pages pour le personnel, etc.
Je dois étendre cela afin de pouvoir ajouter des balises à chaque « membre de l'équipe » afin de pouvoir essentiellement les marquer comme travaillant dans un département a/b/c/etc.
Le type de publication personnalisé est enregistré dans le fichier theme-init.php à l'aide de ce code ;
/* Our Team */
function my_post_type_team() {
register_post_type( 'team',
array(
'label' => theme_locals("our_team"),
'singular_label' => theme_locals("our_team"),
'_builtin' => false,
// 'exclude_from_search' => true, // Exclude from Search Results
'capability_type' => 'page',
'public' => true,
'show_ui' => true,
'show_in_nav_menus' => false,
'menu_position' => 5,
'menu_icon' => ( version_compare( $GLOBALS['wp_version'], '3.8', '>=' ) ) ? 'dashicons-businessman' : '',
'rewrite' => array(
'slug' => 'team-view',
'with_front' => FALSE,
),
'supports' => array(
'title',
'editor',
'thumbnail',
)
)
);
}
add_action('init', 'my_post_type_team');
Je souhaite y ajouter des balises, de sorte que lorsque j'ajoute un nouveau membre de l'équipe, je puisse également l'attribuer à un service en ajoutant une balise pertinente donnée.À l'heure actuelle, la boîte de dialogue de l'éditeur de balises n'apparaît pas sur la page d'ajout/modification.
J'ai donc adapté le code ci-dessus pour inclure une taxonomie de registre comme celle-ci ;
/* Our Team */
function my_post_type_team() {
register_post_type( 'team',
array(
'label' => theme_locals("our_team"),
'singular_label' => theme_locals("our_team"),
'_builtin' => false,
// 'exclude_from_search' => true, // Exclude from Search Results
'capability_type' => 'page',
'public' => true,
'show_ui' => true,
'show_in_nav_menus' => false,
'menu_position' => 5,
'menu_icon' => ( version_compare( $GLOBALS['wp_version'], '3.8', '>=' ) ) ? 'dashicons-businessman' : '',
'rewrite' => array(
'slug' => 'team-view',
'with_front' => FALSE,
),
'supports' => array(
'title',
'editor',
'thumbnail',
)
)
);
register_taxonomy(
'team_tag',
'team',
array(
'hierarchical' => false,
'label' => theme_locals("tags"),
'singular_name' => theme_locals("tag"),
'rewrite' => true,
'query_var' => true
)
);
}
add_action('init', 'my_post_type_team');
Cependant, la zone de balise n'apparaît toujours pas sur la page d'édition dans l'administrateur.
Toute aide avec cela sera grandement appréciée.
La solution
Il semble que le problème était en partie bas à leur étant un thème-init.php dans le thème de l'enfant qui écrasait des parties du thème-init.php dans le thème du cadre parent / cerise.
J'ai résolu le problème en ajoutant le code suivant dans le thème-init-init.php de mon enfant;
register_taxonomy('team_tag', 'team', array(
'hierarchical' => false,
'label' => theme_locals("tags"),
'singular_name' => theme_locals("tag"),
'rewrite' => true,
'query_var' => true
)
);
Autres conseils
Essayez ceci
register_taxonomy(
'team_tag',
'team',
array(
'hierarchical' => false,
'label' => __( 'Tags', CURRENT_THEME ),
'singular_name' => __( 'Tag', CURRENT_THEME ),
'rewrite' => true,
'query_var' => true
)
);
register_post_type( 'team',
array(
'label' => theme_locals("our_team"),
'singular_label' => theme_locals("our_team"),
'_builtin' => false,
// 'exclude_from_search' => true, // Exclude from Search Results
'capability_type' => 'page',
'public' => true,
'show_ui' => true,
'show_in_nav_menus' => false,
'menu_position' => 5,
'menu_icon' => ( version_compare( $GLOBALS['wp_version'], '3.8', '>=' ) ) ? 'dashicons-businessman' : '',
'rewrite' => array(
'slug' => 'team-view',
'with_front' => FALSE,
),
'supports' => array(
'title',
'editor',
'thumbnail',
),
'taxonomies' => array('team_tag')
)
);
Vous pouvez voir que j'ai ajouté le taxonomies
paramètre au register_post_type
fonction.
Bien que ce code devrait fonctionner, vous pouvez essayer de créer la relation plus tard, avec ceci :
add_action('init', 'add_tax_post_rel');
function add_tax_post_rel() {
register_taxonomy_for_object_type('team_tag', 'team', 11);
}
Vous pouvez essayer ceci
add_action( 'init', 'create_client_tax' );
function create_client_tax() {
register_taxonomy(
'client_tag', //your tags taxonomy
'client', // Your post type
array(
'hierarchical' => false,
'label' => __( 'Tags', CURRENT_THEME ),
'singular_name' => __( 'Tag', CURRENT_THEME ),
'rewrite' => true,
'query_var' => true
)
);
}
Peut-être que cela vous aidera