es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo añadir una URL personalizada a una estructura de enlaces permanentes de tipo de entrada personalizada existente?

Tengo un tipo de entrada personalizado llamado podcast y otro llamado episode que tiene una taxonomía llamada tag para agregar etiquetas.

La plantilla de podcast muestra la descripción del podcast con una lista de todos sus episodios. Utiliza una estructura de enlace permanente como mysite.com/podcast/mypodcast y una consulta personalizada para filtrar la lista de episodios mostrados como mysite.com/podcast/mypodcast?tag=2021.

Ahora quiero usar URLs limpias para filtrar los episodios y cambiar la URL a mysite.com/podcast/mypodcast/2021. Esta URL debe llamar a la misma plantilla de podcast (como lo hace la URL mysite.com/podcast/mypodcast), y el filtrado se realiza internamente mediante el archivo de plantilla.

Estoy familiarizado con addrewriteurl, pero no puedo encontrar la manera de definirlo para esta situación. Intenté agregar esto a functions.php, pero sin éxito:

function my_rewrite_rule() {
    add_rewrite_rule( '^podcast/([^/]*)/([^/]*)/?', 'index.php?p=$matches[1]&tag=$matches[2]','top' );
}
add_action('init', 'my_rewrite_rule', 10, 0);

¿O entendí todo mal y tengo que hacerlo con WP_Rewrite?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para lograr la estructura de URL deseada mysite.com/podcast/mypodcast/2021 mientras se llama a la misma plantilla podcast y se filtran los episodios internamente, debes utilizar la clase WP_Rewrite en WordPress.

    Puedes lograr esto agregando el siguiente código a tu archivo functions.php:

    function custom_rewrite_rule() {
        add_rewrite_rule('^podcast/([^/]*)/([0-9]{4})/?', 'index.php?post_type=podcast&name=$matches[1]&tag=$matches[2]', 'top');
    }
    add_action('init', 'custom_rewrite_rule', 10, 0);
    

    Este código agrega una nueva regla de reescritura a WordPress que coincide con la estructura de URL deseada. La primera parte de la regla coincide con el nombre de la publicación, que se captura en el primer conjunto de paréntesis. La segunda parte coincide con una etiqueta en formato de cuatro dígitos, que se captura en el segundo conjunto de paréntesis. La tag se utilizará para filtrar la lista de episodios.

    Luego, puedes modificar tu plantilla podcast para leer el parámetro tag de la URL y utilizarlo para filtrar la lista de episodios.

    Ten en cuenta que después de agregar la regla de reescritura, debes actualizar tus enlaces permanentes yendo a Configuración > Enlaces permanentes en el panel de control de WordPress y guardando la configuración nuevamente.

Comments are closed.