web-dev-qa-db-fra.com

mise à jour en bloc de post_meta avec les valeurs par défaut

J'ai un site qui compte plus de 1000 publications, après avoir récemment ajouté un nouveau champ personnalisé (avec ACF), bien entendu, les données post_meta n'existent pas tant que je n'ai pas parcouru chaque publication et ne l'ai mise à jour avec une valeur.

Alors ive trouvé ce code:

function my_acf_load_value( $value, $post_id, $field ) {
    $value = get_the_title(); 
    return $value;
}
add_filter('acf/load_value/name=Amazon_keywords', 'my_acf_load_value', 10, 3);

Ce qui définit la valeur par défaut du champ sur wp-title. Ainsi, lorsque je passe à un article, le titre de l'article est déjà entré dans le champ personnalisé, prêt à être sauvegardé.

Dans cet esprit, y a-t-il un moyen de le faire sans avoir à aller dans tous les posts et à le sauvegarder? Vous aimez une mise à jour groupée? J'ai essayé de mettre à jour en masse à partir de l'écran des listes de publication, mais cela ne semble pas exécuter la sauvegarde des champs personnalisés.

1
Randomer11

Vous pouvez ajouter une nouvelle action en bloc pour les publications contenant ce code:

$postType = "post";


add_filter("bulk_actions-edit-" . $postType, function ($actions) {

    $actions["specialSave"] = "Special save";

    return $actions;

}, 20);


add_filter("handle_bulk_actions-edit-" . $postType, function ($sendback, $doaction, $post_ids) {

    if ("specialSave" !== $doaction) {
        return;
    }

    foreach ($post_ids as $idPost) {

        // action to do for each selected post



    }

    return $sendback;


}, 10, 3);

si une simple sauvegarde ne suffit pas pour définir la valeur, vous pouvez utiliser ce code pour définir la valeur directement pour chaque publication sélectionnée.

1
mmm