- Home
- Categorie
- Coding e Sistemistica
- CMS & Piattaforme Self-Hosted
- [Wordpress] Import post da un file sql custom
-
Purtroppo devo agire da database.
La mia query ha funzionato, perchè che le 'news' precedenti hanno diversi tag html non riconosciuti da Wordpress e vengono visualizzati a video all'utente.
-
Ok, è che a volte è veramente un problema WP+ SQL con i caratteri speciali.
Anche io tempo fa,
ho dovuto abbandonare il mio script di migrazione "all php" per convertirlo in uno script che utilkizzava in parte le f(x) native di wordpress,
perchè con i caratteri speciali era un disastro e mi generava un sacco di errori.Alal fine ho utilizzato wp_insert_post + alcuni accorgimento
avevo scritto un post qui dove spiegavo la cosa:
blog.artigianidelweb.it/2015/03/wordpress-wpdb-get-var-e-apostrofi.html
-
Esempio pratico:
$autore_esc = esc_sql($autore); > // iterate all objects foreach( $posts_it as $pit ){ $idrif = $pit->id; $autore = $pit->autore;
** $autore_esc = esc_sql($autore); **
[...] $update_autori = $wpdb->update( 'wp_posts', //Tabella array('ID' => $idrif), // WHERE conditions Array array( 'post_author' => $autore_wp_id), // Data array( '%d' ), array( '%d' ) ); }
-
Grazie,
ma come dicevo ho necessità di eseguire la query su MySQL direttamente.
-
Ok, allora prova questo:
blog.artigianidelweb.it/2013/10/mysql-evitare-lecape-del-backslash.html
( SET SESSION sql_mode='NO_BACKSLASH_ESCAPES )
---> dovrebeb aiutarti con i BACKSLASH
mentre, per i caratteri speciali,
io agirei sempre via PHP, ovvero: farei degli script dio conversione dei caratteri speciali da PHP, usando comqunue delle funzioni di pulizia di phpphp.net/manual/en/function.htmlspecialchars.php
Quidi utilizzi MYSQL + PHP
penso sia la soluzione migliore per lavorare con i caratteri speciali, MYSQL direttamente non ha molte funzioni che le gestiscano.
-
Grazie, vedrò di testarlo e comunicherò l'esito appena possibile!
-
Guarda,
se può esserti utile ti incollo qui un pò di vecchio codice in php per fare il passaggio da DB 1 a DB2 (WORDPRESS)--------> NATURALMENTE E' SOLO UNA BOZZA, VA MODIFICATO COME VUOI ED AGGIUNGERE LE FUNZIONI PHP PER LAVORARE SULLA PULIZIA E CONVERSIONE DEUI CARATTERI SPECIALI
<?
//PARAMETRI DI CONESSIONE AL DB 1 $DB_host1 = 'localhost'; $DB_user1 = 'sitovecchio'; $DB_password1 = 'sitovecchio'; $DB_name1 = 'sitovecchio'; //CONNESSIONE 1 $link1 = mysql_connect($DB_host1, $DB_user1, $DB_password1); if (!$link1) { die ('Non riesco a connettermi 1: ' . mysql_error()); } else {echo 'Connesso a mysql 1<br>';} //SELEZIONE DB 1 $db_selected1 = mysql_select_db($DB_name1, $link1); if (!$db_selected1) { die ("Errore nella selezione del database 1: " . mysql_error()); }else {echo 'Connesso al db 1<br>';} //PARAMETRI DI CONESSIONE AL DB 2 - wordpress $DB_host2 = 'localhost'; $DB_user2 = 'wordpress'; $DB_password2 = 'wordpress'; $DB_name2 = 'wordpress'; //CONNESSIONE 2 $link2 = mysql_connect($DB_host2, $DB_user2, $DB_password2); if (!$link2) { die ('Non riesco a connettermi 2: ' . mysql_error()); } else {echo 'Connesso a mysql 2<br>';} //SELEZIONE DB 2 $db_selected2 = mysql_select_db($DB_name2, $link2); if (!$db_selected2) { die ("Errore nella selezione del database 2: " . mysql_error()); }else {echo 'Connesso al db 2<br>';} $results = mysql_query("SELECT * FROM nometabella",$link1); $i = 0; while ($row = mysql_fetch_array($results,MYSQL_ASSOC)) { $post = array(); $post['post_status'] = 'publish'; $post['post_category'] = array(4); $post['post_date'] = date('Y-m-d H:i:s'); $post['post_title'] = $row['NOME']; $post['post_content'] = $row['DESCRIZIONE']; $titolo = $post['post_title']; $contenuto = $post['post_content']; /* Inserisce i contenuti in WP post */ $sql1 = " INSERT INTO `wp_posts` (`ID`, `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`, `post_excerpt`, `post_status`, `comment_status`, `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_content_filtered`, `post_parent`, `guid`, `menu_order`, `post_type`, `post_mime_type`, `comment_count`) VALUES ('', 1, '2014-10-28 09:08:42', '2014-10-28 08:08:42', '$contenuto', '$titolo', '', 'publish', 'closed', 'closed', '', 'pagina-di-esempio', '', '', '2014-10-28 09:08:42', '2014-10-28 08:08:42', '', 0, '', 0, 'page', '', 0)"; $query1 = @mysql_query ($sql1); if (!$query1){echo "<h2>Errore sql </h2>"; } $posts* = $post; $i++; }
mysql_close ($link1);
mysql_close ($link2);
?>
-
PS:
scusa, voelvo postare il codice dentro il tag "CODE", ma non lo trovo nell'editor del forum, come si fa?
s21.postimg.org/xrhi4k8kn/CODE.jpg
(Ho editor avanzato neklle impostazione del forum)
-
Devi usare il shortcode
[ code][ /code]
rimuovi lo spazio dopo la prima parentesi!
-
ottimo grazie!
Fra l'altro ho visto che se si risponde su "modalità avanzata" si vede anche il TAG per il bbcode [code]!Grazie mille,
e fammi sapere come va con lo script!;)