Sé que la gente ha preguntado esto antes y ha ido tan lejos como agregar el tipo de publicación personalizada y volver a escribir para el enlace permanente.
El problema es que tengo 340 categorías existentes que me gustaría seguir usando. Solía poder ver / category / subcategory / postname
Ahora tengo la babosa de customposttype / postname. La selección de la categoría ya no aparece en el enlace permanente ... No he cambiado la configuración del enlace permanente en admin a nada diferente.
¿Hay algo que me falta o necesito agregar a este código?
function jcj_club_post_types() {
register_post_type( 'jcj_club', array(
'labels' => array(
'name' => __( 'Jazz Clubs' ),
'singular_name' => __( 'Jazz Club' ),
'add_new' => __( 'Add New' ),
'add_new_item' => __( 'Add New Jazz Club' ),
'edit' => __( 'Edit' ),
'edit_item' => __( 'Edit Jazz Clubs' ),
'new_item' => __( 'New Jazz Club' ),
'view' => __( 'View Jazz Club' ),
'view_item' => __( 'View Jazz Club' ),
'search_items' => __( 'Search Jazz Clubs' ),
'not_found' => __( 'No jazz clubs found' ),
'not_found_in_trash' => __( 'No jazz clubs found in Trash' ),
'parent' => __( 'Parent Jazz Club' ),
),
'public' => true,
'show_ui' => true,
'publicly_queryable' => true,
'exclude_from_search' => false,
'menu_position' => 5,
'query_var' => true,
'supports' => array(
'title',
'editor',
'comments',
'revisions',
'trackbacks',
'author',
'excerpt',
'thumbnail',
'custom-fields',
),
'rewrite' => array( 'slug' => 'jazz-clubs-in', 'with_front' => true ),
'taxonomies' => array( 'category','post_tag'),
'can_export' => true,
)
);
custom-post-types
categories
permalinks
picadillo
fuente
fuente
Respuestas:
Hay 2 puntos de ataque que cubrir cuando agrega reglas de reescritura de tipo de publicación personalizada:
Reescribir reglas
Esto sucede cuando las reglas de reescritura se generan
wp-includes/rewrite.php
enWP_Rewrite::rewrite_rules()
. WordPress le permite filtrar las reglas de reescritura para elementos específicos como publicaciones, páginas y varios tipos de archivos. Donde veaposttype_rewrite_rules
laposttype
parte debe ser el nombre de su tipo de publicación personalizada. Alternativamente, puede usar elpost_rewrite_rules
filtro siempre que no elimine las reglas de publicación estándar también.A continuación, necesitamos la función para generar realmente las reglas de reescritura:
Lo principal a tener en cuenta aquí si decides jugar es el booleano 'Walk directorios'. Genera reglas de reescritura para cada segmento de un permastruct y puede causar desajustes de reglas de reescritura. Cuando se solicita una URL de WordPress, la matriz de reglas de reescritura se verifica de arriba a abajo. Tan pronto como se encuentre una coincidencia, cargará todo lo que haya encontrado, por ejemplo, si su permastruct tiene una coincidencia codiciosa, por ejemplo. para
/%category%/%postname%/
y los directorios walk están activados, generará reglas de reescritura tanto para/%category%/%postname%/
AND/%category%/
que coincidirán con cualquier cosa. Si eso sucede demasiado pronto, estás jodido.Enlaces permanentes
Esta es la función que analiza los enlaces permanentes de tipo de publicación y convierte una permastruct (por ejemplo, '/% year% /% monthnum% /% postname% /') en una URL real.
La siguiente parte es un ejemplo simple de lo que idealmente sería una versión de la
get_permalink()
función que se encuentra enwp-includes/link-template.php
. Los enlaces permanentes de publicaciones personalizadas se generan medianteget_post_permalink()
una versión muy diluida deget_permalink()
.get_post_permalink()
se filtra porpost_type_link
lo que estamos usando eso para hacer una permastructura personalizada.Como se mencionó, este es un caso muy simplificado para generar un conjunto de reglas de reescritura personalizado y enlaces permanentes, y no es particularmente flexible, pero debería ser suficiente para comenzar.
Engañando
Escribí un complemento que le permite definir permastructs para cualquier tipo de publicación personalizada, pero como puede usar
%category%
en la estructura de enlaces permanentes para publicaciones, mi complemento admite%custom_taxonomy_name%
para cualquier taxonomía personalizada que tenga también, dondecustom_taxonomy_name
está el nombre de su taxonomía, por ejemplo.%club%
.Funcionará como cabría esperar con taxonomías jerárquicas / no jerárquicas.
http://wordpress.org/extend/plugins/wp-permastructure/
fuente
$permalink = home_url(...
se anula$permalink = user_trailingslashit(...
y nunca se usa. ¿O me estoy perdiendo algo?$post_link
Ni siquiera está definido. ¿Se suponía que debía ser$permalink = user_trailingslashit( $permalink, 'single' );
?$permalink
no$post_link
. Saludos :)¡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 puedes mantener/%help_centre_category%/%postname%/"
No olvides eliminar los enlaces permanentes del tablero de instrumentos.
fuente
¡¡¡He encontrado una solución!!!
(Después de una investigación interminable ... puedo tener enlaces permanentes de TIPO POST PERSONALIZADO como:
example.com/category/sub_category/my-post-name
Aquí el código (en functions.php o plugin):
fuente
Tienes varios errores con tu código. Limpié tu código existente:
Reemplace su código con el código anterior y vea si funciona. Responda si tiene más preguntas y trataré de ayudarlo.
EDITAR:
Me di cuenta de que me quedé fuera
'has_archive' => true
.fuente