我已经设法将一个字符串保存到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'
)
);
我想在所有帖子中插入这个内容,而不必加载每个url。我想我应该通过functions.php
做到这一点,但我还没有找到合适的方法。
是的,您可以通过将此代码放入functions.php来实现这一点,但这将在每次加载站点时插入所有post,因此添加一次并在完成执行后删除。
<?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();?>
只需使用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 );