WordPress-API-Beitrag einreichen

Lesezeit: 3 Minuten

Benutzer-Avatar
Oliver Williams

Ich bin ein erfahrener PHP-Programmierer, der mit CURL vertraut ist und es mit einer Cookie-Jar-Datei verwendet, und bin auch mit JSON vertraut.

Womit ich nicht vertraut bin, ist WordPress 4.1.1, und mein Ziel ist einfach: eine WordPress-Site entweder nativ oder über ein Plugin (hoffentlich nativ) aus der Ferne aufrufen und:

a) einen Artikel/Beitrag einreichen und hoffentlich

b) Erhalten Sie eine Liste der Beiträge nach Benutzer, die auch nach Datum sortiert sind (zum Vergleich).

Aus der bisherigen Recherche geht hervor, dass Sie angemeldet sein müssen, und vielleicht ist es ein zweistufiger Prozess, der das Erhalten einer Nonce und das anschließende Einreichen des Beitrags mit der Nonce umfasst. Kann mir jemand sagen, wo ich in der API-Dokumentation nachsehen oder wo ich anfangen soll?

  • Was meinen Sie Dies?

    – egal

    10. März 2015 um 0:49 Uhr

  • Ihre WP-Site oder die einer anderen Person?

    – Falsch verstanden

    10. März 2015 um 0:50 Uhr

  • Einige der Vorschläge, die auftauchten, enthielten diese Informationen zum IXR-Client, und dieser Link scheint hilfreich zu sein: djzone.im/2011/04/simple-xml-rpc-client-to-wordpress-leicht gemacht

    – Oliver Williams

    10. März 2015 um 0:54 Uhr

Benutzer-Avatar
Zykloncode

Du könntest die verwenden XML-RPC API Um dies zu tun, ist hier ein einfaches Beispiel mit curl wodurch ein neuer Beitrag erstellt wird wp.newPost:

// initialize curl
$ch = curl_init();
// set url ie path to xmlrpc.php
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/xmlrpc.php");
// xmlrpc only supports post requests
curl_setopt($ch, CURLOPT_POST, true);
// return transfear
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// setup post data
$content = array(
  'post_type' => 'post',
  'post_content' => 'This is the post content',
  'post_title' => 'This is the post title',
  'post_status' => 'publish',
);
// parameters are blog_id, username, password and content
$params = array(1, '<user>', '<password>', $content);
$params = xmlrpc_encode_request('wp.newPost', $params);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
// execute the request
curl_exec($ch);
// shutdown curl
curl_close($ch);

Um eine Liste der Posts zu erhalten, die Sie verwenden können wp.getPostsobwohl Sie Posts nicht nach Autor filtern können, könnten Sie jeden Post in der Antwort durchlaufen und prüfen, ob er angezeigt werden soll oder nicht:

// filter used when retrieving posts
$filter = array(
  'post_type' => 'post',
  'post_status' => 'publish',
  'number' => 50,
  'offset' => 0,
  'orderby' => 'post_title',
);
// fields to include in response
$fields = array(
  'post_title',
  'post_author',
  'post_id',
  'post_content',
);
$params = array(1, '<username>', '<password>', $filter, $fields);
$params = xmlrpc_encode_request('wp.getPosts', $params);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
// execute query
$response = curl_exec($ch);
// response is xml
$response = simplexml_load_string($response);
// walk over response and figure out if post should be displayed or not

Ich weiß genug über WP, um es besser zu wissen, als es zu benutzen.

Aber Sie brauchen keines der Dinge, die Sie in Betracht ziehen, zB Nonce, IXR, XML.

Sie schreiben Ihr eigenes PHP-Skript. Ich verstehe nicht, warum Sie ein Remote-Blog-Post-Tool benötigen, wenn Websites von Natur aus remote zugänglich sind. Verwenden Sie zum Beispiel ein Lesezeichen für Ihre WP-Site.

Ich sehe einige mögliche Verwendungen für das Abrufen einer Liste von Beiträgen.

Warum brauchen Sie Sicherheit, um auf Posts zuzugreifen, die für die Öffentlichkeit sichtbar sind?

Skript auf der WP-Site:

header('Content-Type: text/plain; charset=utf-8');
$rows = 0;
$date = date('Y-m-d',strtotime($_GET['date'])) . '00:00:00';
$results=mysqli_query("SELECT`comment_post_ID`,`comment_date`,`comment_content`  
  FROM `wp_comments` WHERE `comment_date` > '$date' 
  ORDER BY `comment_post_ID` ASC,`comment_date` ASC);
while ($pats = mysqli_fetch_array($results, MYSQL_NUM)){
  echo "$row[0]\t$row[1]\r\n";
}
echo "$rows\trows\n";

Zugriff vom Browser:

http://wp_site.com/script.php?date=m/d/y'

Skript, auf das von einem Remote-PHP-Skript zugegriffen wird:

header('Content-Type: text/plain; charset=utf-8');
$data = file_get_contents('http://wp_site.com/script.php?date=m/d/y');
$fp = fopen('posts.csv');
fwrite($fp,$data);
fclose($fp);
echo $data

Wenn Sie keine Kopie der Daten in der Datei speichern möchten

header('Content-Type: text/plain; charset=utf-8');
echo file_get_contents('http://wp_site.com/script.php?date=m/d/y');

1345970cookie-checkWordPress-API-Beitrag einreichen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy