批量wpdb插入所有帖子[Wordpress]

时间:2016-05-09 16:31:11

标签: php mysql database wordpress wpdb

我设法将字符串保存到Wordpress数据库中。问题是,当此代码在单个URL中运行时,我只能插入字符串。我的数据库中有大约1500个帖子,所以我想让它们适用于所有这些帖子。

global $wpdb;

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

我想在所有帖子中插入此插件,而无需加载每个网址。我想我应该通过functions.php来做到这一点,但我还没有找到合适的方法。

2 个答案:

答案 0 :(得分:2)

是的,您可以通过将此代码放入functions.php来实现此目的,但这会在每次加载网站时插入所有帖子,因此请在完成执行后添加一次并删除。

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

答案 1 :(得分:1)

只需使用SQL:

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