The pre_post_{$field} WordPress PHP filter allows you to modify the value of a specific post field before it is saved to the database.
Usage
add_filter('pre_post_{$field}', 'my_custom_pre_post_field_filter', 10, 2);
function my_custom_pre_post_field_filter($value, $post_id) {
// your custom code here
return $value;
}
Parameters
- $value (mixed) – The value of the post field.
- $post_id (int) – The ID of the post being modified.
More information
See WordPress Developer Resources: pre_post_{$field}
Examples
Modify the post title
In this example, we will prepend “My Prefix: ” to the post title before saving it.
add_filter('pre_post_title', 'my_custom_pre_post_title_filter', 10, 2);
function my_custom_pre_post_title_filter($title, $post_id) {
$title = "My Prefix: " . $title;
return $title;
}
Sanitize the post content
In this example, we will remove any HTML tags from the post content.
add_filter('pre_post_content', 'my_custom_pre_post_content_filter', 10, 2);
function my_custom_pre_post_content_filter($content, $post_id) {
$content = strip_tags($content);
return $content;
}
Set a default value for the post excerpt
In this example, we will set a default value for the post excerpt if it is empty.
add_filter('pre_post_excerpt', 'my_custom_pre_post_excerpt_filter', 10, 2);
function my_custom_pre_post_excerpt_filter($excerpt, $post_id) {
if (empty($excerpt)) {
$excerpt = 'This is the default excerpt.';
}
return $excerpt;
}
Modify the post status
In this example, we will change the post status to “draft” if the post title contains the word “Draft”.
add_filter('pre_post_status', 'my_custom_pre_post_status_filter', 10, 2);
function my_custom_pre_post_status_filter($status, $post_id) {
$post_title = get_post_field('post_title', $post_id);
if (strpos($post_title, 'Draft') !== false) {
$status = 'draft';
}
return $status;
}
Modify the post author
In this example, we will change the post author to a specific user with ID 5 if the post title starts with “Guest:”.
add_filter('pre_post_author', 'my_custom_pre_post_author_filter', 10, 2);
function my_custom_pre_post_author_filter($author, $post_id) {
$post_title = get_post_field('post_title', $post_id);
if (substr($post_title, 0, 6) === 'Guest:') {
$author = 5;
}
return $author;
}