taxonomía dinámica en permalink hecho todas las otras publicaciones ¿NO ENCONTRADO?

4

Agregué mis taxonomías en el enlace permanente en lugar de la babosa del tipo de publicación personalizada, y funciona bien. Incluso diría que todo funcionó bien, pero cambiar la instalación de WP a Multisite rompió todas las demás publicaciones y páginas (no los CPT).

Los enlaces permanentes se generan correctamente cada vez que? p = 123 u otras URL adivinadas, por lo que se encuentra la información de la publicación, pero no se encuentra para el bucle.

Así es como obtuve la taxonomía en lugar de la babosa del CPT:

1) La reescritura post_type se define como% listing_type% y funciona bien, de la siguiente manera:

'rewrite' => array( 
            'slug' => '/%listing_type%', 
            'with_front' => false,

2) Y las siguientes funciones reemplazan las cadenas% listing_type% y "listing_type" de las URL y los enlaces de término, generados por ejemplo. wp_list_categories (), respectivamente (eliminando el nombre del CPT de la URL)

  function listing_type_link_filter_function( $post_link, $id = 0, $leavename = FALSE ) {
    if ( strpos('%listing_type%', $post_link) === 'FALSE' ) {
      return $post_link;
    }
    $post = get_post($id);
    if ( !is_object($post) || $post->post_type != 'listing' ) {
      return $post_link;
    }
    $terms = wp_get_object_terms($post->ID, 'listing_type');
    if ( !$terms ) {
      return str_replace('/listing_type', '/', $post_link);
    }
    return str_replace('%listing_type%', $terms[0]->slug, $post_link);
  }

add_filter('post_type_link', 'listing_type_link_filter_function', 1, 3);


  function term_link_filter_function( $termlink, $term, $taxonomy ) {
    if ( strpos('listing_type', $termlink) === 'FALSE' ) {
      return $termlink;
    } else  return str_replace('/listing_type', '', $termlink);
  }

add_filter('term_link', 'term_link_filter_function', 1, 3);

Ahora, estoy casi seguro de que todo funcionaba bien antes de convertirlo en un Multisite. Investigaré cómo deshacerlo de manera segura (lo de varios sitios) y publicaré la actualización más adelante.

¿Alguna idea de lo que podría estar rompiendo las publicaciones y las páginas NO en los CPT anteriores? Si elimino el% s de la babosa post_type, todo funciona bien.

UPDATAE

Noté que otros ejemplos de trabajo tenían una regla de reescritura para cada enlace permanente personalizado, así que lo agregué, y VOILA, las publicaciones están arregladas ahora, pero las páginas aún están rotas

ESTO TRABAJA PARCIALMENTE (solo publicaciones)

global $wp_rewrite;
$wp_rewrite->extra_permastructs['listing'][0] = "%listing_type%/%postname%";
    add_rewrite_rule("([^/]+)/([^/]+)/?$", 'index.php?post_type=listing&listing_type=$matches[1]&name=$matches[2]', 'bottom');
    add_rewrite_rule("([^/]+)/([^/]+)/?$", 'index.php?post_type=listing&listing_type=$matches[1]&page=$matches[2]', 'bottom');

El código anterior (dentro de la función de definición de CPT) solo corrigió las publicaciones , pero las páginas (para lo que se hizo la segunda línea de la regla add_rewrite) todavía están rotas.

    
pregunta sergio 23.07.2012 - 18:27

1 respuesta

1

Agregue sus reglas de reescritura a top , no a bottom . Cada regla que coincida abortará el proceso. Por lo tanto, si solo hay una coincidencia de soltero antes, se omitirán las reglas.

    
respondido por el kaiser 09.10.2012 - 16:54

Lea otras preguntas en las etiquetas