Conflicto Slug / Slug Page Type / Post personalizado - ¿Impedir el uso de slug reservado en la página?

12

Tengo un tipo de cartera de publicación personalizada (slug portfolio) en mi tema y todo funciona bien, excepto una cosa. Cuando la gente crea una página con un slug de cartera, por ejemplo: example.com/portfolio, el tema cree que quiero usar la página de archivo de tipo de publicación personalizada, no mi página creada en el editor.

¿Puedo de alguna manera "reservar" el portafolio de slug cuando las páginas se guardan para estar seguros de que nunca se usan, tal vez cambiar su nombre a página de portafolio?

Mi proyecto utiliza los métodos descritos en este tutorial, aquí está el conflicto al que me refiero:

  

"Más allá de tener que parchear el código, hay otra captura aquí en ese   no puedes llamar a tu barra de página lo mismo que tu tipo de publicación personalizada   babosa. Piense en su tipo de mensaje personalizado como una palabra clave reservada;   sin embargo, puede hacer que el título de su página tenga el mismo nombre que su   tipo de entrada personalizada babosa siempre y cuando tu barra de página sea algo   diferente. "-    enlace

Gracias por cualquier consejo!

    
pregunta hhins 19.10.2011 - 16:50

3 respuestas

13

Los siguientes 2 filtros le permiten conectarse cuando WordPress verifica la babosa y se encuentran en la función wp_unique_post_slug () en el archivo wp-includes / post.php.

Hay 2 filtros, uno para publicaciones jerárquicas y otro para publicaciones no jerárquicas. El filtro jerárquico proporciona la ID para la publicación principal, por lo que si $ post_parent es 0, sabes que esta es una publicación "básica".

Los filtros también pasan el $ post_type si quisieras agregar tipos de publicación específicos a tu lógica.

Al devolver "verdadero", le estás diciendo a WordPress que esta bala es mala, por lo que WordPress agrega un sufijo, como si fuera a intentarnos un nombre / bala de publicación que ya se tomó.

add_filter( 'wp_unique_post_slug_is_bad_hierarchical_slug', 'portfolio_is_bad_hierarchical_slug', 10, 4 );
function portfolio_is_bad_hierarchical_slug( $is_bad_hierarchical_slug, $slug, $post_type, $post_parent ) {
    if ( !$post_parent && $slug == 'portfolio' )
        return true;
    return $is_bad_hierarchical_slug;
}

add_filter( 'wp_unique_post_slug_is_bad_flat_slug', 'portfolio_is_bad_flat_slug', 10, 3 );
function portfolio_is_bad_flat_slug( $is_bad_flat_slug, $slug, $post_type ) {
    if ( $slug == 'portfolio' )
        return true;
    return $is_bad_flat_slug;
}
    
respondido por el Rachel Carden 10.03.2012 - 22:49
1

Crea una página con un slug de 'cartera' y hazla 'Privada'. Se ocultará al público cuando se reserve el slug para otro uso.

    
respondido por el Max Yudin 08.03.2012 - 12:26
1

Encontré exactamente este problema al investigar un problema de paginación. Tenemos una página de inicio de Noticias (slug "noticias") y la paginación estaba fallando ... los intentos de acceder a / noticias / página / 2 / siempre dieron como resultado '404 - No encontrado'.

El problema resultó ser que a nuestro tipo de Noticias personalizadas también se le había dado la babosa "noticias". Al cambiar este último (por ejemplo, a "news_archive"), el problema se solucionó. Esto dejó sin cambiar las referencias originales de las noticias. El cambio de la barra de noticias de la página de inicio también funcionó, pero todas las URL incorporarán la barra modificada.

    
respondido por el Ross 16.08.2013 - 01:26

Lea otras preguntas en las etiquetas