WordPress som kunskapsbas

På jobbet använde vi tidigare KBPublisher för att hantera vår kunskapsbas. Det kostade pengar, det var svårt att stil, kod krypteras med jonkub och så vidare, i grunden mycket svårt att underhålla. WordPress kan göra samma saker och ännu bättre.

Denna handledning visar dig hur du använder egna taxonomier för kunskapsbaserade sektioner och anpassade inlägg för kunskapsbasartiklar.


Steg 1 Administration

Kunskapsbas sektioner och artiklar måste hanteras. WordPress gör det enkelt att göra med anpassade taxonomier och anpassade posttyper.

Registrera bara den nya taxonomin och posttypen. Lägg till följande i functions.php från ditt tema.

För mer information om insatserna i denna funktionalitet, läs vår andra anpassade posttyp och anpassade taxonomidokument.

 funktionen register_kb () register_post_type ('knowledgebase', array ('labels' => array ('namn' => 'Knowledge Base', 'menu_name' => 'Kunskapsbas', 'singular_name' => 'Artikel' all_items '=>' Alla artiklar '),' public '=> true,' publicly_queryable '=> true,' show_ui '=> true,' show_in_menu '=> true,' show_in_nav_menus '=> true,' menu_position '=> 20, 'support' => array ('titel', 'redaktör', 'författare', 'miniatyrbild', 'kommentarer', 'postformater', 'revisioner'), 'hierarkiska' => => array ('section'), 'has_archive' => true, 'rewrite' => array ('slug' => 'knowledgebase', 'hierarchical' => true, 'with_front' => false))); register_taxonomy ('section', array ('knowledgebase'), array ('etiketter' => array ('name' => 'Sections',' menu_name '=>' Sections', 'singular_name' => 'Section' all_items '=>' All Sections '),' public '=> true,' hierarchical '=> true,' show_ui '=> sant,' rewrite '=> array (' slug '=>' knowledgebase-section ' hierarkisk '=> true,' with_front '=> false),));  add_action ('init', 'register_kb'); Funktion kb_rewrite_rules ($ wp_rewrite) $ new_rules = array ('knowledgebase /(.*)/(.*)' => 'index.php? post_type = knowledgebase & section ='. $ wp_rewrite-> preg_index (1). '& knowledgebase = '. $ wp_rewrite-> preg_index (2)); $ wp_rewrite-> rules = $ new_rules + $ wp_rewrite-> regler;  add_action ('generate_rewrite_rules', 'kb_rewrite_rules');

Detta kommer att köras efter att WordPress har laddat, men innan några rubriker skickas, registrerar du posttypen och taxonomin. Dessutom lägger det till omskrivningsreglerna för permalinkerna i taxonomin och posttypen.

De register_post_type registrerar den anpassade posttypen, det här används för KB-artiklarna. De register_taxonomy registrerar anpassad taxonomi, detta används för KB-sektionerna. Artiklarna kommer inte att vara hierarkiska men sektionerna kommer att vara, så det ger möjlighet att skapa en trädstruktur.

Det skulle också vara trevligt att visa de avsnitt som en artikel är tilldelad till.

 funktion kb_columns ($ standardvärden) $ standardvärden ['section'] = 'Sections'; returnera $ standardvärden;  add_filter ('manage_knowledgebase_posts_columns', 'kb_columns'); funktion kb_custom_column ($ kolumnnamn, $ post_id) $ taxonomy = $ kolumnnamn; $ post_type = get_post_type ($ post_id); $ terms = get_the_terms ($ post_id, $ taxonomy); $ töm $ term) foreach ($ termer som $ term) $ post_terms [] = "slug"> ". esc_html (sanitize_term_field (" namn ", $ term-> namn, $ term-> term_id , $ taxonomi, 'redigera')). ''; echo join (',', $ post_terms); annat echo 'Inga villkor.';  add_action ('manage_knowledgebase_posts_custom_column', 'kb_custom_column', 10, 2);

Lägg nu till några avsnitt och några artiklar så det finns något att visa.


Steg 2 Visar sektionerna

Lägg till följande i functions.php från ditt tema.

 funktion kb_sections ($ sections = array (), $ active_section = null) $ taxonomy = 'section'; $ link_class = "; om (tomt ($ sektioner)) $ link_class = 'root'; $ sections = get_terms ($ taxonomi, array ('parent' => 0, 'hide_empty' => 0)); $ active_section = kb_active_section (); echo '
    '; om (tomt ($ active_section)) $ active_section = "; foreach ($ sektioner som $ avsnitt) $ toggle ="; $ section_children = get_terms ($ taxonomy, array ('parent' => $ section-> term_id, 'hide_empty' => 0)); om (! tomt ($ section_children) && $ link_class! = 'root') $ toggle = ''; eko'; eko "slug. $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $
      '; kb_sections ($ section_children, $ active_section); eko ""; echo"
    "; funktion kb_active_section () $ taxonomy = 'section'; $ current_section ="; om (is_single ()) $ sections = explodera ('/', get_query_var ($ taxonomy)); $ section_slug = end ($ sections); om ($ section_slug! = ") $ term = get_term_by ('slug', $ section_slug, $ taxonomy); annat $ terms = wp_get_post_terms (get_the_ID (), $ taxonomy); $ term = $ termer [0]; $ current_section = $ term-> term_id; annat $ term = get_term_by ("slug", get_query_var ($ taxonomy), get_query_var ('taxonomy')); $ current_section = $ term-> term_id; returnera $ current_section;

I temapappen skapar du en fil som heter sidofält-sections.php var din kb_sections funktionen kallas utmatning av en oordnad och kapslad lista över sektioner.

 

På så sätt kan KB-sektionerna visas överallt efter önskemål genom att inkludera sidofältet.

 

Steg 3 Visar artiklarna

Lägg till följande i functions.php från ditt tema.

 funktion 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. '/'; endforeach; $ permalink. = $ section-> slug. '/'. $ artikel-> postnamn. '/ ">'. $ artikel-> post_title. ''; returnera $ permalink;

Notera: Denna metod är nödvändig eftersom en artikel kan kopplas till flera sektioner.

Detta kommer att generera en hierarkisk permalinkstruktur.

Tycka om: / Kunskapsbas / sektion-skvätten / underavsnitt-slug / annan-underavsnitt-slug / artikel-skvätten

I tematappen skapar du sedan följande filer: arkiv-knowledgebase.php, enkel knowledgebase.php, innehålls knowledgebase.php, taxonomi-section.php.

I arkiv-knowledgebase.php Lägg till följande för att visa sektionerna och de senaste artiklarna.

 ID, "avsnitt"); $ term = $ termer [0]; echo kb_article_permalink ($ post-> ID, $ term-> term_id); EndWhile; get_footer (); ?>

I enkel knowledgebase.php lägg till följande.

 

I innehålls knowledgebase.php lägg till följande.

 

I taxonomi-section.php lägg till följande för att visa en lista med artiklar från en sektion.

 fråga, array ('posts_per_page' => 100)); query_posts ($ args); $ term = get_term_by ('slug', get_query_var ('term'), 'section'); get_header (); get_sidebar ('sections'); medan (have_posts ()): the_post (); echo kb_article_permalink ($ post-> ID, $ term-> term_id); EndWhile; get_footer (); ?>

Detta kan struktureras och formas efter önskemål.


Exempel

Ett verkligt exempel på hur det fungerar och hur det kan användas: syneto.net


referenser

  • add_action
  • register_post_type
  • register_taxonomy
  • add_filter