it-swarm.com.de

Extrahieren Sie das Bild src aus einem Beitrag und senden Sie es an ein externes Formular

Ich habe eine Facebook App erstellt, um mithilfe einiger Tutorials Fotos von der Bild-URL auf Facebook hochzuladen. Es benötigt eine Bild-URL und eine Beschreibung. Ich möchte unter jedem Beitrag vom Typ "Bild" in WordPress die Schaltfläche "Auf Facebook hochladen" einfügen.

App-Hauptteil zum Hochladen von Bildern -

<?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>

Wie kann ich das Bild src dynamisch aus einem benutzerdefinierten Beitragstyp (Image) extrahieren und src in der Form automatisch als source festlegen? (Es gibt nur ein Bild in jedem Bildtyp-Beitrag.)

2
Prateek

Es gibt keine eingebaute Möglichkeit, ein Bild/Bild-Quellcode aus dem Post-Body zu extrahieren. Wenn es sich bei den Bildern um Anhänge handelt, können Sie dies mit get_children oder WP_Query und wp_get_attachment_image_src tun.

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');

Sie können auch regex verwenden.

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');

Letzteres könnte weniger Arbeit für den Server bedeuten, kann aber auch weniger zuverlässig sein. Wenn Sie Bilder eingebettet haben, die keine Anhänge sind, ist dies jedoch Ihre einzige Wahl.

Ein Beispiel ohne Hook, das nur das Attribut image src zurückgibt, falls es gefunden wird.

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

get_children() ist keine zuverlässige Methode zum Abrufen aller Bilder in einem Beitrag, da mithilfe der Spalte post_parent in der Tabelle wp_posts entschieden wird, welche Bilder zu einem Beitrag gehören. Das Problem ist, dass der post_parent eines Bildes nur auf den Beitrag verweist, der zuerst dieses Bild verwendet hat.

Wenn andere Beiträge dasselbe Bild verwenden, wird es von get_children nicht gefunden, wenn es für diesen Beitrag ausgeführt wird. Daher ist Ihre Bilderliste unvollständig und enthält nur Bilder, die zum ersten Mal angehängt wurden.

0
Robert Bethge