• User Attivo

    Potresti usare, in alternativa, la f(x) nativa wp_insert_post:

    codex.wordpress.org/Function_Reference/wp_insert_post


  • Super User

    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.


  • User Attivo

    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


  • User Attivo

    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' )                     
        );        
    
    
        
        
        
    }

  • Super User

    Grazie,
    ma come dicevo ho necessità di eseguire la query su MySQL direttamente.


  • User Attivo

    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 php

    php.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.


  • Super User

    Grazie, vedrò di testarlo e comunicherò l'esito appena possibile! 🙂


  • User Attivo

    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);
    ?>


  • User Attivo

    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)


  • Super User

    Devi usare il shortcode
    [ code]

    [ /code]

    rimuovi lo spazio dopo la prima parentesi!


  • User Attivo

    ottimo grazie!
    Fra l'altro ho visto che se si risponde su "modalità avanzata" si vede anche il TAG per il bbcode [code]! :figo2:

    Grazie mille,
    e fammi sapere come va con lo script!;)