Automattic / Automattic/php-toolkit
bug: PushMD - path conflict on duplicate slug for posts in draft
- Lenguaje dominante
- PHP
- Estrellas
- 22
- Forks
- 5
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
WordPress allows multiple non-published posts (e.g. draft, pending) to share the exact same post_name slug (e.g., my-draft-post). When exporting via Git (git clone / git fetch), PushMD attempts to write both posts to post/my-draft-post.md, causing a file path collision exception: Git export rejected because multiple WordPress entities map to the same PushMD path.
We can disambiguate duplicate slug collisions during export by falling back to ID-based paths (e.g., post/post-202.md) for colliding entries (giving published posts priority).
**Proposed Changes**
Push MD Plugin
[MODIFY] class-push-md-plugin.php
Update export_wordpress_content() to handle slug collisions gracefully.
Sort posts during export prioritize published posts before draft/pending/private posts.
When two or more posts resolve to the exact same repository markdown path, assign the human-readable slug path to the primary post and fallback to build_id_fallback_markdown_path($post) (post/post-.md or page/page-.md) for duplicate entries.
[MODIFY] ExportPathTest.php
Add unit tests verifying that multiple draft posts with identical slugs export cleanly without throwing exceptions, using ID fallback paths for duplicates.
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Línea de trabajo
Comienza en class-push-md-plugin.php, en export_wordpress_content(), y revisa cómo los posts se convierten en rutas Markdown del repositorio. Después inspecciona ExportPathTest.php y añade cobertura para varios posts en borrador o pendientes que compartan un slug, incluida la prioridad de los posts publicados. La tarea estará terminada cuando la exportación se complete sin una colisión de rutas y las entradas duplicadas utilicen rutas de fallback basadas en el ID.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- php
- Área
- backend
- Tipo de issue
- Error
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Tranquilo
- Claridad
- Bien especificado
- Aptitud para principiantes
- 76/100