I have created a Facebook App to upload photos to facebook from image url with help of some tutorials. It needs an image url and description. I want to put a button “Upload to Facebook” below every “Image” type posts in wordpress.
App Main Part to upload images –
<?php
if(isset($_POST["source"]))
{
try {
$access_token=$facebook->getAccessToken();
$graph_url= "https://graph.facebook.com/me/photos?"
. "url=" . urlencode($_POST["source"])
. "&message=" . urlencode($_POST['message'])
. "&method=POST"
. "&access_token=" .$access_token;
$response=file_get_contents($graph_url);
$json=json_decode($response);
}
catch (FacebookApiException $e) {
error_log('Could not post image to Facebook.');
}
}
?>
<form enctype="multipart/form-data" action=" " method="POST">
Paste an image URL here:
<input name="source" type="text"><br/><br/>
Say something about this photo:
<input name="message"
type="text" value=""><br/><br/>
<input type="submit" value="Upload" class="btn btn-primary"/><br/>
</form>
How can i extract image src dynamically from a custom post type(Image), and set src as source
in form automatically. (There is only one image in every image type post)
There is no built-in way to extract an image/image-src from the post body. If the images are attachments you can do it with
get_children
orWP_Query
, andwp_get_attachment_image_src
.You could also use
regex
.The latter might be less work for the server, but may also be less reliable. If you have images embedded that aren’t attachments, it will be your only choice though.
A non-hook example that returns only the image
src
attribute, if found.get_children()
is not a reliable way of getting all images in a post, because it uses thepost_parent
column in thewp_posts
table to decide which images belong to a post. The problem is thatpost_parent
of an image only points to the post that first used this image.If other posts use the same image,
get_children
won’t find it if run on that post, so your list of images will be incomplete and only contain images that have been attached for the first time.