Eliminar slug en URL de taxonomía

13 feb 2012, 07:06:50
Vistas: 28.7K
Votos: 8

Me pregunto cómo puedo eliminar los slugs de algunas URLs. Estoy usando un tipo de entrada personalizada llamada exhibitors y algunas taxonomías para definir esos expositores (por ejemplo: featured-guests, publishers, etc.):

Actualmente tengo esto: http://thisurl.com/exhibitor_filters/featured-guests/

Me gustaría tener esto: http://thisurl.com/featured-guests/

He estado jugando con la reescritura / slug en WordPress, pero hasta ahora sin éxito.

¿Sugerencias?

¡Gracias!

-Edición-

Momentos divertidos, ahora estoy obteniendo errores 404 para todo lo que involucra tipos de entrada personalizados y términos de taxonomía. Voy a ver si al menos puedo hacer que esto deje de dar tantos errores primero... gracias por sus sugerencias generales, chicos.

0
Todas las respuestas a la pregunta 5
2

Por defecto esto no es posible, y utilizando las APIs de registro de CPT y Taxonomías Personalizadas, no se puede hacer.

Y por una buena razón.

Todo tiene que ver con colisiones de permalinks y slugs, y para evitar ambigüedades. Ciertamente hay casos donde URLs únicas que nunca se solapan no son permitidas por el sistema por esta razón (falsos negativos).

Por lo tanto, recomiendo que decidas un reemplazo para 'exhibitor_filters' como 'exhibitors', o 'filters' y uses eso como tu slug en la opción rewrite al registrarlo.

Si realmente deseas hacerlo de la manera que propones, necesitarás añadir reglas de rewrite. Esto puede ser problemático, ya que corres el riesgo real de colisiones (¿cargamos la página 'about' o el término exhibitor_filter 'about'?), y el orden y prioridad de tus hooks jugarán un papel importante.

Por ejemplo:

function ex_rewrite( $wp_rewrite ) {

    $feed_rules = array(
        '(.+)'    =>  'index.php?exhibitor_filter='. $wp_rewrite->preg_index(1)
    );

    $wp_rewrite->rules = $wp_rewrite->rules + $feed_rules;
}
// refresca/flushea los permalinks en el panel de control si esto cambia de alguna manera
add_filter( 'generate_rewrite_rules', 'ex_rewrite' );

El código anterior funcionará para términos individuales, aunque necesitará modificaciones para URLs jerárquicas y taxonomías.

Coloca el código en el functions.php de tu tema, o en el plugin asociado a tu tema.

Advertencia: Deberás tener cuidado de no tener permalinks que colisionen, y necesitarás estar atento al orden en que se aplican las reglas. Usa el plugin monkeyman rewrite analyser para probar esto. Has sido advertido.

2 jul 2012 16:07:59
Comentarios

¿Esto aún funciona? ¿Necesita algún tipo de return? No parece estar haciendo nada en mi caso.

Garconis Garconis
12 may 2021 20:25:45

sí, pero necesitas modificarlo para tu caso de uso específico, esta respuesta fue escrita para el OP (publicador original), por lo que un simple copiar y pegar no funcionará para ti a menos que tu tipo de publicación personalizada y taxonomías tengan nombres idénticos al del publicador original. Esta respuesta no es un copia-pega. También ten en cuenta las advertencias en la respuesta

Tom J Nowell Tom J Nowell
13 may 2021 13:50:55
0

Existe un complemento que te permitirá eliminar fácilmente el slug de la taxonomía con unos pocos clics. De todos modos, como dijo Tom, ten cuidado, por ejemplo, de no nombrar dos términos de taxonomías diferentes con el mismo nombre o todo se romperá.

La URL del complemento es http://wordpress.org/extend/plugins/wp-htaccess-control/

31 jul 2012 04:34:14
1

Deberías poder especificar esto desde la sección de enlaces permanentes. Puedes configurarlo mediante un enlace permanente personalizado, pero parece que una de las opciones predeterminadas "nombre de la entrada" debería funcionar para ti. Esto se puede encontrar en ajustes, enlaces permanentes en el backend de WordPress.

13 feb 2012 21:06:48
Comentarios

Esto no es un nombre de publicación, featured-guests es un término de taxonomía. El problema que estoy teniendo son errores 404 con tipos de entradas personalizadas y términos de taxonomía.

Nadine Nadine
14 feb 2012 00:57:39
0

Encontré esa respuesta aquí y usé el código en los comentarios de Jonathan Brinley. Primero debes declarar tu taxonomía "exhibitor_filters", y luego tu CPT, estableciendo su slug como %exhibitor_filters%.

Entonces todos tus CPTs y términos funcionarán correctamente, incluyendo los enlaces de los archivos de términos. En mi caso eliminé el slug del CPT de los permalinks usando %taxo% en el slug del CPT, y también funcionó excepto en el archivo de términos, que aún muestra el slug del CPT, pero en tu caso parece que es lo que deseas.

Pareces querer páginas de archivo, mostrando todas las publicaciones personalizadas en el filtro de expositores "featured-guests".

Buena suerte.

2 jul 2012 15:14:17
7
-1

¿Has hecho:

'rewrite' => array(
    'slug' => 'invitados-destacados',
    'with_front' => false )

y solo agrega eso a tu register_taxonomy.

13 feb 2012 07:22:35
Comentarios

Eso me da un error interno del servidor.

Nadine Nadine
13 feb 2012 08:15:07

¿Hay alguna manera de pasar algo como un slug en blanco? Si lo dejo vacío, también obtengo errores del servidor.

Nadine Nadine
13 feb 2012 08:22:02

¿Puedo ver el código completo, solo para asegurarme de que está implementado correctamente? Por lo que sé, si la función falla no debería generar un error 500.

Evan Yeung Evan Yeung
13 feb 2012 20:37:49

register_taxonomy('exhibitor_filters','exhibitors', array( 'hierarchical' => true, 'label' => 'Tipo de Expositor', 'query_var' => true, 'rewrite' = > array( 'slug' => 'featured-guests', 'with_front' => false )

)

);

No creo que esto sea correcto. featured-guests es un término asociado con exhibitor_filters. Solo quiero que no muestre la parte de exhibitor_filters en un enlace. Tal vez eso no sea posible. Probablemente solo crearé una página de manera improvisada o algo así.

Nadine Nadine
14 feb 2012 01:02:04

Noto que estás obteniendo errores 404 con tu estructura de enlaces permanentes ahora. ¿Has limpiado tu estructura de reescritura? http://wpengineer.com/2044/custom-post-type-and-permalink/

Evan Yeung Evan Yeung
14 feb 2012 01:08:11

Sí. Nada aún. Eliminé mi base de datos y comencé desde cero. Resultado: 2 tipos de publicación se niegan a usar sus archivos y otros 2 siguen dando 404.

Nadine Nadine
14 feb 2012 06:07:22

with_front no está destinado para esto, es para algo completamente diferente

Tom J Nowell Tom J Nowell
2 jul 2012 15:53:23
Mostrar los 2 comentarios restantes