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.

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.com
// 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' );

2 Answers 2

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


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.