Zuerst. Unter der Annahme, dass das $_POST['enablog_post_options']
ein Array ist, sollte es als ein Array bereinigt werden, wobei jedes einzelne Element in einer Schleife durchlaufen wird. Nicht als String, alle Elemente gleichzeitig.
Schauen Sie also in Ihr enablog_post_options
Array und entscheiden Sie sich für ein datenartabhängiges Reinigungsverfahren für jedes Element. WP Codex kann helfen beginnend damit.
Jetzt. Da Sie verstehen, welche Datentypen Sie wirklich zu desinfizieren sind, vermute ich, dass es die update_post_meta()
integrierten Sanierungsmaßnahmen & benutzerdefinierte Filter sind, die Sie an die Funktion anschließen können.
So kann jeder den Code der update_metadata()
Funktion nachschlagen, die das schwere Anheben für update_post_meta()
here in the Core Metadata API source code durchführt.
Aber in der Zwischenzeit, es reinigt:
- Meta-Taste mit
sanitize_key()
und wp_unslash()
;
- Meta-Wert mit
wp_unslash()
und sanitize_meta()
(mehr Erklärung zu diesem folgt).
- Datenbank speichern Abfrage mit
wpdb::prepare()
aufgerufen von update_metadata()
->wpdb::update()
;
Sanitize mit sanitize_meta()
.
Die bequeme Möglichkeit, das [benutzerdefinierte] Post-Meta zusätzlich zu bereinigen, ist über sanitize_meta()
. Die update_metadata()
hakt bereits den potenziell vorhandenen benutzerdefinierten Bereinigungsfilter, den Sie erstellen müssen, in den Prozess der Meta-Feldbereinigung ein.Dies geschieht über sanitize_meta()
.
Es ist aus update_metadata()
wie folgt aufgerufen mit allen Post Meta-Parameter:
$meta_value = sanitize_meta($meta_key, $meta_value, $meta_type);
So können Sie nur eine benutzerdefinierte sanitization Filter machen mit Ihrem Beitrag meta so zu arbeiten (das Beispiel von WP Codex sanitize_meta()
Beschreibung der Link oben):
// --- sanitize_meta() call is commented out because it is called from update_metadata()
// $clean_value = sanitize_meta('birth-year', $user_input, 'user');
function sanitize_birth_year_meta($year) {
$now = date('Y');
$then = $now - 115; // No users older than 115.
if ($then > $year || $year > $now) {
wp_die('Invalid entry, go back and try again.');
}
return $year;
}
add_filter('sanitize_user_meta_birth-year', 'sanitize_birth_year_meta');
mit einigem imagnary Code fortsetzen, in sanitize_birth_year_meta()
statt $year
werden Sie Ihren $data
Inhalt bekommen zu bekommen Bereinigt, wenn der Filter aufgerufen wird.
Sanitize_text_field beschädigt alle meinen Code (alle Kontrollkästchen werden überprüft, wenn ich Post speichern), IMHO brauche ich mehr als nur sanitize_text_field, weil $ _POST ['enablog_post_options'] Kontrollkästchen, Textfelder und mehr hat. – Netshad