web-dev-qa-db-fra.com

Comment cloner ou dupliquer une publication avec une commande de ligne WordPress WP-CLI?

Je sais que je peux cloner ou dupliquer une publication avec plusieurs plugins. Celui que j'utilise le plus souvent est https://wordpress.org/plugins/duplicate-post/ . Cependant, j'utilise de plus en plus WP-CLI et j'aimerais pouvoir dupliquer ou cloner une publication à partir de la ligne de commande.

Toute suggestion serait appréciée.

1
tfrangio

Cloner un message via wp-cli est un peu plus compliqué. Il faut deux étapes:

  1. Créer un fichier où enregistrer les informations de poste. Supposons que la commande suivante crée un fichier nommé fichier.txt à partir de hello post (id 1). Dans ce cas, fichier.txt qui sauvegarde sur le répertoire racine.

    wp post get 1 > file.txt

  2. Créer une nouvelle publication à partir de ce fichier. Dans notre scénario, fichier.txt enregistre toutes les informations de hello post. Après la commande créer un article nommé duplicate

    wp post create ./file.txt --post_title="duplicate"

5
Md. Mrinal Haque

Merci beaucoup pour votre réponse et @Mrinal et confirmez que cela fonctionnerait avec un tuyau @tfrangio.

Je souhaitais aussi copier les méta-valeurs d'un article à l'autre. Après la création de l'article avec le duplicata avec le tube:

wp post get 6815 --field=content | wp post create - --post_title="Title of dup" --post_status='draft'

Après avoir reçu l'ID du nouveau poste, j'ai passé les meta_keys qui m'intéressaient ...

en supposant que 14 est le post_ID source et 21 le post_ID cible, je veux copier tie_hide_related et tie_sidebar_pos:

for meta_key in tie_hide_related tie_sidebar_pos ; \
do wp post meta get 14 $meta_key | \
xargs wp post meta update 21 $meta_key \
; done

xargs est nécessaire pour transmettre la valeur renvoyée par post-meta-get à la mise à jour post-méta de wp, même si la documentation indique qu'elle lit à partir de stdin , sans xargs, certaines valeurs uniques sont lues comme une liste d'éléments unique, ce qui change le comportement de la valeur

Ensuite, pour copier les termes d'une taxonomie, disons category:

 for cat_id in `wp post term list 14 category --format=ids` ; \
 do wp post term add 21 category $cat_id --by=id ; done

Cette dernière étape pourrait être répétée pour plusieurs taxonomies.

2
Jesús Franco

Ceci peut maintenant être effectué via WP-CLI en utilisant $ wp post create --from-post=1. Il duplique même les métadonnées.

2
cfx