Posted on

Indexing custom post statuses

If you’re using custom post statuses, Relevanssi requires some tinkering. By default, Relevanssi only handles posts that are of status publish, pending, draft or private.

Relevanssi has a filter that lets you add more statuses to the list of acceptable statuses for Relevanssi:

function rlv_add_status($status_array) {
    $status_array[] = "new_status";
    return $status_array;
}
add_filter('relevanssi_valid_status', 'rlv_add_status');
add_filter('relevanssi_valid_admin_status', 'rlv_add_status');

This function, added to the two filters, makes Relevanssi accept the status new_status.

You also need to let search know that it’s ok to show these posts to users:

add_filter('relevanssi_post_ok', 'rlv_allow_custom_status', 11, 2);
function rlv_allow_custom_status($post_ok, $post_id) {
    $status = relevanssi_get_post_status($post_id);
    if ($status == 'new_status') $post_ok = true;
    return $post_ok;
}

With these functions in the theme functions.php, Relevanssi will now work with the status new_status.