echo the "file" meta box problem
-
I read the documentation example on retrieving a medium image for the “file” meta box. But I cannot get it to display an image. I did not rename the “id” it is test_image. I have an image uploaded in my custom options page. This is my code –
$image = wp_get_attachment_image( get_post_meta( get_the_ID(), 'test_image_id', 1 ), 'medium' );I wrapped that inside php tags, and that is inside img src html tags. What am I missing?
edit- I added
echo $image;in the line above
-
Could you pastebin the code you’re using?
The function you’re using also retrieves an entire
<img>tag itself, not just the src url. So you’d be able to doecho wp_get_attachment_image( get_post_meta( get_the_ID(), 'test_image_id', 1 ), 'medium' );somewhere and if it finds an image, it’d display the image.
I think I tried to echo the line like you said too.
Here it is in a loop – http://pastebin.com/UvRyu9sZ
Just to clarify I am using this file meta box in custom options page. Not a post or page.
While still trying to figure this out, I was able to get a test_text type meta to return in a loop –
echo cmb2_get_option('fmx_options', 'test_text');my prefix for my custom admin meta is fmx
still cant get image to echo
If you’re trying this on an options page, then you’re not going to have a default $wp_query object that is used in the loop. You’re going to need to do your own custom query for the posts that hold the values and do a loop on that custom object.
It’s to be displayed in a modal on the front end. I have used WP_Query for the other two different uses of cmb2 meta boxes.
So another custom query will fix this? Any examples using images? I was successful with other meta types but haven’t done a custom args array for attachments.If you’re storing this information in a custom option page, then
get_post_meta()isn’t going to be the function you need, as I realized after re-reading above. WP_Query objects won’t be in play here.What do you see when you do the following and refresh the page:
var_dump( cmb2_get_option('fmx_options', 'test_text') );My hunch will be some sort of array holding the available data that you’d need to loop over and echo the parts out for.
It dumped this- string(11) “Hello World”, but for “test-text” as you have above.
What I need is the test_image_id
var_dump( cmb2_get_option('fmx_options', 'test_image_id') );it dumped this – string(5) “11049”
excellent, we have our necessary ID, at least for 1 instance. Not sure if it’s going to be the same string result or if it’s going to return an array once you start saving more images. For this 1 single ID, the following should work.
$id = cmb2_get_option('fmx_options', 'test_image_id'); if ( !empty( $id ) ) { echo wp_get_attachment_image( $id, 'medium' ); }If by chance
cmb2_get_option('fmx_options', 'test_image_id')starts returning an array, you’ll just need to do something like the following.$ids = cmb2_get_option('fmx_options', 'test_image_id'); if ( !empty( $ids ) ) { foreach ( $ids as $id ) { echo wp_get_attachment_image( $id, 'medium' ); } }That top one worked! Now I just need to apply an img class to what it echo’s. Since its a function returning the image, how to I get the img src to achieve the above?
Should be able to apply a custom one via the 4th argument array, you’ll want to pass in “false” for the 3rd one.
Check the codex for some more information.
I am not understanding you when you say “4th argument array”. I searched the codex, and dont see anything listed that way. I am sorry for my ignorance on this. But I have read the whole wp_query page in the codex and searched for what you mentioned and didnt find anything. Can you be more specific on where I need to read up? I literally googled “4th argument array wordpress” and didnt see anything relevant.
That’s because it was related to the 4th argument you pass into
wp_get_attachment_image().First argument is
$id, second is'medium', third needs to befalseto keep it the default, and then the fourth is an array you construct.From this function’s codex:
$default_attr = array( 'src' => $src, 'class' => "attachment-$size", 'alt' => trim(strip_tags( get_post_meta($attachment_id, '_wp_attachment_image_alt', true) )), );passing in
array( 'class' => 'some-class', 'alt' => 'my custom alt text' )should set those to what you want. I’d leave'src'aloneI want to check to see if this is correct usage of the “post_per_page”, and including the
“post_type => page” to limit the post to show only one image (since there is only one used for the meta). I was trying to use posts_per_page without using post_type and it was returning two images. Then I set the post_type to page and it worked. Why is that?the posts_per_page parameter looks correct, not sure how frequently the returned value is going to be if you need it to change over time. It’s probably going to find the first page listed in the wp_posts table each time, regardless of if you publish more or not. Essentially that setup will return the same page every time.
You’re missing the proper 3rd parameter for the echo line
echo wp_get_attachment_image( $id, 'full', array( 'class' => 'img-responsive' ) );needs to be
echo wp_get_attachment_image( $id, 'full', false, array( 'class' => 'img-responsive' ) );
The topic ‘echo the "file" meta box problem’ is closed to new replies.