¿Cómo cambiar la estructura de enlaces permanentes para el tipo de publicación personalizada y sus taxonomías?

10

Este es un reenvío de una pregunta anterior que tuve, pero ahora me gustaría entrar en más detalles para poder resolver esto por completo.

De nuevo, con las publicaciones (normales), cambiar el enlace permanente es tan fácil como ir a Configuración> Enlace permanente y cambiarlo a cualquier cosa que desee, como la que se usa ampliamente %category%/%postname%.html. Todo esto funciona. Si solo esto fuera tan fácil para el tipo de publicación personalizada y también para las taxonomías.

Entonces esto es lo que me gusta lograr.

  1. http://mywordpress.com/portfolio.html : muestra todas las publicaciones en todas las categorías.
  2. http://mywordpress.com/portfolio/music/ - Muestra todas las publicaciones en esta categoría.
  3. http://mywordpress.com/portfolio/music/trance/ - Muestra todas las publicaciones en esta categoría (secundaria).
  4. http://mywordpress.com/portfolio/music/trance/Tiesto.html - Muestra la publicación.

Lo que llegué hasta ahora es lo siguiente:

  1. Primero creé un proyecto concustom_post_type nombre y una categoría_proyecto .taxonomy
  2. Creé un Portafolio de páginas y le di una Plantilla de página que enumerará todas las post_type = projectpublicaciones. ¿Cómo puedo agregar .html al enlace permanente de páginas? Ahora se vincula a http://mywordpress.com/portfolio mientras quiero http://mywordpress.com/portfolio.html . Esto debería resolver el primer problema.
  3. Entonces las cosas se pondrán difíciles, porque no sabemos de antemano cuántas subcategorías hay, tal vez incluso no haya ninguna. Entonces la estructura que buscamos es portfolio/(CATEGORY PATH FROM TOP TO CHILD)/post.html. Todavía estoy atrapado en este punto. Creo que de alguna manera debería agregar la última categoría a la ruta y pasarla a lo largo de project_category , lo que debería conducir a un archivo taxonomy.php donde pueda procesarlo correctamente.
  4. Tampoco he abordado esto, pero debería tener algo que ver %postname%.htmlal final de algo.

¡Espero que mi problema sea claro y que haya valientes desarrolladores que me ayuden a abordar este problema que ya me ha mantenido ocupado durante cuatro días COMPLETOS!

marca
fuente
1
La solución que di en la última pregunta debería haber funcionado de esa manera, si la implementaste correctamente. Lo único es que no puedes obtener la parte html
Manny Fleurmond
Sí, pero estaba bloqueado en una ruta específica, por lo que solo la categoría / subcategoría / página puede que no haya subcategorías o incluso más. Esto es más dinámico.
Mark
O no lo implementé correctamente;)
Mark

Respuestas:

4

Ok, creo que podría tener una solución. No tengo idea si esta es la forma correcta de lograr esto, pero por ahora es lo único que parece funcionar.

add_filter('rewrite_rules_array', 'mmp_rewrite_rules');

function mmp_rewrite_rules($rules) {
    $newRules                               = array();
    $newRules['portfolio/(.+)/(.+?).html$'] = 'index.php?project=$matches[2]';
    $newRules['portfolio/(.+)/?$']          = 'index.php?project_category=$matches[1]'; 

    return array_merge($newRules, $rules);
}


add_filter('request', 'mmp_rewrite_request');

function mmp_rewrite_request($vars) {
    if (isset($vars['project_category'])) {
        if (strpos($vars['project_category'], '/') !== false) {
            $categories = explode('/', $vars['project_category']);
            $vars['project_category'] = $categories[count($categories) - 1];
        }
    }

    return $vars;
}
marca
fuente
El filtro de solicitud es una buena forma de filtrar si estamos pidiendo una categoría (término de hecho) y una publicación. Permite agregar solo una regla de reescritura y obtener una página de publicación, ya sea que la publicación esté en una categoría, una subcategoría o no.
ZalemCitizen
1

2 métodos diferentes:

* Ver notas al final de esta publicación.


por ejemplo, desea tener dicha estructura de enlace permanente:
/ MAIN_CATEGORY / SUB_CAT_2 / Another_SUBCAT / my-post

Al principio , es posible que deba establecer enlaces permanentes en /% category% /% postname% . Entonces...




MÉTODO 1:

crear categorías estándar ( MAIN_CATEGORY, SUB_CAT_1, and etc..), y registrar el envío personalizado, incluyendo este parámetro:

'taxonomies'    => array('category'..)

y use estos códigos para cambiar enlaces permanentes: https://wordpress.stackexchange.com/a/195643/33667
Luego, después de publicar una PUBLICACIÓN PERSONALIZADA (si se adjunta en una categoría), la URL será:
example.com/MAIN_CATEGORY/SUB_CAT_1/my-post



MÉTODO 2:

(PD: este método no se recomienda si planea publicar cientos o miles de publicaciones)

registre la PUBLICACIÓN PERSONALIZADA (nombrada MAIN_CATEGORY), incluidos estos parámetros:

    "supports"      => array('page-attributes'......
    "hierarchical"  => true,

A continuación, publique mensajes personalizados como este: (es decir, reproducimos algunos personalizados mensajes , llamada Después de entonces, cuando se publica otro post, pero elija. como padre.
SUB_CAT_2, SUB_CAT_1..SUB_CAT_2





ps
1) Si es un novato, revise: Registre CUSTOM POST y Registre CUSTOM POST con TAXONOMY
2) si necesitará la funcionalidad de búsqueda para subniveles, luego use una consulta de búsqueda personalizada

T.Todua
fuente