Estoy construyendo un sistema de tipo LMS en WordPress, controlado por Custom Post types
.
El tipo de publicación se llama Lessons
(con un slug de courses
) y tiene una custom taxonomy
(categoría) llamada courses
.
La estructura de URL del dominio se muestra ahora como:
domain.com/courses/lesson-name
.
Quiero que se convierta en:
domain.com/courses/[course-name{category}]/lesson-name
o esencialmente:
/[cpt]/%category%/%postname%/
Aquí está el complemento que escribí que controla el CPTs
ahora.
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
fuente
fuente
post_type_link
filtro. más en: wordpress.stackexchange.com/a/167992/33667 )Respuestas:
Cambie su reescritura para agregar la consulta del curso var:
Luego filtre
post_type_link
para insertar el curso seleccionado en el enlace permanente:También hay complementos como enlaces permanentes de tipo de publicación personalizada que pueden hacer esto por usted.
fuente
¡Sí! Después de mucha investigación, obtuve el complemento ' Permalinks personalizados ' . Lo que cumple con mis requisitos se refiere - URL personalizada por ejemplo
Me gusta este tipo de mensaje personalizado - Mensaje :
fuente
¡Tengo la solución!
Para tener enlaces permanentes jerárquicos para el tipo de publicación personalizada, instale el complemento Enlace de tipo de publicación personalizada ( https://wordpress.org/plugins/custom-post-type-permalinks/ ).
Actualizar el tipo de publicación registrada. Tengo el nombre del tipo de publicación como centro de ayuda
Y aquí está la taxonomía registrada.
Esta línea hace que tu enlace permanente funcione
puedes quitar
%post_id%
y mantener/%help_centre_category%/%postname%/"
No olvides eliminar los enlaces permanentes del tablero de instrumentos.
fuente
La solución para mí tenía tres partes. En mi caso se llama el tipo de publicación
trainings
.'rewrite' => array('slug' => 'trainings/%cat%')
a laregister_post_type
función.Así que aquí está cómo cambiar el enlace permanente dinámicamente para un tipo de publicación dado. Añadir a
functions.php
:... y así es como cargar la plantilla adecuada en la nueva URL dinámica. Añadir a
functions.php
:¡Eso es! Recuerde actualizar los enlaces permanentes guardando los enlaces permanentes nuevamente en el back-end. O usa la
flush_rewrite_rules()
función.fuente
Debe actualizar la siguiente línea en la que ha registrado un tipo de publicación personalizado utilizando la función register_post_type.
'rewrite' => array ('slug' => 'cursos /% cat%')
Para cambiar el enlace permanente dinámicamente del tipo de publicación, debe agregar el código siguiente en el archivo functions.php:
Después de eso, debe volver a escribir los enlaces permanentes, vaya a wp-admin> Configuración> enlaces permanentes . simplemente actualice la configuración del enlace permanente con el botón "Guardar cambios".
devolverá URL como a continuación:
¡Gracias!
fuente
Esto me funcionó:
fuente
Para cualquiera que esté interesado en la solución, sin tener que jugar con el código PHP sin formato, recomiendo el complemento Permalink Manager Lite de Maciej Bis. Es un salvavidas.
Tiene un mecanismo visual para eliminar o agregar cualquier parte que desee en la URL del tipo de publicación personalizada basada en 'permastructs':
(Con todo el dolor involucrado en la estructuración de URL simple con tipos de publicación personalizados, estábamos a punto de renunciar a WP y pasar a otro CMS. Pero este complemento junto con ACF y CPTUI o Pods hace que Wordpress sea bastante profesional).
fuente