Question

J'ai un plug-in qui crée une nouvelle table de base de données. Lors de l'activation du plug-in est-il un moyen d'insérer tous mes messages ids dans ce tableau?

En ce moment je suis à l'aide d'un crochet d'action pour insérer immédiatement l'identifiant de nouveaux postes que je publie.

function transfer_post_id($post_ID)  {
global $wpdb;
   if (!($wpdb->get_row("SELECT post_id FROM $my_table WHERE post_id = $post_ID" ) ) ) { //if post id not already added
      $wpdb->insert( $my_table, array( 'post_id' => $post_ID ) );      
   }
   return $post_ID;
}

add_action ( 'publish_post', 'transfer_post_id' );

Cependant, il y a des postes avant d'activer le plugin que je besoin d'un moyen d'insérer sans mettre à jour manuellement chacun.

Était-ce utile?

La solution

comme ceci:

INSERT INTO $mytable (post_id)
SELECT ID
FROM $wpdb->posts as posts
LEFT JOIN $mytable as dup_check
ON dup_check.post_id = posts.ID
WHERE dup_check.post_id IS NULL;

Autres conseils

Vous pouvez concevoir votre table façon telle qu'un ID ne peut existe une fois à l'aide d'une clé. Vous pouvez ensuite exécuter une insertion dans la requête qui sélectionne les valeurs existantes d'identité directement avec une sous-sélection.

Comme si ( Denis ):

INSERT INTO $mytable (post_id)
SELECT ID
FROM $wpdb->posts as posts
LEFT JOIN $mytable as dup_check
ON dup_check.post_id = posts.ID
WHERE dup_check.post_id IS NULL;

Consultez le manuel de MySql sur la syntaxe du instruction INSERT .

Je suis désolé! J'ai perdu connexion s'il vous plaît pardonnez-moi, apparemment je un email incorrect. Je vais contacter l'administrateur du forum pour voir comment je peux récupérer mon nom d'utilisateur ..

Denis merci pour le code!

Je l'utilise comme si

   $my_table = $wpdb->prefix . "rated_posts";

   $wpdb->query( "INSERT INTO $my_table (rated_post_id)
                SELECT ID
                FROM $wpdb->posts as posts
                LEFT JOIN $my_table as dup_check
                ON dup_check.rated_post_id = posts.ID
                WHERE dup_check.rated_post_id IS NULL" ); 

Je désactive le plug-in et lors de l'activation de test, je reçois

  

Le plugin a généré 663 caractères   sortie inattendue lors de l'activation.   Si vous remarquez « déjà envoyé des en-têtes »   messages, problèmes de syndication   aliments ou toute autre question,   désactiver ou de supprimer ce plug-in.

Je wp_debug sur mais je ne reçois pas des erreurs détaillées.

Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top