wordpress - texto - Estructura personalizada de enlace permanente:/% tipo de mensaje personalizado%/% taxonomía personalizada%/% nombre post%/
qué son los enlaces permanentes (2)
Mientras registras tu tipo de mensaje personalizado, usa slug como
$post_type_args = array(
''rewrite'' => array(
''slug'' => ''projects'',
''with_front'' => true
)
Puedes probar con Setting-> permalink
hacer padre de esa publicación también hacer su enlace
Estoy tratando de crear una estructura personalizada de enlace permanente que me permita lograr lo siguiente.
- Tengo un tipo de mensaje personalizado llamado "proyectos"
- Tengo una taxonomía personalizada llamada "categoría de proyecto" que se asigna a los "proyectos" de CPT
Quiero que mi estructura de enlace permanente se vea así:
proyectos / categoría / nombre del proyecto
o
/% tipo de mensaje personalizado% /% taxonomía personalizada% /% de nombre posterior% /
He podido usar /% category% / in permalinks para publicaciones WP normales, listas para usar, pero no para CPT.
¿Cómo afectaría la creación de una estructura de enlace permanente a las URL u otras páginas? ¿Es posible definir una estructura de enlace permanente personalizada y restringirla a un solo CPT?
Gracias
Por suerte para ti, solo tenía que hacer esto para un proyecto de cliente. Utilicé esta respuesta en el WordPress Stackexchange como una guía:
/**
* Tell WordPress how to interpret our project URL structure
*
* @param array $rules Existing rewrite rules
* @return array
*/
function so23698827_add_rewrite_rules( $rules ) {
$new = array();
$new[''projects/([^/]+)/(.+)/?$''] = ''index.php?cpt_project=$matches[2]'';
$new[''projects/(.+)/?$''] = ''index.php?cpt_project_category=$matches[1]'';
return array_merge( $new, $rules ); // Ensure our rules come first
}
add_filter( ''rewrite_rules_array'', ''so23698827_add_rewrite_rules'' );
/**
* Handle the ''%project_category%'' URL placeholder
*
* @param str $link The link to the post
* @param WP_Post object $post The post object
* @return str
*/
function so23698827_filter_post_type_link( $link, $post ) {
if ( $post->post_type == ''cpt_project'' ) {
if ( $cats = get_the_terms( $post->ID, ''cpt_project_category'' ) ) {
$link = str_replace( ''%project_category%'', current( $cats )->slug, $link );
}
}
return $link;
}
add_filter( ''post_type_link'', ''so23698827_filter_post_type_link'', 10, 2 );
Al registrar el tipo de publicación personalizada y la taxonomía, asegúrese de utilizar la siguiente configuración:
// Used for registering cpt_project custom post type
$post_type_args = array(
''rewrite'' => array(
''slug'' => ''projects/%project_category%'',
''with_front'' => true
)
);
// Some of the args being passed to register_taxonomy() for ''cpt_project_category''
$taxonomy_args = array(
''rewrite'' => array(
''slug'' => ''projects'',
''with_front'' => true
)
);
Por supuesto, asegúrese de vaciar las reglas de reescritura cuando haya terminado. ¡Buena suerte!