WP Manifestindependent plugin directory
manifest / admin / ao-duplicate-post

Duplicate Post. Admin & CLI

Wordpress duplicate post, with multidate modal

★ 0stars

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/yondemon/ao-duplicate-post/archive/refs/heads/main.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

Plugin de WordPress para duplicar posts y Custom Post Types con múltiples fechas desde:

  • Interfaz de administración (lista y pantalla de edición).
  • Línea de comandos (WP‑CLI).
  • API REST.

Diseñado específicamente para flujos tipo eventos recurrentes, donde quieres clonar un contenido base cambiando solo la fecha (o varias fechas a la vez).


Características

  • Enlace “Duplicar en:
    • Lista de posts/CPT compatibles.
    • Pantalla de edición (Clásico y Gutenberg, en el submit box).
  • Modal en admin con:
    • Textarea para introducir una fecha por línea.
    • Soporte de fechas relativas (+7, +14, etc.).
  • Duplicado de:
    • Contenido, título y estado.
    • Metadatos (postmeta).
    • Taxonomías y términos.
  • API interna reutilizable desde:
    • WP‑CLI: comando personalizado.
    • REST API: endpoint para integraciones externas.

Instalación

  1. Copia la carpeta del plugin en:

    wp-content/plugins/ao-duplicate-post/
  2. Estructura:

    ao-duplicate-post/
    ├── ao-duplicate-post.php               # Plugin principal
    ├── src/
    │   ├── ao-duplicate-post.class.php     # Core + hooks admin
    │   ├── ao-duplicate-post-wpcli-handler.php # Handler WP-CLI
    │   └── ao-duplicate-post-rest-handler.php  # Handler REST
    ├── style.css                           # Estilos del modal
    ├── script.js                           # Lógica JS del modal
    └── templates/
        └── modal.php                       # HTML del modal
  3. Activa el plugin desde Plugins > Plugins instalados en el admin de WordPress.


Uso en el panel de administración

Enlace “Duplicar multifecha”

En los tipos de contenido soportados:

  • Ve a Entradas > Todas las entradas o al listado de tu CPT.
  • En cada fila verás el enlace “Duplicar multifecha” en las acciones de fila.
  • También verás un botón “Duplicar multifecha” en la caja de publicar/actualizar de la pantalla de edición (Clásico y Gutenberg).

Modal de fechas

Al hacer clic en “Duplicar multifecha” se abre un modal con:

  • Un textarea donde puedes escribir una fecha por línea.
  • Ejemplos de formatos aceptados:
    • Fecha absoluta:
      2026-02-01
      2026-02-01 18:00:00
    • Fecha relativa (días):
      +7
      +14

Reglas:

  • Si la fecha es tipo +N, se suman N días respecto a la fecha anterior (acumulativo).
  • Si introduces solo la fecha (YYYY-MM-DD), se respeta la hora original del post base.
  • post_modified se replica a la misma fecha/hora que post_date en cada duplicado.

Al enviar el formulario:

  • El plugin crea tantos duplicados como líneas válidas.
  • Muestra un mensaje con el número de posts creados.
  • Opcionalmente recarga la lista para que los veas.

Uso por línea de comandos (WP‑CLI)

El plugin registra un comando personalizado de WP‑CLI (ajusta el nombre según tu implementación):

wp post ao-duplicate <ID> [json_file]

Ejemplos:

# Duplicar un post con fechas definidas en un archivo JSON
wp post ao-duplicate 123 dates.json

# Duplicar un post pasando JSON por STDIN
echo '{"post_date":["+7","+14","2026-02-01 18:00:00"],"post_status":"publish"}' \
  | wp post ao-duplicate 123

Formato JSON esperado (mínimo):

{
  "post_date": ["+7", "+14", "2026-02-01 18:00:00"],
  "post_status": "publish"
}
  • post_date puede ser:
    • String único.
    • Array de strings (crea un duplicado por cada ítem).
  • Fechas relativas se entienden respecto a la fecha del original y se van acumulando.

Uso vía REST API

El plugin expone una ruta REST (ajusta el namespace según tu código):

POST /wp-json/ao-duplicate-post/v1/duplicate/{id}

Ejemplo de petición:

curl -X POST \
  https://tudominio.com/wp-json/ao-duplicate-post/v1/duplicate/123 \
  -H "Content-Type: application/json" \
  -H "X-WP-Nonce: TU_NONCE" \
  -d '{
    "post_date": ["+7","+14","2026-02-01 18:00:00"],
    "post_status": "publish"
  }'

Respuesta típica:

{
  "success": true,
  "count": 3,
  "duplicates": [
    { "id": 456, "url": "https://tudominio.com/?p=456" },
    { "id": 457, "url": "https://tudominio.com/?p=457" },
    { "id": 458, "url": "https://tudominio.com/?p=458" }
  ]
}

Permisos:

  • Solo usuarios con capacidad edit_posts.
  • Protegido con nonce o el mecanismo de autenticación que uses (cookies, Basic Auth, JWT, etc.).

Seguridad

  • Uso de nonces (wp_create_nonce / wp_verify_nonce) en formularios y enlaces de admin para evitar CSRF.
  • Verificación de capacidades (current_user_can('edit_posts')) antes de duplicar.
  • Sanitización de entrada (por ejemplo, sanitize_textarea_field para el textarea del modal).
  • Recomendar uso únicamente en el admin o en entornos autenticados.

Configuración y extensión

  • Por defecto, la lógica de duplicado:
    • Copia título, contenido, estado, metadatos y taxonomías.
    • Ajusta post_date / post_modified según las fechas indicadas.
  • Puedes adaptar:
    • El estado por defecto de los duplicados (draft, publish, etc.).
    • El comportamiento del título (añadir sufijo, prefijo, etc.).

Revisa la clase principal Ao_Duplicate_Post en src/ao-duplicate-post.class.php para personalizar la lógica de negocio.


Desarrollo

  • El código está organizado en clases:
    • Ao_Duplicate_Post: lógica de duplicado + hooks de admin.
    • Ao_Duplicate_Post_WPCLI_Handler: integración con WP‑CLI.
    • Ao_Duplicate_Post_REST_Handler: integración con REST API.
  • El modal está implementado con HTML y JS simple (script.js), apoyándose en el estilo nativo del admin (style.css).

Licencia

Pending...