it-swarm.com.de

Erstellen Sie einen neuen Post in WordPress mit XML-RPC mit der richtigen GUID?

Wenn ich XML-RPC verwende, um einen neuen Beitrag anstelle von wp_insert_post zu erstellen, wird der Beitrag mit einer falschen Guid/URL erstellt. Bei XML-RPC wird die GUID mit der ID not slug erstellt.

// Input data
$my_page = array();
$my_page["post_title"] = $alternatename_main;
$my_page["post_content"] = $postcontent;
$my_page["post_excerpt"] = $postexcerpt;
$my_page["post_status"] = "publish";
$my_page["post_date"] = date("Y-m-d H:i:s");
$my_page["post_author"] = 1;
$my_page['post_type'] = 'post';
$my_page["post_name"] = "test1234";

// Local insert
$my_page_id = wp_insert_post($my_page);
$wp_post_data = get_post($my_page_id);
$wp_guid = $wp_post_data->guid;

Ergebnis: $ wp_guid = http: // test/site/test1234/

// Insert XML-RPC
include_once( ABSPATH . WPINC . '/class-IXR.php' );
include_once( ABSPATH . WPINC . '/class-wp-http-ixr-client.php' );

$client = new WP_HTTP_IXR_Client('http://test/site/xmlrpc.php');

$client -> debug = true; //optional but useful

$username = "yyyyyy";
$password = "xxxxxx";
$params = array(0,$username,$password,$my_page);

$clientresult = $client->query('wp.newPost', $params);

$my_page_id = $client->getResponse();

$wp_guid = get_the_guid($my_page_id);

Ergebnis: $ wp_guid = http: // test/site /? P = 12721

Ich habe getestet:

$wp_post_data = get_post($my_page_id);
$wp_slug = $wp_post_data->post_name;

$my_page_update = array();
$my_page_update["guid"] = "http://test/site/".$wp_slug."/";
$params = array(0,$username,$password,$my_page_id,$my_page_update);
$clientresult = $client->query('wp.editPost', $params);

Aber es funktioniert nicht.

Die einzige Lösung, die ich finden kann, ist die Verwendung von Raw-SQL:

UPDATE wp_posts SET guid='"http://test/site/".$wp_slug."/"' WHERE ID=".$my_page_id .";

Ich kann keinen Grund erkennen, warum der Beitrag mit einer anderen GUID erstellt wurde. Beide Beiträge werden mit dem richtigen Slug erstellt. Ein Fehler in wp.newPost? Hat jemand eine Antwort? Der Test wird auf der gleichen WordPress-Installation durchgeführt.

2
Torre

Dies ist ein ärgerliches Problem, aber es gibt eine Möglichkeit, den richtigen Link zu finden, wenn ich dies tue:

$my_page_ask = array( 'link', 'guid' );
$params = array(0,$username,$password,$my_page_id, $my_page_ask);
$clientresult = $client->query('wp.getPost', $params);
$post = $client->getResponse();

Der String-Link enthält den richtigen Permalink, wenn:

$my_page["post_status"] = "publish";

Der Entwurf wird nicht bearbeitet, und die Zeichenfolgenführung enthält immer noch den falschen Wert.

1
Torre