Ich schreibe ein Plugin, das alle Beiträge moderiert, unabhängig davon, auf welcher Ebene der Benutzer sie gepostet hat. Der Inhalt und der Titel des Beitrags werden anhand einer Liste von Wörtern überprüft. Wenn sich Beiträge im Beitrag befinden, möchte ich den Beitrag in die Moderationswarteschlange stellen, als ob er von einem Mitwirkenden gepostet worden wäre. Dieser Teil funktioniert gut, aber ich möchte auch, dass Beiträge mit wirklich schlechten Worten automatisch gelöscht werden. So habe ich es derzeit:
function filter_handler( $data , $postarr ) {
// Get vars from data
$content = $data['post_content'];
$title = $data['post_title'];
// Array of words that will hold a post for aproval
$badWords = array(
"link=", "content-type", "bcc:", "cc:", "document.cookie",
"onclick", "onload", "javascript"
);
$reallyBadWords = array(
"query", "pluginTesting"
);
// If bad words exist in post, set post_status to pending
foreach ( $badWords as $word ) {
if (
strpos( strtolower( $content ), strtolower( $word ) ) ||
strpos( strtolower( $title ), strtolower( $word ) )
) {
$data['post_status'] = "pending";
}
}
// If really bad words exist, delete post
foreach ( $reallyBadWords as $word ) {
if (
strpos( strtolower( $content ), strtolower( $word ) ) ||
strpos( strtolower( $title ), strtolower( $word ) )
) {
$data['post_status'] = 'trash';
}
}
return $data;
}
add_filter( 'wp_insert_post_data', 'filter_handler', '99', 2 );
Dies funktioniert für die regulären Wörter, erfordert jedoch zwei wirklich schlechte Wörter, um einen Beitrag in den Papierkorb zu setzen. Wenn ein Benutzer mit dieser Methode einen Beitrag mit wirklich schlechten Wörtern veröffentlicht, wird er auf eine Fehlerseite weitergeleitet, auf der er darüber informiert wird, dass er keine Beiträge im Papierkorb bearbeiten darf.
Was wäre ein guter Weg, um dies zu beheben, damit Benutzer zurück zur Beitragsseite geschickt werden und eine Fehlermeldung angezeigt wird, die sie darüber informiert, dass ihr Beitrag gelöscht wurde?
Wie kann ich außerdem die Tatsache beheben, dass vor dem Löschen zwei wirklich schlechte Wörter erforderlich sind?