2016-05-09 19 views
0

Ich habe es geschafft, eine Zeichenfolge in Wordpress-Datenbank zu speichern. Das Problem ist, dass ich die Zeichenfolge nur einfügen kann, wenn dieser Code in einer einzelnen URL ausgeführt wird. Ich habe ungefähr 1500 Posts in meiner Datenbank, also möchte ich es für alle von ihnen arbeiten lassen.Bulk wpdb einfügen für alle Beiträge [Wordpress]

global $wpdb; 

$result = $wpdb->replace(
    $wpdb->postmeta, 
    array(
     'post_id' => $post->ID, 
     'meta_key' => 'ratingpost', 
     'meta_value' => $ratingvalue 
    ), 
    array(
     '%s', 
     '%s', 
     '%s' 
    ) 
); 

Ich möchte diese Einfügung in alle Beiträge machen, ohne jede einzelne URL laden zu müssen. Ich nehme an, ich sollte das über functions.php tun, aber ich habe keinen richtigen Weg gefunden, es zu tun.

+0

Sie könnten eine foreach-Schleife verwenden, oder einfach nur einfacher: SQL – kindisch

Antwort

1

Verwenden Sie einfach SQL für diese:

global $wpdb; 

$updated = $wpdb->query(UPDATE {$wpdb->postmeta} pm, {$wpdb->posts} p SET pm.meta_value = {$ratingvalue} WHERE pm.meta_key = 'ratingpost' AND p.ID = pm.post_id); 
2

Ja, Sie können dies erreichen, indem Sie diesen Code in functions.php einfügen, aber dies wird alle Beiträge jedes Mal einfügen, wenn Website lädt, so fügen Sie dies einmal und entfernen nach der vollständigen Ausführung.

<?php 

global $wpdb; 
$args = array('posts_per_page' => 5, 'offset'=> 1, 'category' => 1); 

$myposts = get_posts($args); 
foreach ($myposts as $post) : setup_postdata($post); ?> 

$ratingvalue = get_post_meta($post->ID,'ratingpost',true); 
$result = $wpdb->replace(
$wpdb->postmeta, 
    array(
     'post_id' => $post->ID, 
     'meta_key' => 'ratingpost', 
     'meta_value' => $ratingvalue 
     ), 
    array(
     '%s', 
     '%s', 
     '%s' 
     ) 
    ); 
<?php endforeach; 
wp_reset_postdata();?> 
+0

Mit diesem Code verwenden Sie nur die ersten fünf Stellen bekommen. Darüber hinaus ist die Verwendung von 'setup_postdata ($ post)' ohne die Verwendung von Loop-Funktionen nicht sehr nützlich und verringert die Leistung der bereits starken foreach-Schleife. – kindisch

Verwandte Themen