WordPress als Wissensdatenbank

Bei der Arbeit haben wir zuvor KBPublisher verwendet, um unsere Wissensdatenbank zu verwalten. Es kostete Geld, es war schwer zu formatieren, Code wird mit Ionenwürfeln usw. verschlüsselt und ist im Grunde sehr schwer zu warten. WordPress kann das Gleiche tun und noch besser.

In diesem Lernprogramm erfahren Sie, wie Sie benutzerdefinierte Taxonomien für Wissensdatenbankabschnitte und benutzerdefinierte Beiträge für Wissensdatenbankartikel verwenden.


Schritt 1 Administration

Wissensdatenbankabschnitte und Artikel müssen verwaltet werden. WordPress macht dies mit benutzerdefinierten Taxonomien und benutzerdefinierten Beitragstypen einfach.

Registrieren Sie einfach die neue Taxonomie und den Posttyp. Fügen Sie folgendes in hinzu Functions.php von deinem Thema.

Weitere Informationen zu diesen Funktionen finden Sie in unseren anderen benutzerdefinierten Beitragstypen und benutzerdefinierten Taxonomie-Artikeln.

 Funktion register_kb () register_post_type ('knowledgebase', array ('labels' => array ('name' => 'Knowledge Base', 'menu_name' => 'Knowledge Base', 'singular_name' => 'Artikel', ' all_items '=>' All Articles '),' public '=> true,' publicly_queryable '=> true,' show_ui '=> true,' show_in_menu '=> true,' show_in_nav_menus '=> true,' menu_position '=> 20, 'unterstützt' => Array ('Titel', 'Editor', 'Autor', 'Miniaturansicht', 'Kommentare', 'Post-Formate', 'Revisionen'), 'hierarchisch' => falsch, 'Taxonomien' => array ('section'), 'has_archive' => true, 'umschreiben' => array ('slug' => 'knowledgebase', 'hierarchisch' => true, 'with_front' => false))); register_taxonomy ('section', array ('knowledgebase'), array ('labels' => array ('name' => 'Sections', 'menu_name' => 'Sections', 'singular_name' => 'section', ' all_items '=>' All Sections '),' public '=> true,' hierarchical '=> true,' show_ui '=> true,' umschreiben '=> array (' slug '=>' knowledgebase-section ',' hierarchisch '=> 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) '. $ wp_rewrite-> preg_index (2)); $ wp_rewrite-> rules = $ new_rules + $ wp_rewrite-> rules;  add_action ('generate_rewrite_rules', 'kb_rewrite_rules');

Dies wird ausgeführt, nachdem WordPress das Laden abgeschlossen hat, jedoch bevor Header gesendet werden. Dabei werden Post-Typ und Taxonomie registriert. Außerdem werden die Umschreiberegeln für die Permalinks des Taxonomie- und Post-Typs hinzugefügt.

Das register_post_type Registriert den benutzerdefinierten Post-Typ. Dieser wird für die KB-Artikel verwendet. Das register_taxonomy registriert die benutzerdefinierte Taxonomie, dies wird für die KB-Abschnitte verwendet. Die Artikel werden nicht hierarchisch sein, die Abschnitte werden jedoch so sein, dass sie die Möglichkeit haben, eine Baumstruktur zu erstellen.

Es wäre auch schön, die Abschnitte anzuzeigen, denen ein Artikel zugeordnet ist.

 Funktion kb_columns ($ defaults) $ defaults ['section'] = 'Sections'; $ default zurückgeben;  add_filter ('manage_knowledgebase_posts_columns', 'kb_columns'); Funktion 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 als $ term) $ post_terms [] = "slug"> ". esc_html (sanitize_term_field ('name', $ term-> name, $ term-> term_id , $ taxonomy, 'edit')). ''; echo join (',', $ post_terms); else echo 'Keine Begriffe.';  add_action ('manage_knowledgebase_posts_custom_column', 'kb_custom_column', 10, 2);

Fügen Sie nun einige Abschnitte und Artikel hinzu, damit etwas angezeigt werden kann.


Schritt 2 Anzeigen der Abschnitte

Fügen Sie folgendes in hinzu Functions.php von deinem Thema.

 Funktion kb_sections ($ section = array (), $ active_section = null) $ taxonomy = 'section'; $ link_class = "; if (leer ($ section)) $ link_class = 'root'; $ section = get_terms ($ taxonomy, array ('parent' => 0, 'hide_empty' => 0)); $ active_section = kb_active_section (); echo '
    '; if (empty ($ active_section)) $ active_section = "; foreach ($ abschnitte als $ section) $ toggle ="; $ section_children = get_terms ($ taxonomy, array ('parent' => $ section-> term_id, 'hide_empty' => 0)); if (! empty ($ section_children) && $ link_class! = 'root') $ toggle = ''; Echo ''; Echo Slug. '">". $ toggle. $ section-> name.' 'if (! empty ($ section_children)) echo'
      '; kb_sections ($ section_children, $ active_section); Echo ""; Echo"
    "; Funktion kb_active_section () $ taxonomy = 'section'; $ current_section ="; if (is_single ()) $ section = explode ('/', get_query_var ($ taxonomy)); $ section_slug = end ($ abschnitte); 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; return $ current_section;

Erstellen Sie im Designordner eine Datei mit dem Namen Seitenleisten-Abschnitte.php wo dein kb_sections Funktion wird aufgerufen, eine ungeordnete und verschachtelte Liste von Abschnitten auszugeben.

 

So können die KB-Abschnitte durch Einbeziehung der Seitenleiste beliebig dargestellt werden.

 

Schritt 3 Anzeigen der Artikel

Fügen Sie folgendes in hinzu Functions.php von deinem Thema.

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

Hinweis: Diese Methode ist notwendig, da ein Artikel mit mehreren Abschnitten verknüpft werden kann.

Dadurch wird eine hierarchische Permalink-Struktur generiert.

Mögen: / knowledgebase / section-slug / sub-section-slug / ein anderer-sub-section-slug / article-slug

Erstellen Sie dann im Designordner diese Dateien: archive-knowledgebase.php, single-knowledgebase.php, content-knowledgebase.php, taxonomy-section.php.

Im archive-knowledgebase.php Fügen Sie Folgendes hinzu, um die Abschnitte und die letzten Artikel anzuzeigen.

 ID, 'Abschnitt'); $ term = $ terms [0]; echo kb_article_permalink ($ post-> ID, $ term-> term_id); endtime; get_footer (); ?>

Im single-knowledgebase.php Folgendes hinzufügen.

 

Im content-knowledgebase.php Folgendes hinzufügen.

 

Im taxonomy-section.php Fügen Sie Folgendes hinzu, um eine Liste der Artikel eines Abschnitts anzuzeigen.

 Abfrage, Array ('posts_per_page' => 100)); query_posts ($ args); $ term = get_term_by ('slug', get_query_var ('term'), 'section'); get_header (); get_sidebar ('abschnitte'); while (have_posts ()): the_post (); echo kb_article_permalink ($ post-> ID, $ term-> term_id); endtime; get_footer (); ?>

Dies kann wie gewünscht strukturiert und gestaltet werden.


Beispiel

Ein reales Beispiel, wie das funktioniert und wie es verwendet werden kann: syneto.net


Verweise

  • add_action
  • register_post_type
  • register_taxonomy
  • add_filter