Au travail, nous utilisions précédemment KBPublisher pour gérer notre base de connaissances. Cela coûtait de l'argent, il était difficile de styler, le code est crypté avec ion cube et ainsi de suite, ce qui est très difficile à maintenir. WordPress peut faire les mêmes choses et même mieux.
Ce didacticiel explique comment utiliser les taxonomies personnalisées pour les sections de la base de connaissances et les publications personnalisées pour les articles de la base de connaissances..
Les sections et les articles de la base de connaissances doivent être gérés. WordPress facilite la tâche avec les taxonomies personnalisées et les types de publication personnalisés.
Enregistrez simplement la nouvelle taxonomie et le type de message. Ajouter ce qui suit dans functions.php de votre thème.
Pour plus d'informations sur les tenants et les aboutissants de cette fonctionnalité, consultez nos autres articles sur les types de publications personnalisées et la taxonomie personnalisée..
function register_kb () register_post_type ('base de connaissances', array ('labels' => array ('nom' => 'Base de connaissances', 'menu_name' => 'Base de connaissances', 'nom_s singulier' => 'Article', ' all_items '=>' Tous les articles '),' public '=> vrai,' public_queryable '=> vrai,' show_ui '=> vrai,' show_in_menu '=> vrai,' show_in_nav_menus '=> vrai,' menu_position '=> 20, 'prend en charge' => array ('titre', 'éditeur', 'auteur', 'miniature', 'commentaires', 'post-formats', 'révisions'), 'hierarchique' => faux, 'taxonomies' => array ('section'), 'has_archive' => true, 'rewrite' => array ('slug' => 'base de connaissances', 'hierarchical' => true, 'with_front' => false))); register_taxonomy ('section', array ('base de connaissances'), array ('labels' => array ('name' => 'Sections', 'menu_name' => 'Sections', 'singular_name' => 'Section', ' all_items '=>' Toutes les sections '),' public '=> true,' hierarchical '=> true,' show_ui '=> true,' rewrite '=> array (' slug '=>' Knowledgebase-section ',' hierarchical '=> true,' with_front '=> false),)); add_action ('init', 'register_kb'); function kb_rewrite_rules ($ wp_rewrite) $ new_rules = array ('base de connaissances /(.*)/(.*)' => 'index.php? post_type = base de connaissances & section ='. $ wp_rewrite-> preg_index (1). '& knowledgebase = '. $ wp_rewrite-> preg_index (2)); $ wp_rewrite-> rules = $ new_rules + $ wp_rewrite-> rules; add_action ('generate_rewrite_rules', 'kb_rewrite_rules');
Cela fonctionnera une fois le chargement de WordPress terminé, mais avant l'envoi des en-têtes, enregistrez le type de publication et la taxonomie. En outre, il va ajouter les règles de réécriture pour les permaliens de la taxonomie et type de poste.
le register_post_type
enregistre le type de publication personnalisé, il est utilisé pour les articles de la base de connaissances. le register_taxonomy
enregistre la taxonomie personnalisée, elle est utilisée pour les sections de la base de connaissances. Les articles ne seront pas hiérarchiques mais les sections le seront, ce qui donne la possibilité de créer une arborescence.
De plus, il serait bien de montrer aux sections qu’un article est assigné à.
function kb_columns ($ defaults) $ defaults ['section'] = 'Sections'; retourne $ par défaut; add_filter ('manage_knowledgebase_posts_columns', 'kb_columns'); function kb_custom_column ($ nom_colonne, $ id_post) $ taxonomy = $ nom_colonne; $ post_type = get_post_type ($ post_id); $ terms = get_the_terms ($ post_id, $ taxonomy); if (! empty ($ terms)) foreach ($ terms as $ term) $ post_terms [] = "slug"> ". esc_html (sanitize_term_field ('nom', $ terme-> nom, $ terme-> terme_id , $ taxonomy, 'edit')). ''; echo join (',', $ post_terms); else echo 'Aucun terme.'; add_action ('manage_knowledgebase_posts_custom_column', 'kb_custom_column', 10, 2);
Maintenant, ajoutez quelques sections et des articles afin qu'il y ait quelque chose à montrer.
Ajouter ce qui suit dans functions.php de votre thème.
fonction kb_sections ($ sections = array (), $ active_section = null) $ taxonomy = 'section'; $ link_class = "; if (vide ($ sections)) $ link_class = 'root'; $ sections = get_terms ($ taxonomy, array ('parent' => 0, 'hide_empty' => 0)); $ active_section = kb_active_section (); echo '
Dans le dossier du thème, créez un fichier appelé sidebar-sections.php où votre kb_sections
fonction sera appelée sortie d'une liste de sections non ordonnée et imbriquée.
De cette façon, les sections de la base de connaissances peuvent être affichées partout comme vous le souhaitez en incluant la barre latérale.
Ajouter ce qui suit dans functions.php de votre thème.
fonction kb_article_permalink ($ article_id, $ section_id) $ taxonomy = 'section'; $ article = get_post ($ article_id); $ section = get_term ($ section_id, $ taxonomy); $ section_ancestors = get_ancestors ($ section-> term_id, $ taxonomy); krsort ($ section_ancestors); $ permalink = 'slug. '/'; fin de chaque $ permalink. = $ section-> slug. '/' $ article-> post_name. '/ ">'. $ article-> post_title. ''; return $ permalien;
Remarque: cette méthode est nécessaire car un article peut être lié à plusieurs sections.
Cela va générer une structure hiérarchique permalien.
Comme: / base de connaissances / section-slug / sous-section-slug / autre-sous-section-slug / article-slug
Dans le dossier du thème, créez ensuite ces fichiers: archive-knowledgebase.php, single-knowledgebase.php, content-knowledgebase.php, taxonomy-section.php.
Dans archive-knowledgebase.php ajoutez ce qui suit pour afficher les sections et les articles récents.
ID, «section»); $ term = $ terms [0]; echo kb_article_permalink ($ post-> ID, $ term-> term_id); en attendant; get_footer (); ?>
Dans single-knowledgebase.php ajouter ce qui suit.
Dans content-knowledgebase.php ajouter ce qui suit.
Dans taxonomy-section.php ajoutez ce qui suit pour afficher une liste d'articles d'une section.
requête, array ('posts_per_page' => 100)); query_posts ($ args); $ term = get_term_by ('slug', get_query_var ('terme'), 'section'); get_header (); get_sidebar ('sections'); while (have_posts ()): the_post (); echo kb_article_permalink ($ post-> ID, $ term-> term_id); en attendant; get_footer (); ?>
Cela peut être structuré et stylé comme souhaité.
Un exemple concret de son fonctionnement et de son utilisation: syneto.net