La lucru am folosit anterior KBPublisher pentru a gestiona baza noastră de cunoștințe. A costat bani, a fost greu de stil, codul este criptat cu cuburi ionice și așa mai departe, practic foarte greu de întreținut. WordPress poate face aceleași lucruri și chiar mai bine.
Acest tutorial vă va arăta cum să utilizați taxonomii personalizate pentru secțiunile bazei de cunoștințe și postări personalizate pentru articolele bazei de cunoștințe.
Bazele bazei de cunoștințe și articolele trebuie să fie gestionate. WordPress face acest lucru ușor de făcut cu taxonomii personalizate și tipuri personalizate post.
Doar înregistrați noua taxonomie și post tip. Adăugați următoarele în functions.php din tema ta.
Pentru mai multe informații despre insulele și dezavantajele acestei funcționalități, citiți celelalte articole personalizate post tip și taxonomie particularizate.
funcția register_kb () register_post_type ('knowledgebase', array ('labels' => array ('name' => 'Knowledge Base' all_items '=>' Toate articolele '),' public '=> true,' publicly_queryable '=> true,' show_ui '=> true,' show_in_menu '=> true,' show_in_nav_menus '=> true, 20 "suportă" => array ("titlu", "editor", "autor", "miniatură", "comentarii", "postformate", "revizii" => array ('secțiunea'), 'has_archive' => true, 'rewrite' => array ('slug' => 'knowledgebase', 'hierarchical' => true, 'with_front' => false))); register_taxonomy ('secțiune', array ('knowledgebase'), array ('labels' => all_items '=>' Toate secțiunile '),' public '=> true,' hierarchical '=> true,' show_ui '=> true,' rewrite ' hierarchic '=> true,' with_front '=> false),)); add_action ('init', 'register_kb'); ($ wp_rewrite) $ new_rules = array ('knowledgebase /(.*)/(.*)' => 'index.php? post_type = knowledgebase & section ='. $ wp_rewrite-> preg_index (1) '$ wp_rewrite-> preg_index (2)); $ wp_rewrite-> rules = $ new_rules + $ wp_rewrite-> reguli; add_action ('generate_rewrite_rules', 'kb_rewrite_rules');
Aceasta se va executa după ce WordPress a terminat încărcarea, dar înainte de trimiterea oricăror antete, înregistrând tipul postului și taxonomia. De asemenea, acesta va adăuga regulile de rescriere pentru permalinks din taxonomie și tip post.
register_post_type
înregistrează tipul postului personalizat, acesta este folosit pentru articolele KB. register_taxonomy
înregistrează taxonomia personalizată, aceasta este folosită pentru secțiunile KB. Articolele nu vor fi ierarhice, dar secțiunile vor fi, deci oferă posibilitatea de a crea o structură arborescentă.
De asemenea, ar fi frumos să arătați secțiunile la care este alocat un articol.
funcția kb_columns (implicit $) $ defaults ['section'] = 'Secțiuni'; returnează $ implicit; add_filter ('manage_knowledgebase_posts_columns', 'kb_columns'); funcția kb_custom_column ($ column_name, $ post_id) $ taxonomy = $ column_name; $ post_type = get_post_type ($ post_id); $ terms = get_the_terms ($ post_id, taxonomie $); dacă (empty ($ terms) foreach ($ termeni ca $ termen) $ post_terms [] = "slug"> ". , $ taxonomy, 'edit')). '; echo join (', ', $ post_terms)Nu există condiții.„; add_action ('manage_knowledgebase_posts_custom_column', 'kb_custom_column', 10, 2);
Acum adaugati cateva sectiuni si cateva articole, astfel incat sa fie ceva de vazut.
Adăugați următoarele în functions.php din tema ta.
funcția kb_sections ($ sections = array (), $ active_section = null) $ taxonomy = 'secțiune'; $ link_class = "; dacă (gol ($ secțiuni)) $ link_class = 'root'; $ sections = get_terms ($ taxonomy, array ('parent' => 0, 'hide_empty' => 0) kb_active_section (); echo '
În directorul tematic creați un fișier numit Sidebar-sections.php unde al tau kb_sections
funcția va fi numită afișarea unei liste de secțiuni neordonate și imbricate.
Astfel, secțiunile KB pot fi afișate oriunde doriți, inclusiv prin includerea barei laterale.
Adăugați următoarele în functions.php din tema ta.
funcția kb_article_permalink ($ article_id, $ section_id) $ taxonomy = 'secțiune'; $ articol = get_post ($ article_id); $ section = get_term ($ section_id, taxonomie $); $ section_ancestors = get_ancestors (secțiunea $-> termen_id, taxonomie $); krsort ($ section_ancestors); $ permalink = 'slug. '/'; endforeach; $ permalink. = secțiune $-> slug. '/'. $ article-> post_name. '/'> '. $ article-> post_title.'; return $ permalink;;
Notă: această metodă este necesară deoarece un articol poate fi legat la mai multe secțiuni.
Aceasta va genera o structură ierarhică permalink.
Ca: / Knowledgebase / section-slug / subsecțiune-slug / un alt sub-secțiune-slug / article-Slug
În dosarul tematic, creați apoi aceste fișiere: Arhiva-knowledgebase.php, single-knowledgebase.php, Conținutul-knowledgebase.php, taxonomie-section.php.
În Arhiva-knowledgebase.php adăugați următoarele pentru a afișa secțiunile și articolele recente.
ID, secțiune); $ term = $ termeni [0]; echo kb_article_permalink ($ post-> ID, $ termen-> termen_id); endwhile; get_footer (); ?>
În single-knowledgebase.php adăugați următoarele.
În Conținutul-knowledgebase.php adăugați următoarele.
În taxonomie-section.php adăugați următoarele pentru a afișa o listă de articole dintr-o secțiune.
interogare, array ('posts_per_page' => 100)); query_posts ($ args); $ term = get_term_by ("slug", get_query_var ("termen"), "secțiune"); get_header (); get_sidebar ("secțiuni"); în timp ce (have_posts ()): the_post (); echo kb_article_permalink ($ post-> ID, $ termen-> termen_id); endwhile; get_footer (); ?>
Acesta poate fi structurat și desemnat așa cum se dorește.
Un exemplu real de viață a modului în care funcționează și cum poate fi folosit: syneto.net