Inserire tutti gli ID postali di nuova tabella di database
-
16-10-2019 - |
Domanda
Ho un plugin che crea una nuova tabella di database. Attivando il plugin c'è un modo per inserire tutti i miei post id in quel tavolo?
In questo momento sto utilizzando un gancio azione per immediatamente inserto l'id di nuovi posti che pubblico.
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' );
Per quanto ci sono messaggi prima di attivare il plug-in che ho bisogno di un modo per inserire senza aggiornare manualmente ciascuno di essi.
Soluzione
In questo modo:
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;
Altri suggerimenti
È possibile progettare il vostro tavolo in modo tale che un un ID può esiste solo una volta utilizzando una chiave. È quindi possibile eseguire un inserto in query che seleziona i valori ID esistente direttamente con una selezione secondaria.
in questo modo ( 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;
Controllare il manuale di MySQL per quanto riguarda la sintassi del href="http://dev.mysql.com/doc/refman/5.1/en/insert.html" rel="nofollow noreferrer"> INSERT .
Mi dispiace tanto! Ho perso login ti prego di perdonarmi, a quanto pare ho usato una e-mail corretto. Mi metterò in contatto con l'amministratore forum per vedere come posso recuperare il nome utente ..
Denis grazie per il codice!
Lo sto usando in questo modo
$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" );
I disattivato il plugin e dopo l'attivazione di prova, ottengo
Il plugin ha generato 663 caratteri uscita imprevisto durante l'attivazione. Se si nota “headers already sent” messaggi, problemi con syndication feed o altri problemi, prova disattivare o rimuovere questo plugin.
Ho wp_debug su ma non sto ricevendo errori descritti.