从帖子中提取图像源并将其发送到外部表单

时间:2013-06-02 作者:Prateek

我创建了一个Facebook App 在一些教程的帮助下,从图片url上传照片到facebook。它需要一个图像url和描述。我想在wordpress中每一个“图片”类型的帖子下面都放一个“上传到Facebook”按钮。

上载图像的应用程序主要部分-

<?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>
如何从自定义帖子类型(image)中动态提取image src,并将src设置为source 自动生成表单。(每个图像类型帖子中只有一个图像)

2 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

没有内置的方法从帖子正文中提取图像/图像src。如果图像是附件,则可以使用get_childrenWP_Query, 和wp_get_attachment_image_src.

function get_image_src_from_content_101578($content) {
  global $post;
  $args = array( 
    \'post_parent\' => $post->ID,
  );
  $images = get_children($args);
  foreach ($images as $img) {
    var_dump(wp_get_attachment_image_src($img->ID));
  }
}
add_action(\'the_content\',\'get_image_src_from_content_101578\');
您也可以使用regex.

function replace_image_link_101578($content) {
  $pattern = \'|<img.*?src="([^"]*)".*?/?>|\';
  $content = preg_match($pattern,$content,$matches);
  var_dump($matches);
  return $content;
}
add_filter(\'the_content\',\'replace_image_link_101578\');
后者可能会减少服务器的工作量,但也可能不太可靠。如果嵌入的图像不是附件,那么这将是您唯一的选择。

仅返回图像的非挂钩示例src 属性(如果找到)。

function replace_image_link_($content) {
  $pattern = \'|<img.*?src="([^"]*)".*?/?>|\';
  $content = preg_match($pattern,$content,$matches);
  return (!empty($matches[1])) ? $matches[1] : \'\';
}

SO网友:Robert Bethge

get_children() 不是在帖子中获取所有图像的可靠方法,因为它使用post_parent 中的列wp_posts 表来决定哪些图像属于帖子。问题是post_parent 只指向第一个使用此图像的帖子。

如果其他帖子使用相同的图像,get_children 如果在该帖子上运行,将找不到它,因此您的图像列表将不完整,只包含第一次附加的图像。

结束