Fernanditos
asked on
Passing simple php value in Wordpress single.php file
These 2 lines:
$str = get_post_meta($post->ID, $key, true);
echo 'str is '.$str;
output this:
"str is http://www.site.com/-dan-baker.mp3 6787576 audio/mpeg"
That has been TESTED on my wordpress single.php file.
The original code is attached bellow, it returns the mp3 URL inside the string BUT it works fine ONLY if I provide $str value direct, like this: $str = "http://www.site.com/-dan-baker.mp3 6787576 audio/mpeg"
If I provide it like this: $str = get_post_meta($post->ID, $key, true); then $file will return empty.
Why? I am 100% sure get_post_meta($post->ID, $key, true) is returning the string.
I hope you understand.
Thank you.
$str = get_post_meta($post->ID, $key, true);
echo 'str is '.$str;
output this:
"str is http://www.site.com/-dan-baker.mp3 6787576 audio/mpeg"
That has been TESTED on my wordpress single.php file.
The original code is attached bellow, it returns the mp3 URL inside the string BUT it works fine ONLY if I provide $str value direct, like this: $str = "http://www.site.com/-dan-baker.mp3 6787576 audio/mpeg"
If I provide it like this: $str = get_post_meta($post->ID, $key, true); then $file will return empty.
Why? I am 100% sure get_post_meta($post->ID, $key, true) is returning the string.
I hope you understand.
Thank you.
<?php
// Code tested on wordpress file single.php
$key="enclosure";
$str = get_post_meta($post->ID, $key, true);
echo 'str is '.$str; //this output: str is http://www.site.com/-dan-baker.mp3 6787576 audio/mpeg
$split_at_space=explode(" ",$str);
$mimetype=array_pop($split_at_space);
$numbers=array_pop($split_at_space);
$file=join(" ",$split_at_space);
echo "\n";
echo 'File:'.$file;
?>
ASKER
Yes there are white spaces:
$str = "http://www.site.com/-dan-baker.mp3 6787576 audio/mpeg"
the crazy thing is that it works perfect if I assign the value to $str manually, like above.
But if I assign it this way: $str = get_post_meta($post->ID, $key, true); then $file return empty.
and again: I have test get_post_meta($post->ID, $key, true); is returning the same string.
Any idea?
$str = "http://www.site.com/-dan-baker.mp3 6787576 audio/mpeg"
the crazy thing is that it works perfect if I assign the value to $str manually, like above.
But if I assign it this way: $str = get_post_meta($post->ID, $key, true); then $file return empty.
and again: I have test get_post_meta($post->ID, $key, true); is returning the same string.
Any idea?
ASKER
Look, I will post here the real code here and I take screeshot code result, this will clear any doubt:
<?php
$key="enclosure";
$str = get_post_meta($post->ID, $key, true);
echo 'str: '.$str;
$split_at_space=explode(" ",$str);
$mimetype=array_pop($split_at_space);
$numbers=array_pop($split_at_space);
$file=join(" ",$split_at_space);
echo "<br/>";
echo 'File:'.$file;
?>
Maybe the get_post_meta($post->ID, $key, true); ECHOES the string instead of returning a string value ?
try doing it this way:
$str = echo get_post_meta($post->ID, $key, true);
$str = echo get_post_meta($post->ID, $key, true);
I was thinking about the whitespaces at the both ends of the returned string. This would cause the splitting function return incorrect results.
One more thing, what does this do:
One more thing, what does this do:
<?php
$key="enclosure";
$str = get_post_meta($post->ID, $key, true);
echo 'str: '.$str;
$split_at_space=explode(" ",$str);
$mimetype=array_pop($split_at_space);
$numbers=array_pop($split_at_space);
print_r($split_at_space);
$file=join(" ",$split_at_space);
echo "<br/>";
echo 'File:'.$file;
?>
ASKER
Well, it does work. It points that the $split_at_space is an empty array after poping
What does this show ?
$split_at_space=explode(" ",$str);
echo"after exploding: ";
print_r($split_at_space);
$mimetype=array_pop($split_at_space);
$numbers=array_pop($split_at_space);
echo"$mime_type, $numbers";
What does this show ?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
I think you missunderstood something:
URL result that you see printed is the returned value of get_post_meta($post->ID, $key, true); SO this is not returning empty. See my code.
Notice that in my screenshot, I have 2 outputs: $str and $file
my problem is with $file that is returning EMPTY.
this is the most strange thing I have ever seen.
"you said: if this shows us that the $str is empty - then the function get_post_meta($post->ID, $key, true); returns nothing."
URL result that you see printed is the returned value of get_post_meta($post->ID, $key, true); SO this is not returning empty. See my code.
Notice that in my screenshot, I have 2 outputs: $str and $file
my problem is with $file that is returning EMPTY.
this is the most strange thing I have ever seen.
ASKER
I just can NOT capture the value returned by get_post_meta($post->ID, $key, true); into a variable.
I can just print it like: echo get_post_meta($post->ID, $key, true);
does this makes sense for you?
I can just print it like: echo get_post_meta($post->ID, $key, true);
does this makes sense for you?
ASKER
I think this issue is relate to the nature of get_post_meta of wordpress: http://codex.wordpress.org/Using_Custom_Fields
no idea.
no idea.
You would have to find the file where the function is stored to see what it returns.
Change true to false
get_post_meta($post->ID, $key, false);
get_post_meta($post->ID, $key, false);
Please do this for us:
$str = get_post_meta($post->ID, $key, true);
var_dump($str);
And show us the var_dump() output. It will tell the data type as well as the contents. Use "view source" and copy the relevant lines, then post them here in the code snippet. Thanks, ~Ray
$str = get_post_meta($post->ID, $key, true);
var_dump($str);
And show us the var_dump() output. It will tell the data type as well as the contents. Use "view source" and copy the relevant lines, then post them here in the code snippet. Thanks, ~Ray
$str = trim(get_post_meta($post->