WordPress come base di conoscenza

Al lavoro abbiamo precedentemente utilizzato KBPublisher per gestire la nostra knowledge base. Costava soldi, era difficile da stile, il codice è criptato con cubo ionico e così via, in pratica molto difficile da mantenere. WordPress può fare le stesse cose e anche meglio.

Questo tutorial ti mostrerà come utilizzare le tassonomie personalizzate per le sezioni della knowledge base e i post personalizzati per gli articoli della knowledge base.


Passaggio 1 Amministrazione

Le sezioni e gli articoli della Knowledge Base devono essere gestiti. WordPress rende questo facile da fare con tassonomie personalizzate e tipi di messaggi personalizzati.

Basta registrare la nuova tassonomia e inserire il tipo. Aggiungi il seguente in functions.php dal tuo tema.

Per ulteriori informazioni sui dettagli di questa funzionalità, leggi il nostro altro tipo di post personalizzato e gli articoli di tassonomia personalizzati.

 function register_kb () register_post_type ('knowledgebase', array ('labels' => array ('name' => 'Knowledge Base', 'menu_name' => 'Knowledge Base', 'singular_name' => 'Articolo', ' all_items '=>' Tutti gli articoli '),' public '=> true,' public_queryable '=> true,' show_ui '=> true,' show_in_menu '=> true,' show_in_nav_menus '=> true,' menu_position '=> 20, 'supports' => array ('titolo', 'editor', 'autore', 'miniatura', 'commenti', 'post-formati', 'revisioni'), 'gerarchico' => falso, 'tassonomie' => array ('section'), 'has_archive' => true, 'rewrite' => array ('slug' => 'knowledgebase', 'hierarchical' => true, 'with_front' => false))); register_taxonomy ('section', array ('knowledgebase'), array ('labels' => array ('name' => 'Sections', 'menu_name' => 'Sections', 'singular_name' => 'Sezione', ' all_items '=>' Tutte le sezioni '),' 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 ('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-> rules;  add_action ('generate_rewrite_rules', 'kb_rewrite_rules');

Questo verrà eseguito dopo il completamento del caricamento di WordPress ma prima che vengano inviate le intestazioni, registrando il tipo di post e la tassonomia. Inoltre, aggiungerà le regole di riscrittura per i permalink della tassonomia e del tipo di post.

Il register_post_type registra il tipo di messaggio personalizzato, questo viene utilizzato per gli articoli della KB. Il register_taxonomy registra la tassonomia personalizzata, questa viene utilizzata per le sezioni KB. Gli articoli non saranno gerarchici ma le sezioni saranno, quindi dà la possibilità di creare una struttura ad albero.

Inoltre sarebbe bello mostrare le sezioni a cui è assegnato un articolo.

 function kb_columns ($ defaults) $ defaults ['section'] = 'Sections'; restituisce $ defaults;  add_filter ('manage_knowledgebase_posts_columns', 'kb_columns'); funzione kb_custom_column ($ column_name, $ post_id) $ taxonomy = $ column_name; $ post_type = get_post_type ($ post_id); $ terms = get_the_terms ($ post_id, $ taxonomy); if (! empty ($ terms)) foreach ($ termini come $ term) $ post_terms [] = "slug"> ". esc_html (sanitize_term_field ('nome', $ term-> nome, $ term-> term_id , $ taxonomy, 'edit')). ''; echo join (',', $ post_terms); else echo 'Nessun termine.';  add_action ('manage_knowledgebase_posts_custom_column', 'kb_custom_column', 10, 2);

Ora aggiungi alcune sezioni e alcuni articoli, quindi c'è qualcosa da mostrare.


Passaggio 2 Mostrare le sezioni

Aggiungi il seguente in functions.php dal tuo tema.

 function kb_sections ($ sections = array (), $ active_section = null) $ taxonomy = 'section'; $ link_class = "; if (vuoto ($ sezioni)) $ link_class = 'root'; $ sections = get_terms ($ taxonomy, array ('parent' => 0, 'hide_empty' => 0)); $ active_section = kb_active_section (); echo '
    '; if (empty ($ active_section)) $ active_section = "; foreach ($ sezioni come $ section) $ toggle ="; $ section_children = get_terms ($ taxonomy, array ('parent' => $ section-> term_id, 'hide_empty' => 0)); if (! empty ($ section_children) && $ link_class! = 'root') $ toggle = ''; eco ''; echo 'lumaca. '">'. $ alterna. $ sezione-> nome. ''; if (! vuoto ($ section_children)) echo '
      '; kb_sections ($ section_children, $ active_section); eco ""; eco "
    "; function kb_active_section () $ taxonomy = 'section'; $ current_section ="; if (is_single ()) $ sections = explode ('/', get_query_var ($ taxonomy)); $ section_slug = end ($ section); if ($ section_slug! = ") $ term = get_term_by ('slug', $ section_slug, $ taxonomy); else $ terms = wp_get_post_terms (get_the_ID (), $ taxonomy); $ term = $ terms [0]; $ current_section = $ term-> term_id; else $ term = get_term_by ('slug', get_query_var ($ taxonomy), get_query_var ('taxonomy')); $ current_section = $ term-> term_id; restituisce $ current_section;

Nella cartella del tema crea un file chiamato sidebar-sections.php dove il vostro kb_sections la funzione verrà chiamata in uscita da un elenco di sezioni non ordinato e annidato.

 

In questo modo, le sezioni KB possono essere visualizzate ovunque, come desiderato, includendo la barra laterale.

 

Passaggio 3 Mostrare gli articoli

Aggiungi il seguente in functions.php dal tuo tema.

 funzione 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. '/'. $ article-> post_name. '/ ">'. $ article-> post_title. ''; return $ permalink;

Nota: questo metodo è necessario perché un articolo può essere collegato a più sezioni.

Questo genererà una struttura di permalink gerarchica.

Piace: / Knowledge / sezione slug / sottosezione-slug / altro-sottosezione-slug / article-slug

Nella cartella del tema, quindi, crea questi file: archive-knowledgebase.php, single-knowledgebase.php, content-knowledgebase.php, tassonomia-section.php.

Nel archive-knowledgebase.php aggiungi quanto segue per mostrare le sezioni e gli articoli recenti.

 ID, 'sezione'); $ term = $ termini [0]; echo kb_article_permalink ($ post-> ID, $ term-> term_id); ENDWHILE; get_footer (); ?>

Nel single-knowledgebase.php aggiungi il seguente.

 

Nel content-knowledgebase.php aggiungi il seguente.

 

Nel tassonomia-section.php aggiungi quanto segue per mostrare un elenco di articoli da una sezione.

 query, array ('posts_per_page' => 100)); query_posts ($ args); $ term = get_term_by ('slug', get_query_var ('term'), 'section'); get_header (); get_sidebar ('sezioni'); while (have_posts ()): the_post (); echo kb_article_permalink ($ post-> ID, $ term-> term_id); ENDWHILE; get_footer (); ?>

Questo può essere strutturato e stilizzato come desiderato.


Esempio

Un vero esempio di come funziona e come può essere usato: syneto.net


Riferimenti

  • add_action
  • register_post_type
  • register_taxonomy
  • add_filter