Ich baue ein LMS-System in WordPress, gesteuert von Custom Post types
.
Der Post-Typ heißt Lessons
(mit einer Prise courses
) und einer custom taxonomy
(Kategorie) heißt courses
.
Die Domain-URL-Struktur sieht im Moment so aus:
domain.com/courses/lesson-name
.
Ich möchte, dass es wird:
domain.com/courses/[course-name{category}]/lesson-name
oder im Wesentlichen:
/[cpt]/%category%/%postname%/
Hier ist das Plugin, das ich geschrieben habe und das das CPTs
Jetzt steuert .
function rflms_post_type() {
$labels = array(
'name' => _x( 'Lessons', 'Post Type General Name', 'text_domain' ),
'singular_name' => _x( 'Lesson', 'Post Type Singular Name', 'text_domain' ),
'menu_name' => __( 'Lessons', 'text_domain' ),
'parent_item_colon' => __( 'Parent Product:', 'text_domain' ),
'all_items' => __( 'All Lessons', 'text_domain' ),
'view_item' => __( 'View Lesson', 'text_domain' ),
'add_new_item' => __( 'Add New Lesson', 'text_domain' ),
'add_new' => __( 'New Lesson', 'text_domain' ),
'edit_item' => __( 'Edit Lesson', 'text_domain' ),
'update_item' => __( 'Update Lesson', 'text_domain' ),
'search_items' => __( 'Search Lessions', 'text_domain' ),
'not_found' => __( 'No Lessons Found', 'text_domain' ),
'not_found_in_trash' => __( 'No Lessons Found in Trash', 'text_domain' ),
);
$args = array(
'label' => __( 'Lessons', 'text_domain' ),
'description' => __( 'Referable Lessons', 'text_domain' ),
'labels' => $labels,
'hierarchical' => false,
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'show_in_nav_menus' => true,
'show_in_admin_bar' => true,
'supports' => array('premise-member-access', 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments'),
'menu_position' => 5,
'menu_icon' => null,
'can_export' => true,
'has_archive' => true,
'exclude_from_search' => false,
'publicly_queryable' => true,
'capability_type' => 'post',
'rewrite' => array('slug' => 'courses'),
);
register_post_type( 'lessons', $args );
// Hook into the 'init' action
}
add_action( 'init', 'rflms_post_type', 0 );
// Register Custom Taxonomy
function custom_taxonomy() {
$labels = array(
'name' => _x( 'Courses', 'Taxonomy General Name', 'text_domain' ),
'singular_name' => _x( 'Course', 'Taxonomy Singular Name', 'text_domain' ),
'menu_name' => __( 'Courses', 'text_domain' ),
'all_items' => __( 'All Courses', 'text_domain' ),
'parent_item' => __( 'Parent Course', 'text_domain' ),
'parent_item_colon' => __( 'Parent Course:', 'text_domain' ),
'new_item_name' => __( 'New Course Name', 'text_domain' ),
'add_new_item' => __( 'Add New Course', 'text_domain' ),
'edit_item' => __( 'Edit Course', 'text_domain' ),
'update_item' => __( 'Update Course', 'text_domain' ),
'separate_items_with_commas' => __( 'Separate Courses with commas', 'text_domain' ),
'search_items' => __( 'Search Courses', 'text_domain' ),
'add_or_remove_items' => __( 'Add or Remove Courses', 'text_domain' ),
'choose_from_most_used' => __( 'Choose from Most Used courses', 'text_domain' ),
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
'public' => true,
'show_ui' => true,
'show_admin_column' => true,
'show_in_nav_menus' => true,
'show_tagcloud' => false,
'rewrite' => array('slug' => 'courses'),
);
register_taxonomy( 'course', 'lessons', $args );
}
// Hook into the 'init' action
add_action( 'init', 'custom_taxonomy', 0 );
custom-post-types
custom-taxonomy
Zach Russell
quelle
quelle
post_type_link
Filter modifizieren . WeitereAntworten:
Ändern Sie Ihre Umschreibung, um die Kursabfrage var hinzuzufügen:
Filtern Sie dann
post_type_link
, um den ausgewählten Kurs in den Permalink einzufügen:Es gibt auch Plugins wie Custom Post Type Permalinks , die dies für Sie tun können.
quelle
Ja! Nach vielen Recherchen habe ich das Plugin ' Custom Permalinks ' bekommen . Was meine Anforderungen erfüllt, betrifft - benutzerdefinierte URL, z
Wie dieser benutzerdefinierte Beitragstyp - Beitrag :
quelle
Habe die Lösung!
Um hierarchische Permalinks für benutzerdefinierten Post-Typ zu erhalten, installieren Sie das Plugin für benutzerdefinierte Post-Typ-Permalinks ( https://wordpress.org/plugins/custom-post-type-permalinks/ ).
Aktualisieren Sie den Typ des registrierten Beitrags. Ich habe den Namen des Beitragstyps als Hilfezentrale
Und hier ist Taxonomie registriert
Diese Zeile bewirkt, dass Ihr Permalink funktioniert
Sie können entfernen
%post_id%
und behalten/%help_centre_category%/%postname%/"
Vergessen Sie nicht, die Permalinks aus dem Dashboard zu entfernen.
quelle
Die Lösung für mich hatte drei Teile. In meinem Fall heißt der Beitragstyp
trainings
.'rewrite' => array('slug' => 'trainings/%cat%')
Zurregister_post_type
Funktion hinzufügen .Hier erfahren Sie, wie Sie den Permalink für einen bestimmten Beitragstyp dynamisch ändern. Hinzufügen zu
functions.php
:... und so laden Sie die entsprechende Vorlage auf die neue dynamische URL. Hinzufügen zu
functions.php
:Das ist es! Denken Sie daran, die Permalinks zu aktualisieren, indem Sie sie im Backend erneut speichern. Oder nutzen Sie die
flush_rewrite_rules()
Funktion.quelle
Sie müssen die folgende Zeile aktualisieren, in der Sie einen benutzerdefinierten Beitragstyp mithilfe der Funktion register_post_type registriert haben.
'rewrite' => array ('slug' => 'courses /% cat%')
Um den Permalink des Post-Typs dynamisch zu ändern, müssen Sie den folgenden Code in die Datei functions.php einfügen:
Danach müssen Sie die Permalinks für das Neuschreiben leeren. Gehen Sie zu wp-admin> Einstellungen> Permalinks . Aktualisieren Sie einfach die Permalink-Einstellungen mit der Schaltfläche "Änderungen speichern".
Es werden URLs wie folgt zurückgegeben:
Vielen Dank!
quelle
Das hat bei mir geklappt:
quelle
Jedem, der an der Lösung interessiert ist, ohne an rohem PHP-Code herumzubasteln, kann ich das Plugin Permalink Manager Lite von Maciej Bis nur empfehlen . Es ist ein Lebensretter.
Es verfügt über einen visuellen Mechanismus zum Entfernen oder Hinzufügen eines beliebigen Teils in der URL des benutzerdefinierten Beitragstyps basierend auf "Permastrukturen":
(Mit all dem Aufwand, der mit der einfachen URL-Strukturierung mit benutzerdefinierten Beitragstypen verbunden ist, wollten wir auf WP verzichten und zu einem anderen CMS wechseln. Dieses Plugin in Verbindung mit ACF und CPTUI oder Pods macht Wordpress jedoch ziemlich professionell.)
quelle