Wordpress - Access a custom field value with PHP

I am having trouble accessing a custom field on my Wordpress page.

I have a field for a user to upload an image file. The theme that I am using then displays the value of that image as just the image ID, instead of an image link. I display it using {CUSTOM_FIELD_TestFile} in the page editor. I want it to display the actual image though, not the ID.

So, I created a PHP snippet that runs on the page, to do the converting. If I use <img src=" <?php echo wp_get_attachment_url( 1013 )?> "> and I have the image ID hard coded (1013), it works perfectly.

However, I have had no luck getting the value of 'TestFile' into the PHP snippet. I double checked the user_meta table and the meta_key for this file is indeed TestFile.

The viewing of the page is done usually when a user is not logged in. So, get_current_user_id() isn't an option, which means, I also can't use get_user_meta().

If I use:

<?php 
$postId = get_the_ID();
echo $postId; 

$fileLink = get_metadata( "user", $postId, "TestFile");
echo $fileLink;
?>

I get "array" as a response. If I change it to get_metadata( "user", $postId, "TestFile", true); I get nothing.

The exact same results if I use get_post_meta($postId, 'TestFile'); or get_post_meta($postId, 'TestFile', true);.

Am I on the completely wrong track? Is there an easier way to do this? Or is there something that I should be doing with that "array" value that is being returned.

Thanks so much for any help you can offer.

Answer

Solution:

If you have added a custom field called TestFile in the editor, you should be able to get that in your template with:

$value = get_post_meta($postId, 'TestFile', true);

I'm not sure what you mean about the user being logged in or out, because custom fields belong to the post and have nothing to do with the user.

Assuming that works, you should be able to add the ID to your image element:

<img src="<?= wp_get_attachment_url($value); ?>">

Source