最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

How to update a custom field in all posts with the value of another custom field in the same post?

programmeradmin0浏览0评论

I try to get the value of the source field 'enddate', save it in the variable $enddatevar and write it in the target field 'promote' in the loop by activating the plugin, but the code I added to this working code doesn't work. Any help would be appreciated.

<?php
/*
Plugin Name: Update MetaData for Posts
Description: Enable this plugin to update the metadata for all the posts
Author: JackJohansson
Version: 1.0
Author URI: 
*/
// Run the loop when the plugin is activated
register_activation_hook(__FILE__, 'update_my_metadata');
function update_my_metadata(){
    $args = array(
        'post_type' => 'touren', // Only get the posts
        'post_status' => 'publish', // Only the posts that are published
        'posts_per_page'   => -1 // Get every post
    );
    $posts = get_posts($args);
    foreach ( $posts as $post ) {
        // Run a loop and update every meta data
//code added to original code
$enddatevar = get_post_meta( $post_id, $key = 'enddate', $single = false);
//end of code added 
//'meta_value' used in original code replaced with '$enddatevar' below
        update_post_meta( $post->ID, 'promote', '$enddatevar' );
    }
}
?>

I try to get the value of the source field 'enddate', save it in the variable $enddatevar and write it in the target field 'promote' in the loop by activating the plugin, but the code I added to this working code doesn't work. Any help would be appreciated.

<?php
/*
Plugin Name: Update MetaData for Posts
Description: Enable this plugin to update the metadata for all the posts
Author: JackJohansson
Version: 1.0
Author URI: http://example
*/
// Run the loop when the plugin is activated
register_activation_hook(__FILE__, 'update_my_metadata');
function update_my_metadata(){
    $args = array(
        'post_type' => 'touren', // Only get the posts
        'post_status' => 'publish', // Only the posts that are published
        'posts_per_page'   => -1 // Get every post
    );
    $posts = get_posts($args);
    foreach ( $posts as $post ) {
        // Run a loop and update every meta data
//code added to original code
$enddatevar = get_post_meta( $post_id, $key = 'enddate', $single = false);
//end of code added 
//'meta_value' used in original code replaced with '$enddatevar' below
        update_post_meta( $post->ID, 'promote', '$enddatevar' );
    }
}
?>
Share Improve this question asked Aug 13, 2019 at 21:35 LukasLukas 1
Add a comment  | 

2 Answers 2

Reset to default 1
$enddatevar = get_post_meta( $post_id, $key = 'enddate', $single = false);

$post_id is not defined, either declare it beforehand, or use $post->ID.

update_post_meta( $post->ID, 'promote', '$enddatevar' );

'$enddatevar' shouldnt be inside quotes.

Thanks! I was close to the solution, tried both, but not in combination. Thus

$enddatevar = get_post_meta( $post->ID, $key = 'enddate', $single = false);
update_post_meta( $post->ID, 'promote', $enddatevar );

worked.

发布评论

评论列表(0)

  1. 暂无评论