Удаление URL-адресов и электронной почты от сообщений

Я хочу запретить пользователям размещать в этом экземпляре WordPress от отправки URL-адресов и писем в сообщениях.

Я пытаюсь сделать это через Regex, но я не уверен, что неправильно пишу Regex, потому что он, похоже, не зачищает никаких URL-адресов (пока еще не написал письмо для сообщений электронной почты). Может ли кто-нибудь определить, что я делаю неправильно:

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

Должен ли я использовать фильтр на save_post или что-то еще?

Вы можете использовать the_content ( Щелкните здесь для получения дополнительной информации ), чтобы изменить контент при рендеринге сообщения / страницы.

Это будет срабатывать при чтении Post из базы данных. Таким образом, пост-контент не будет изменен в базе данных, а только отфильтрован при рендеринге.

 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; } 

Или же вы можете использовать content_save_pre .

Это будет срабатывать при сохранении записи в базе данных. Таким образом, это фактически удалит отфильтрованный контент из сообщения, а затем сохранит его в базе данных.

 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 );