dener misiniz
function custom_404_redirect() {
    if (is_404()) {
        $request_uri = $_SERVER['REQUEST_URI'];
        $path_parts = explode('/', trim($request_uri, '/'));

        $keywords = explode('-', end($path_parts));

        foreach ($keywords as $keyword) {
            $args = array(
                'post_type' => 'post',
                'posts_per_page' => 1,
                'orderby' => 'rand',
                's' => $keyword,
            );

            $query = new WP_Query($args);
            if($query->have_posts()) {
                $query->the_post();
                $redirect_url = get_permalink();
                wp_reset_postdata();
                wp_redirect($redirect_url);
                exit;
            }

            wp_reset_postdata();
        }
    }
}
add_action('template_redirect', 'custom_404_redirect');
veya daha mantıklısı böyle olacaktır düzenleme gerekebilir

function custom_404_redirect($query) {
    if (!$query->is_main_query() || (isset($query->query_vars['name']) && !empty($query->query_vars['name']) && $query->have_posts())) {
        return;
    }

    $request_uri = $_SERVER['REQUEST_URI'];
    $path_parts = explode('/', trim($request_uri, '/'));
    
    $keywords = explode('-', end($path_parts));

    foreach ($keywords as $keyword) {
        $args = array(
            'post_type' => 'post',
            'posts_per_page' => 1,
            'orderby' => 'rand',
            's' => $keyword,
        );

        $query = new WP_Query($args);
        if ($query->have_posts()) {
            $query->the_post();
            $redirect_url = get_permalink();
            wp_reset_postdata();
            wp_redirect($redirect_url);
            exit;
        }

        wp_reset_postdata();
    }
}
add_action('parse_request', 'custom_404_redirect');