WordPress sanitize Reihe?

Ich habe ein benutzerdefiniertes Postformular, das Daten an eine Seite sendet, die wp_insert_post verwendet, um einen Post zu erstellen. Ich kann die meisten Daten leicht bereinigen, aber ich habe einige Probleme mit meinen Tags, die ich in einem Array abrufe:

$tags = $_POST['tags']; 

Wie kann ich vor der Verwendung dieser Tags als “tags_input” alle Namen erfolgreich bereinigen?

Vielen Dank!

Solutions Collecting From Web of "WordPress sanitize Reihe?"

Hier ist eine Möglichkeit, dies mit der Array-Map- function von PHP zu tun:

 // Good idea to make sure things are set before using them $tags = isset( $_POST['tags'] ) ? (array) $_POST['tags'] : array(); // Any of the WordPress data sanitization functions can be used here $tags = array_map( 'esc_attr', $tags ); 

Wenn jemand interessiert ist, habe ich es so getriggers:

  $tags = $_POST['tags']; if (count($tags) > 5){ echo 'Niet meer dan 5 tags'; $stop = true; } if (is_array($tags)) { foreach ($tags as &$tag) { $tag = esc_attr($tag); } unset($tag ); } else { $tags = esc_attr($tags); } 

Ich brauchte eine rekursive Sanierung, also hier ist meine Lösung:

 /** * Recursive sanitation for an array * * @param $array * * @return mixed */ function recursive_sanitize_text_field($array) { foreach ( $array as $key => &$value ) { if ( is_array( $value ) ) { $value = recursive_sanitize_text_field($value); } else { $value = sanitize_text_field( $value ); } } return $array; } 

Sie können diese function für fast alle Fälle verwenden.

 /** * Recursive sanitation for text or array * * @param $array_or_string (array|string) * @since 0.1 * @return mixed */ function sanitize_text_or_array_field($array_or_string) { if( is_string($array_or_string) ){ $array_or_string = sanitize_text_field($array_or_string); }elseif( is_array($array_or_string) ){ foreach ( $array_or_string as $key => &$value ) { if ( is_array( $value ) ) { $value = sanitize_text_or_array_field($value); } else { $value = sanitize_text_field( $value ); } } } return $array_or_string; }