web-dev-qa-db-fra.com

Comment copier en bloc des champs personnalisés entre des publications personnalisées?

J'ai un CPT appelé (services) qui a un champ personnalisé avec le nom de (prix), et il y a aussi une taxonomie personnalisée qui a un CPT avec un nom (catalogue) qui a également un champ personnalisé avec le nom de (prix) .

il est destiné à un article de catalogue pour avoir son prix de service, et j'ai déjà ajouté les prix de services. Maintenant, je veux copier en bloc le champ personnalisé (prix) dans les services dans le champ personnalisé (prix) dans (Catalogue) en bloc, comment puis-je faire cela?

Pour être mentionné, les messages ont les mêmes noms

1
Mohamed Omar

Votre problème est assez complexe. Sans entrer dans votre système, il est assez difficile de le résoudre. Pour votre cas, je préférerais exécuter une requête de base de données, mais cela me semblait trop complexe. En passant, j’ai essayé d’écrire un script PHP simple-

function the_dramatist_get_post_by_title( $page_title, $post_type ='post' ) {
    global $wpdb;
    $post = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_title = %s AND post_type= %s", $page_title, $post_type));
    if ( $post )
        return $post;

    return null;
}

function the_dramatist_bulk_copy_c_fields() {
    $c_posts = wp_list_pluck( get_posts(array(
        'post_type'=>'catalog',
        'posts_per_page' => -1
    )), 'ID' );

    foreach($c_posts as $c){
        $title = get_the_title( $c );
        $s_id = the_dramatist_get_post_by_title( $title, 'services');
        $meta_value = get_post_meta( $s_id, 'price', true );
        add_post_meta( $c, 'price', $meta_value );
    }
    return true;
}

add_action('init', 'the_dramatist_bulk_copy_c_fields');

Exécutez le script une seule fois. Je n'ai pas eu la chance de le tester. Alors, testez-le avant de l'utiliser en production.

J'espère que cela pourra aider.

1
CodeMascot