phpwordpresscustom-fieldsadd-filter

Insert custom field value before content


I have a custom meta field that I would like to insert in the_content automatically so that my AMP plugin can render the custom field value in the same way as the_content.

Currently I am using this code to display it:

<?php $video_value = get_post_meta( get_the_ID(), '_video', true ); ?>

<?php if ( ! empty( $video_value ) ) {?>
    <div class="video-container"><?php echo $video_value; ?></div>
<?php } else { ?>
    <?php the_post_thumbnail(); ?>
<?php } ?>

But I would like the $video_value to be inserted automatically before the_content.


Solution

  • You can use the the_content filter to do this. You can read more about it on the WordPress developer site.

    But the code could be looking something like this:

    function my_custom_content_filter($content){
      global $post;
      $video_value = get_post_meta($post->ID, '_video', true);
      if($video_value){
        return '<div class="video-container">' . $video_value . '</div>' . $content;
     }else{
       return get_the_post_thumbnail($post->ID) . $content;
     }
    }
    add_filter('the_content', 'my_custom_content_filter');
    

    And you can add this code in you functions.php file.

    Note This filter only works on the_content() and not get_the_content()