Ich habe ein IFTTT-Rezept , das gelegentlich Posts für mich erstellt, aber aus irgendeinem seltsamen Grund werden drei, manchmal vier Posts mit demselben Inhalt erstellt.
Ich möchte einen add_action
Hook / Callback hinzufügen, um zu überprüfen, was ein neuer Beitrag sein wird, und, falls er bereits vorhanden ist, den Beitrag abzubrechen oder in den Papierkorb oder ähnliches zu verschieben.
Ich habe das gefunden, xmlrpc_prepare_post
aber ich glaube nicht, dass ich es von dort aus stornieren kann. Es sei denn, ich kann ein Attribut aktualisieren und auf Papierkorb setzen?
Aktualisieren.
Ich habe Folgendes versucht und es gelangt immer nur in den xmlrpc_call, aber niemals in xmlrpc_wp_insert_post_meta. Ich habe sogar einen fest codierten Aufruf von add_filter hinzugefügt (nicht nur für den Fall, dass newPost), und meine Protokolle zeigen niemals eine solche Protokollierungsnachricht an.
Hier ist der Code:
function hueman_xmlrpc_call( $method )
{
error_log("XMLRPC | hueman_xmlrpc_call Method = $method \n" , 3, '/home/.../debug.log');
if( 'wp.newPost' === $method || 'metaWeblog.newPost' === $method )
{
error_log("XMLRPC | hueman_xmlrpc_call method = " . $method . " \n" , 3, '/home/.../debug.log');
add_filter( 'xmlrpc_wp_insert_post_data', 'hueman_xmlrpc_wp_insert_post_data' );
}
}
add_action('xmlrpc_call', 'hueman_xmlrpc_call', 1 );
add_filter( 'xmlrpc_wp_insert_post_data', 'hueman_xmlrpc_wp_insert_post_data' );
function hueman_xmlrpc_wp_insert_post_data( $post_data )
{
error_log("XMLRPC | hueman_xmlrpc_wp_insert_post_data \n" , 3, '/home/.../debug.log');
// Check if the post title exists:
$tmp = get_page_by_title(
$post_data['post_title'],
OBJECT,
$post_data['post_type']
);
if( is_object ( $tmp ) )
{
// Go from 'insert' to 'update' mode within wp_insert_post():
//$post_data['ID'] = $tmp->ID;
$post_data['post_status'] = 'trash';
error_log("XMLRPC | hueman_xmlrpc_wp_insert_post_data I TRASHED IT! \n" , 3, '/home/.../debug.log');
}
return $post_data;
}
In den Protokollen habe ich diese Art von Protokollanweisungen:
XMLRPC | hueman_xmlrpc_call Method = mt.supportedMethods
XMLRPC | hueman_xmlrpc_call Method = metaWeblog.getRecentPosts
XMLRPC | hueman_xmlrpc_call Method = mt.supportedMethods
XMLRPC | hueman_xmlrpc_call Method = metaWeblog.getRecentPosts
XMLRPC | hueman_xmlrpc_call Method = mt.supportedMethods
XMLRPC | hueman_xmlrpc_call Method = metaWeblog.getRecentPosts
XMLRPC | hueman_xmlrpc_call Method = metaWeblog.getCategories
XMLRPC | hueman_xmlrpc_call Method = metaWeblog.newPost
XMLRPC | hueman_xmlrpc_call method = metaWeblog.newPost
Dann werden andere Filter angezeigt, die ich beim Erstellen eines Artikels hinzugefügt habe. Ich weiß, dass ich wahrscheinlich die Artikel dort reparieren werde, aber ich bin sicher, dass diese XMLRPC-Filter / -Aktionen funktionieren sollten.
Aus den Protokollen geht hervor, dass es in die Datei if newPost geht und den Filter 'xmlrpc_wp_insert_post_data' hinzufügt, aber die Funktion hueman_xmlrpc_wp_insert_post_data niemals ausführt ... :(