Reconocemos que las URL basadas en la taxonomía se ven mucho más hermosas sin el nombre real de la taxonomía ( /pizzas /pizzas versus /recipe_categorías /pizzas, suponiendo que tenga un tipo personalizado para recíprocas y una receta de taxonomía personalizada), no agregue nada a Value, haga que sus URL sean más largas y complejas y no les gusta Google (y ¿quiere que Google le guste, verdad?). Entonces, en este tutorial, le mostraré cómo deshacerse de ellos y hacer que su URL sea hermosa y legible. Casos de uso, por lo tanto, ¿cuál es el escenario en el que podría ser útil? En nuestro ejemplo, tenemos una página para desarrolladores que enumeran a todos nuestros desarrolladores junto con sus respectivas etiquetas que pueden usar para resaltar sus habilidades. Entonces quería (y me di cuenta) una estructura como esta:
/Desarrolladores – Lista pagada de nuestros desarrolladores
/Desarrolladores/JavaScript: lista tardía de nuestros desarrolladores especializados en JavaScript. Esta es una visión de taxonomía.
/Desarrolladores/Visualización Unique Tomaz-Zaman de un tipo de desarrollador personalizado.
¿Observe la semejanza entre los dos últimos elementos? Necesitamos decirle a WordPress que use a los desarrolladores como un trabajo tanto para nuestro puesto personalizado como para nuestra taxonomía personalizada. Después de buscar Google en Google, me sorprendió bastante que el webmaster no sepa que en realidad hay uno y, en su mayor parte, solo acepta lo que WordPress les ofrece.
Reparemos eso. Registre un tipo de trabajo personalizado y una taxonomía personalizada antes de que podamos jugar con la reescritura de nuestras URL de taxonomía, debemos configurar nuestras entidades (no dude en usar las existentes). Usaré el tipo de “desarrollador” personalizado, porque es un caso de uso real que tuvimos que implementar: function register_develooper_entits () {$ desarrollador_args = array (‘public’ => true, ‘etiqueta’ => desarrolladores ‘, ‘Rewrite’ => Array (‘Slug’ => ‘Developers’), ‘Taxonomies’ => Array (‘Developer_tag’)); register_post_type (‘desarrollador’, $ desarrollador_args); $ taxonomy_args = array (‘etiquetas’ => array (‘name’ => ‘desarrollador etiquetas’), ‘show_ui’ => true, ‘show_tagcloud’ => false, ‘rewrite => array (‘ slog ‘=> desarrolladores’ )); Register_taxonomy (‘desarrollador_tag’, array (‘desarrollador’), $ taxonomy_args); } add_action (‘init’, ‘registro_develooper_entits’); El código es bastante simple y hemos eliminado la mayoría de las partes innecesarias (a los efectos de este tutorial). Sin embargo, hay algunas cosas que debe ver: el orden que registramos CPT y taxonomía. Este último llega este último, de lo contrario no funcionará.
Ambos usan la misma babosa (desarrolladores)
CPT tiene taxonomías pobladas con nuestra taxonomía personalizada y viceversa, la taxonomía tiene el segundo parámetro de la función de registro.
Si intenta visitar cualquier URL en este momento, no puede acceder a uno u otro: recibirá un error 404 (la página no se ha encontrado), porque aún no hemos definido la URL personalizada. Esto sucede porque ha definido dos entidades separadas con la misma babosa y WordPress no sabe cómo hacer frente a ella, sobrescribiendo efectivamente. las reglas de reescritura y esto se hace (la explicación bajo el fragmento de código):
function generate_taxonomy_rewrite_rules ($ wp_rewrite) {$ rules = array (); $ post_types = get_post_types (array (‘name’ => ‘desarrollador’, ‘public’ => true, ‘_builtin’ => false), ‘objetos’); $ taxonomies = get_taxonomies (array (‘name’ => ‘desarrollo_tag’, ‘public’ => true, ‘_builtin’ => false), ‘objetos’); Foreach ($ post_types como $ post_type) {$ post_type_name = $ post_type-> name; // ‘desarrollador’ $ post_type_name = $ post_type-> name; // ‘desarrollador’ $ post_type_slug = $ post_type-> reescritos [‘Slug’]; // ‘Desarrolladores’ $ post_type_slug = $ post_type-> reescritos [‘Slug’]; // ‘desarrolladores’ foreach ($ taxonomies as $ taxonomy) {if ($ taxonomy-> object_type [0] == $ post_type_name) {$ términos = get_categories (‘type’ => $ post_type_name, ” taxonomy ‘=> $ taxonomía-> nombre, ‘hide_empty’ => 0)); Foreach ($ términos como $ término) {$ reglas [$ post_type_slg. ‘/’. $ Termin-> Slug. /? $ reglas [$ post_type_slg. ‘/’. $ Termin-> Slug. /?
Para investigar lo que está sucediendo aquí: primero creamos una matriz vacía que mantendrá nuestras reglas personalizadas y, una vez pobladas, anexamos a los implícitos al final de la función. También acepta la recuperación de cuántos pares desea, donde el bucle externo. Sin embargo, el bucle interno es el lugar donde ocurre la magia; Revisamos todas las taxonomías para encontrar una coincidencia entre ellas y el tipo de publicación apropiado. Una vez que lo hacemos, obtenemos todos los términos para esa taxonomía (en nuestro caso sería CSS, HTML, Formularios de gravedad, WooCommerce, etc.) y creamos una nueva regla de reescritura para cada término, por lo que, en nuestro caso, /desarrolladores, /desarrolladores /CSS se convierte en index.php
¿Pero los archivos de plantilla? Debido a que mostramos dos entidades diferentes bajo la misma estructura de URL, debemos asegurarnos de que WordPress las corrija correctamente; Ambos deben mostrar el mismo conjunto de información (la taxonomía es, en cierto sentido, un solo filtro), por lo que debe crear un nuevo archivo de plantilla, con nuestro ejemplo que sería Taxonomy-DeVelooper_tag.php y colocar el siguiente contenido en: <? Php // Encuentra y cargue la plantilla de archivo. localate_template ('Archive-DeVelooper.php', true); Encontrará solo la plantilla de archivo para los desarrolladores y la usará para mostrar todos los desarrolladores que corresponden a un determinado término.
! Para investigar lo que está sucediendo aquí: primero creamos una matriz vacía que mantendrá nuestras reglas personalizadas y que, una vez pobladas, anexamos a las predeterminadas al final de la función. Luego asumimos el tipo de trabajo personalizado y se ajustamos a la taxonomía, pero esta función también acepta la recuperación de cuántos pares desea, dónde el bucle externo. Sin embargo, el bucle interno es el lugar donde ocurre la magia; Revisamos todas las taxonomías para encontrar una coincidencia entre ellas y el tipo de publicación apropiado. Una vez que lo hacemos, obtenemos todos los términos para esa taxonomía (en nuestro caso sería CSS, HTML, Formularios de gravedad, WooCommerce, etc.) y creamos una nueva regla de reescritura para cada término, por lo que, en nuestro caso, /desarrolladores, /desarrolladores /CSS se convierte en index.php Debido a que mostramos dos entidades diferentes bajo la misma estructura de URL, debemos asegurarnos de que WordPress las corrija correctamente; Ambos deben mostrar el mismo conjunto de información (la taxonomía es, en cierto sentido, un solo filtro), por lo que debe crear un nuevo archivo de plantilla, con nuestro ejemplo que sería taxonomía-develooper_tag.php y poner el siguiente contenido en: VA Encuentre solo el archivo de plantilla de archivo para los desarrolladores y lo usará para mostrar todos los desarrolladores que corresponden a un determinado término.
¡Esto es ahora que debe tener una excelente personalización más fácil de usar!
homefinance blog