add_action(‘rest_api_init’, function() {
register_rest_route(‘zeevou/v1’, ‘/update-post’, [
‘methods’ => ‘POST’,
‘callback’ => function($request) {
// Security check
if ($request[‘secret’] !== ‘zeevou-create-post-2026’) {
return new WP_Error(‘unauthorized’, ‘Invalid secret’, [‘status’ => 401]);
}
// Get the post ID
$post_id = $request[‘post_id’];
if (!$post_id) {
return new WP_Error(‘missing_id’, ‘Post ID is required’, [‘status’ => 400]);
}
// Check if post exists
$existing_post = get_post($post_id);
if (!$existing_post) {
return new WP_Error(‘not_found’, ‘Post not found’, [‘status’ => 404]);
}
// Prepare update data
$post_data = [
‘ID’ => $post_id,
];
if ($request[‘title’]) {
$post_data[‘post_title’] = $request[‘title’];
}
if ($request[‘content’]) {
$post_data[‘post_content’] = $request[‘content’];
}
if ($request[‘slug’]) {
$post_data[‘post_name’] = $request[‘slug’];
}
if ($request[‘excerpt’]) {
$post_data[‘post_excerpt’] = $request[‘excerpt’];
}
if ($request[‘status’]) {
$post_data[‘post_status’] = $request[‘status’];
}
// Update the post
$result = wp_update_post($post_data, true);
if (is_wp_error($result)) {
return $result;
}
// Update Yoast meta if provided
if ($request[‘yoast_focuskw’]) {
update_post_meta($post_id, ‘_yoast_wpseo_focuskw’, $request[‘yoast_focuskw’]);
}
if ($request[‘yoast_metadesc’]) {
update_post_meta($post_id, ‘_yoast_wpseo_metadesc’, $request[‘yoast_metadesc’]);
}
return [
‘success’ => true,
‘post_id’ => $post_id,
‘post_type’ => get_post_type($post_id),
‘slug’ => get_post_field(‘post_name’, $post_id),
‘url’ => get_permalink($post_id)
];
},
‘permission_callback’ => ‘__return_true’
]);
// Also add endpoint to delete posts
register_rest_route(‘zeevou/v1’, ‘/delete-post’, [
‘methods’ => ‘POST’,
‘callback’ => function($request) {
if ($request[‘secret’] !== ‘zeevou-create-post-2026’) {
return new WP_Error(‘unauthorized’, ‘Invalid secret’, [‘status’ => 401]);
}
$post_id = $request[‘post_id’];
if (!$post_id) {
return new WP_Error(‘missing_id’, ‘Post ID is required’, [‘status’ => 400]);
}
$force = $request[‘force’] ?? false;
$result = wp_delete_post($post_id, $force);
if (!$result) {
return new WP_Error(‘delete_failed’, ‘Failed to delete post’, [‘status’ => 500]);
}
return [
‘success’ => true,
‘post_id’ => $post_id,
‘deleted’ => true
];
},
‘permission_callback’ => ‘__return_true’
]);
// Endpoint to find posts by slug
register_rest_route(‘zeevou/v1’, ‘/find-post’, [
‘methods’ => ‘GET’,
‘callback’ => function($request) {
$slug = $request[‘slug’];
$post_type = $request[‘post_type’] ?? ‘post’;
if (!$slug) {
return new WP_Error(‘missing_slug’, ‘Slug is required’, [‘status’ => 400]);
}
$posts = get_posts([
‘name’ => $slug,
‘post_type’ => $post_type,
‘post_status’ => ‘any’,
‘numberposts’ => 10
]);
$results = [];
foreach ($posts as $post) {
$results[] = [
‘id’ => $post->ID,
‘title’ => $post->post_title,
‘slug’ => $post->post_name,
‘status’ => $post->post_status,
‘url’ => get_permalink($post->ID),
‘post_type’ => $post->post_type
];
}
return [
‘found’ => count($results),
‘posts’ => $results
];
},
‘permission_callback’ => ‘__return_true’
]);
});