Op het werk hebben we eerder KBPublisher gebruikt om onze kennisbank te beheren. Het heeft geld gekost, het was moeilijk te stylen, code is gecodeerd met een ionenblokje, enzovoort, eigenlijk heel moeilijk te onderhouden. WordPress kan dezelfde dingen doen en zelfs nog beter.
In deze zelfstudie leer je aangepaste taxonomieën gebruiken voor kennisbanksecties en aangepaste berichten voor kennisbankartikelen.
Secties en artikelen van Knowledge Base moeten worden beheerd. WordPress maakt dit eenvoudig te doen met aangepaste taxonomieën en aangepaste berichttypen.
Registreer gewoon de nieuwe taxonomie en het berichttype. Voeg het volgende toe functions.php van je thema.
Lees onze andere aangepaste artikelen voor posttypen en aangepaste taxonomieën voor meer informatie over de ins en outs van deze functionaliteit.
function register_kb () register_post_type ('knowledgebase', array ('labels' => array ('name' => 'Knowledge Base', 'menu_name' => 'Knowledge Base', 'singular_name' => 'Artikel', ' all_items '=>' Alle artikelen '),' public '=> true,' publicly_queryable '=> true,' show_ui '=> true,' show_in_menu '=> true,' show_in_nav_menus '=> true,' menu_position '=> 20, 'supports' => array ('title', 'editor', 'author', 'thumbnail', 'comments', 'post-formats', 'revisions'), 'hierarchical' => false, 'taxonomies' => array ('sectie'), 'has_archive' => true, 'rewrite' => array ('slug' => 'knowledge base', 'hierarchical' => true, 'with_front' => false))); register_taxonomy ('sectie', array ('knowledgebase'), array ('labels' => array ('name' => 'Sections', 'menu_name' => 'Secties', 'singular_name' => 'Sectie', ' all_items '=>' Alle secties '),' 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');
Dit wordt uitgevoerd nadat WordPress is geladen maar voordat kopteksten zijn verzonden, waarbij het posttype en de taxonomie worden geregistreerd. Ook worden de herschrijfregels voor de permalinks van de taxonomie en het berichttype toegevoegd.
De register_post_type
registreert het aangepaste berichttype, dit wordt gebruikt voor de KB-artikelen. De register_taxonomy
registreert de aangepaste taxonomie, deze wordt gebruikt voor de KB-secties. De artikelen zullen niet hiërarchisch zijn maar de secties zullen zijn, dus het geeft de mogelijkheid om een boomstructuur te maken.
Het zou ook leuk zijn om de secties te tonen waaraan een artikel is toegewezen.
function kb_columns ($ defaults) $ defaults ['section'] = 'Secties'; $ standaardwaarden retourneren; add_filter ('manage_knowledgebase_posts_columns', 'kb_columns'); functie 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 ($ terms as $ term) $ post_terms [] = "slug"> ". esc_html (sanitize_term_field ('naam', $ term-> naam, $ term-> term_id , $ taxonomy, 'edit')). ''; echo join (',', $ post_terms); else echo 'Geen voorwaarden.'; add_action ('manage_knowledgebase_posts_custom_column', 'kb_custom_column', 10, 2);
Voeg nu enkele secties en enkele artikelen toe, zodat er iets te zien is.
Voeg het volgende toe functions.php van je thema.
function kb_sections ($ sections = array (), $ active_section = null) $ taxonomy = 'section'; $ link_class = "; if (leeg ($ secties)) $ link_class = 'root'; $ sections = get_terms ($ taxonomy, array ('parent' => 0, 'hide_empty' => 0)); $ active_section = kb_active_section (); echo '
Maak in de themamap een bestand met de naam sidebar-sections.php waar jouw kb_sections
functie wordt de uitvoer van een ongeordende en geneste lijst met secties genoemd.
Zo kunnen de KB-secties overal worden weergegeven zoals gewenst door de zijbalk op te nemen.
Voeg het volgende toe functions.php van je thema.
function kb_article_permalink ($ article_id, $ section_id) $ taxonomy = 'section'; $ article = get_post ($ article_id); $ section = get_term ($ section_id, $ taxonomy); $ section_ancestors = get_ancestors ($ sectie-> term_id, $ taxonomie); krsort ($ section_ancestors); $ permalink = 'slug. '/'; endforeach; $ permalink. = $ sectie-> naaktslak. '/'. $ article-> post_name. '/ ">'. $ article-> post_title. ''; return $ permalink;
Notitie: deze methode is nodig omdat een artikel aan meerdere secties kan worden gekoppeld.
Dit genereert een hiërarchische permalink-structuur.
Net zoals: / Kennisbank / doorsnede-slug / subprofiel-slug / andere-onderdeel-slug / article-slug
Maak in de themamap deze bestanden: archief-knowledgebase.php, single-knowledgebase.php, inhoud knowledgebase.php, taxonomie-section.php.
In archief-knowledgebase.php voeg het volgende toe om de secties en recente artikelen te tonen.
ID, 'sectie'); $ term = $ terms [0]; echo kb_article_permalink ($ post-> ID, $ term-> term_id); endwhile; get_footer (); ?>
In single-knowledgebase.php voeg het volgende toe.
In inhoud knowledgebase.php voeg het volgende toe.
In taxonomie-section.php voeg het volgende toe om een lijst met artikelen uit een sectie te tonen.
query, array ('posts_per_page' => 100)); query_posts ($ args); $ term = get_term_by ('slug', get_query_var ('term'), 'section'); get_header (); get_sidebar ('secties'); while (have_posts ()): the_post (); echo kb_article_permalink ($ post-> ID, $ term-> term_id); endwhile; get_footer (); ?>
Dit kan naar wens worden gestructureerd en gestyled.
Een echt voorbeeld van hoe dit werkt en hoe het kan worden gebruikt: syneto.net