¿Cómo prevenir las babosas duplicadas para wp_insert_post?

3

Tengo una función que crea una página cuando creo una publicación (para construir árboles de relación padre-hijo).

Estoy usando el título $ de la publicación para crear la página y esto también crea una bala duplicada. ¿Hay alguna forma de alterar ligeramente la bala para que sea única? ¿Cómo puedo asegurarme de que la nueva bala no interferirá con la publicación original?

    
pregunta AlxVallejo 11.04.2012 - 16:17

3 respuestas

1

Si usa wp_insert_post , debería calcular una posposición única para usted. Si no usa wp_insert_post , intente usar wp_unique_post_slug . Si ninguno de los dos está funcionando para usted, simplemente intente agregar -page o al post_name (slug) de la nueva página antes de insertarlo.

WordPress realiza su comprobación de unicidad en las post slugs a nivel de aplicación; no parece que haya un índice único en wp_posts.post_name . Entonces, por ejemplo, si está dentro de una transacción en la que está creando dos publicaciones simultáneamente, las comprobaciones de exclusividad fallarían. También es posible que puedas crear algún tipo de condición de carrera en la que las dos publicaciones se inserten al mismo tiempo y que la verificación de la singularidad de ambas babosas falle.

    
respondido por el chrisguitarguy 22.06.2013 - 21:55
0

Supongo que WP agrega automáticamente un número al final si la bala se repite.

    
respondido por el Rutwick Gangurde 11.04.2012 - 16:38
0

Según mi experiencia, el requisito suele ser opuesto: lograr las mismas babosas cuando WP se niega a generarlas. :)

En muy pocas palabras, slug puede superponerse entre tipos de publicaciones jerárquicas y no jerárquicas, pero no dentro de ellas por separado. Ya que en su caso están involucradas la publicación (no jerárquica) y la página (jerárquica), WP felizmente permite la reutilización de slug.

Si desea forzar manualmente a WP para eliminar la duplicación de la barra de la página, su mejor opción es probablemente forzar la verificación de la duplicación para que falle y desencadenar la lógica del sufijo numérico. Desde la fuente wp_unique_post_slug() que se puede realizar a través del siguiente filtro:

apply_filters( 'wp_unique_post_slug_is_bad_hierarchical_slug', false, $slug, $post_type, $post_parent )
    
respondido por el Rarst 22.06.2013 - 23:41

Lea otras preguntas en las etiquetas