Stripping von URLs & E-Mail von Post-Einreichungen

Ich möchte verhindern, dass Benutzer in dieser Instanz von WordPress URLs und E-Mails in Posts senden.

Ich versuche es über Regex zu tun, aber ich bin mir nicht sicher, ob ich die Regex falsch schreibe, weil es anscheinend keine URLs entfernt (habe noch keine für E-Mails geschrieben). Kann mir jemand auffallen, was ich falsch mache:

function censor_links( $content ) { return preg_replace( '/^(https?:\/\/)?([\da-z\.-]+)\.([az\.]{2,6})([\/\w \.-]*)*\/?$/', '[LINK NOT SHOWN]', $content ); } add_filter( 'the_content', 'censor_links' ); 

Sollte ich einen Filter auf save_post oder etwas anderes verwenden?

Solutions Collecting From Web of "Stripping von URLs & E-Mail von Post-Einreichungen"

Sie können den the_content ( Klicken Sie hier für weitere Informationen ) verwenden, um den Inhalt beim Rendern des the_content / der Seite zu ändern.

Dies wird ausgetriggers, wenn Post aus der database gelesen wird. Der Post-Inhalt wird also nicht in der database geändert, sondern nur beim Rendern gefiltert.

 add_filter( 'the_content', 'remove_email_and_url_from_post' ); function remove_email_and_url_from_post( $content ) { // Check if we're inside the main loop in a single post page. if ( is_single() && in_the_loop() && is_main_query() ) { // For emails $pattern = "/[^@\s]*@[^@\s]*\.[^@\s]*/"; $replacement = "[removed]"; $content = preg_replace($pattern, $replacement, $content); // For urls $pattern = "/[a-zA-Z]*[:\/\/]*[A-Za-z0-9\-_]+\.+[A-Za-z0-9\.\/%&=\?\-_]+/i"; $replacement = "[removed]"; $content = preg_replace($pattern, $replacement, $content); } return $content; } 

Oder Sie können den content_save_pre Hook verwenden.

Dies wird ausgetriggers, wenn Post in der database gespeichert wird. Dadurch wird der gefilterte Inhalt tatsächlich aus dem Post entfernt und anschließend in der database gespeichert.

 function remove_email_and_url_from_post( $content ) { return $content; $pattern = "/[^@\s]*@[^@\s]*\.[^@\s]*/"; $replacement = "[removed]"; $content = preg_replace($pattern, $replacement, $content); // For urls $pattern = "/[a-zA-Z]*[:\/\/]*[A-Za-z0-9\-_]+\.+[A-Za-z0-9\.\/%&=\?\-_]+/i"; $replacement = "[removed]"; $content = preg_replace($pattern, $replacement, $content); return $content; } add_filter( 'content_save_pre', 'remove_email_and_url_from_post', 10, 1 );