Plugin Directory

Changeset 3295473


Ignore:
Timestamp:
05/17/2025 11:15:04 PM (11 months ago)
Author:
galbc
Message:

Release version 1.0.25

Location:
sapientseo
Files:
6 edited
1 copied

Legend:

Unmodified
Added
Removed
  • sapientseo/tags/1.0.25/inc/api/posts.php

    r3295018 r3295473  
    44}
    55
    6 // 🔹 Shared Field Handler (ACF, categories, tags, SEO)
     6// 🔹 Shared Field Handler (ACF, categories, tags, SEO, featured image)
    77function sapientseo_apply_fields($post_id, $params) {
    88    // ACF fields
     
    4343        }
    4444    }
    45 }
    46 
    47 // Get SEO Fields
     45
     46    // Featured Image
     47    if (!empty($params['featured_image']) && is_numeric($params['featured_image'])) {
     48        set_post_thumbnail($post_id, intval($params['featured_image']));
     49    }
     50}
     51
     52// 🔹 Collect SEO Fields
    4853function sapientseo_collect_seo_fields($post_id) {
    4954    $seo = [];
     
    7176}
    7277
    73 // 🔹 Register REST API Routes
     78// 🔹 Register Routes
    7479add_action('rest_api_init', function () {
    7580    register_rest_route('sapientseo/v1', '/create-post', [
    76         'methods'  => 'POST',
     81        'methods' => 'POST',
    7782        'callback' => 'sapient_seo_create_post',
    78         'permission_callback' => function ($request) {
    79             return sapient_seo_api_key_permission($request);
    80         }
     83        'permission_callback' => fn($request) => sapient_seo_api_key_permission($request),
    8184    ]);
    8285
    8386    register_rest_route('sapientseo/v1', '/update-post', [
    84         'methods'  => 'POST',
     87        'methods' => 'POST',
    8588        'callback' => 'sapient_seo_update_post',
    86         'permission_callback' => function ($request) {
    87             return sapient_seo_api_key_permission($request);
    88         }
     89        'permission_callback' => fn($request) => sapient_seo_api_key_permission($request),
    8990    ]);
    9091
    9192    register_rest_route('sapientseo/v1', '/posts/status', [
    92         'methods'  => 'GET',
     93        'methods' => 'GET',
    9394        'callback' => 'sapient_seo_get_post_status',
    94         'permission_callback' => function ($request) {
    95             return sapient_seo_api_key_permission($request);
    96         }
     95        'permission_callback' => fn($request) => sapient_seo_api_key_permission($request),
    9796    ]);
    9897
    9998    register_rest_route('sapientseo/v1', '/posts', [
    100         'methods'  => 'GET',
     99        'methods' => 'GET',
    101100        'callback' => 'sapient_seo_get_all_posts',
    102         'permission_callback' => function ($request) {
    103             return sapient_seo_api_key_permission($request);
    104         }
     101        'permission_callback' => fn($request) => sapient_seo_api_key_permission($request),
    105102    ]);
    106103
    107104    register_rest_route('sapientseo/v1', '/posts/(?P<id>\d+)', [
    108         'methods'  => 'GET',
     105        'methods' => 'GET',
    109106        'callback' => 'sapient_seo_get_post_details',
    110         'permission_callback' => function ($request) {
    111             return sapient_seo_api_key_permission($request);
    112         }
    113     ]);
     107        'permission_callback' => fn($request) => sapient_seo_api_key_permission($request),
     108    ]);
     109
    114110    register_rest_route('sapientseo/v1', '/publish-post', [
    115         'methods'  => 'POST',
     111        'methods' => 'POST',
    116112        'callback' => 'sapient_seo_quick_publish_post',
    117         'permission_callback' => function ($request) {
    118             return sapient_seo_api_key_permission($request);
    119         }
    120     ]);
     113        'permission_callback' => fn($request) => sapient_seo_api_key_permission($request),
     114    ]);
     115
    121116    register_rest_route('sapientseo/v1', '/delete-post', [
    122         'methods'  => 'POST',
     117        'methods' => 'POST',
    123118        'callback' => 'sapient_seo_delete_post',
    124         'permission_callback' => function ($request) {
    125             return sapient_seo_api_key_permission($request);
    126         }
     119        'permission_callback' => fn($request) => sapient_seo_api_key_permission($request),
    127120    ]);
    128121});
     
    158151            'error'   => 'post_creation_failed',
    159152            'message' => 'Could not create post.',
    160             'status'  => 500
     153            'status'  => 500,
    161154        ]);
    162155    }
     
    194187    }
    195188
    196     if (isset($params['status']) && in_array($params['status'], ['draft', 'publish', 'pending', 'future', 'private', 'trash' ], true)) {
     189    if (isset($params['status']) && in_array($params['status'], ['draft', 'publish', 'pending', 'future', 'private', 'trash'], true)) {
    197190        $post_data['post_status'] = $params['status'];
    198191    }
     
    203196            'error'   => 'post_update_failed',
    204197            'message' => 'Could not update post.',
    205             'status'  => 500
     198            'status'  => 500,
    206199        ]);
    207200    }
     
    222215    return rest_ensure_response([
    223216        'post_id' => $post_id,
    224         'status'  => $status
    225     ]);
    226 }
    227 
    228 // Get All Posts
     217        'status'  => $status,
     218    ]);
     219}
     220
     221// 🔹 Get All Posts
    229222function sapient_seo_get_all_posts(WP_REST_Request $request) {
    230223    header('Cache-Control: no-cache, must-revalidate, max-age=0');
     
    241234        'orderby'                => 'modified',
    242235        'order'                  => 'DESC',
    243         'no_found_rows'          => false, // needed to get found_posts
     236        'no_found_rows'          => false,
    244237        'cache_results'          => false,
    245238        'update_post_meta_cache' => false,
     
    266259
    267260    return rest_ensure_response([
    268         'count'  => count($posts),         // number of posts in this call
    269         'total'  => $query->found_posts,   // total number of matching posts
     261        'count'  => count($posts),
     262        'total'  => $query->found_posts,
    270263        'offset' => $offset,
    271264        'posts'  => $posts,
     
    273266}
    274267
    275 // Get Post Details
     268// 🔹 Get Post Details (includes featured image)
    276269function sapient_seo_get_post_details(WP_REST_Request $request) {
    277270    $post_id = intval($request->get_param('id'));
     
    307300
    308301    return rest_ensure_response([
    309         'id'           => $post_id,
    310         'title'        => html_entity_decode(get_the_title($post)),
    311         'content'      => html_entity_decode(apply_filters('the_content', $post->post_content)),
    312         'excerpt'      => html_entity_decode(get_the_excerpt($post)),
    313         'status'       => $post->post_status,
    314         'post_type'    => $post->post_type,
    315         'slug'         => $post->post_name,
    316         'url'          => get_permalink($post_id),
    317         'created_at'   => get_the_date('c', $post),
    318         'modified_at'  => get_post_modified_time('c', true, $post),
    319         'acf'          => $acf,
    320         'seo'          => $seo,
    321         'categories'   => $categories,
    322         'tags'         => $tags,
    323     ]);
    324 }
    325 
    326 // 🔹 Quick Publish Post
     302        'id'             => $post_id,
     303        'title'          => html_entity_decode(get_the_title($post)),
     304        'content'        => html_entity_decode(apply_filters('the_content', $post->post_content)),
     305        'excerpt'        => html_entity_decode(get_the_excerpt($post)),
     306        'status'         => $post->post_status,
     307        'post_type'      => $post->post_type,
     308        'slug'           => $post->post_name,
     309        'url'            => get_permalink($post_id),
     310        'created_at'     => get_the_date('c', $post),
     311        'modified_at'    => get_post_modified_time('c', true, $post),
     312        'acf'            => $acf,
     313        'seo'            => $seo,
     314        'categories'     => $categories,
     315        'tags'           => $tags,
     316        'featured_image' => get_the_post_thumbnail_url($post_id, 'full') ?? '',
     317    ]);
     318}
     319
     320// 🔹 Quick Publish
    327321function sapient_seo_quick_publish_post(WP_REST_Request $request) {
    328322    $post_id = intval($request->get_param('post_id'));
     
    342336            'error' => 'publish_failed',
    343337            'message' => 'Could not publish post.',
    344             'status' => 500
     338            'status' => 500,
    345339        ]);
    346340    }
     
    357351    }
    358352
    359     $result = wp_delete_post($post_id, true); // `true` = force delete
     353    $result = wp_delete_post($post_id, true);
    360354
    361355    if (!$result) {
     
    363357            'error' => 'delete_failed',
    364358            'message' => 'Could not delete post.',
    365             'status' => 500
     359            'status' => 500,
    366360        ]);
    367361    }
  • sapientseo/tags/1.0.25/readme.txt

    r3295018 r3295473  
    44Tested up to: 6.8
    55Requires PHP: 7.4
    6 Stable tag: 1.0.24
     6Stable tag: 1.0.25
    77License: GPLv2 or later
    88License URI: https://www.gnu.org/licenses/gpl-2.0.html
  • sapientseo/tags/1.0.25/sapientseo.php

    r3295018 r3295473  
    33 * Plugin Name: SapientSEO
    44 * Description: Connect your WordPress site to SapientSEO using secure custom REST API endpoints.
    5  * Version: 1.0.24
     5 * Version: 1.0.25
    66 * Author: SapientSEO
    77 * Plugin URI: https://sapientseo.ai
  • sapientseo/trunk/inc/api/posts.php

    r3295018 r3295473  
    44}
    55
    6 // 🔹 Shared Field Handler (ACF, categories, tags, SEO)
     6// 🔹 Shared Field Handler (ACF, categories, tags, SEO, featured image)
    77function sapientseo_apply_fields($post_id, $params) {
    88    // ACF fields
     
    4343        }
    4444    }
    45 }
    46 
    47 // Get SEO Fields
     45
     46    // Featured Image
     47    if (!empty($params['featured_image']) && is_numeric($params['featured_image'])) {
     48        set_post_thumbnail($post_id, intval($params['featured_image']));
     49    }
     50}
     51
     52// 🔹 Collect SEO Fields
    4853function sapientseo_collect_seo_fields($post_id) {
    4954    $seo = [];
     
    7176}
    7277
    73 // 🔹 Register REST API Routes
     78// 🔹 Register Routes
    7479add_action('rest_api_init', function () {
    7580    register_rest_route('sapientseo/v1', '/create-post', [
    76         'methods'  => 'POST',
     81        'methods' => 'POST',
    7782        'callback' => 'sapient_seo_create_post',
    78         'permission_callback' => function ($request) {
    79             return sapient_seo_api_key_permission($request);
    80         }
     83        'permission_callback' => fn($request) => sapient_seo_api_key_permission($request),
    8184    ]);
    8285
    8386    register_rest_route('sapientseo/v1', '/update-post', [
    84         'methods'  => 'POST',
     87        'methods' => 'POST',
    8588        'callback' => 'sapient_seo_update_post',
    86         'permission_callback' => function ($request) {
    87             return sapient_seo_api_key_permission($request);
    88         }
     89        'permission_callback' => fn($request) => sapient_seo_api_key_permission($request),
    8990    ]);
    9091
    9192    register_rest_route('sapientseo/v1', '/posts/status', [
    92         'methods'  => 'GET',
     93        'methods' => 'GET',
    9394        'callback' => 'sapient_seo_get_post_status',
    94         'permission_callback' => function ($request) {
    95             return sapient_seo_api_key_permission($request);
    96         }
     95        'permission_callback' => fn($request) => sapient_seo_api_key_permission($request),
    9796    ]);
    9897
    9998    register_rest_route('sapientseo/v1', '/posts', [
    100         'methods'  => 'GET',
     99        'methods' => 'GET',
    101100        'callback' => 'sapient_seo_get_all_posts',
    102         'permission_callback' => function ($request) {
    103             return sapient_seo_api_key_permission($request);
    104         }
     101        'permission_callback' => fn($request) => sapient_seo_api_key_permission($request),
    105102    ]);
    106103
    107104    register_rest_route('sapientseo/v1', '/posts/(?P<id>\d+)', [
    108         'methods'  => 'GET',
     105        'methods' => 'GET',
    109106        'callback' => 'sapient_seo_get_post_details',
    110         'permission_callback' => function ($request) {
    111             return sapient_seo_api_key_permission($request);
    112         }
    113     ]);
     107        'permission_callback' => fn($request) => sapient_seo_api_key_permission($request),
     108    ]);
     109
    114110    register_rest_route('sapientseo/v1', '/publish-post', [
    115         'methods'  => 'POST',
     111        'methods' => 'POST',
    116112        'callback' => 'sapient_seo_quick_publish_post',
    117         'permission_callback' => function ($request) {
    118             return sapient_seo_api_key_permission($request);
    119         }
    120     ]);
     113        'permission_callback' => fn($request) => sapient_seo_api_key_permission($request),
     114    ]);
     115
    121116    register_rest_route('sapientseo/v1', '/delete-post', [
    122         'methods'  => 'POST',
     117        'methods' => 'POST',
    123118        'callback' => 'sapient_seo_delete_post',
    124         'permission_callback' => function ($request) {
    125             return sapient_seo_api_key_permission($request);
    126         }
     119        'permission_callback' => fn($request) => sapient_seo_api_key_permission($request),
    127120    ]);
    128121});
     
    158151            'error'   => 'post_creation_failed',
    159152            'message' => 'Could not create post.',
    160             'status'  => 500
     153            'status'  => 500,
    161154        ]);
    162155    }
     
    194187    }
    195188
    196     if (isset($params['status']) && in_array($params['status'], ['draft', 'publish', 'pending', 'future', 'private', 'trash' ], true)) {
     189    if (isset($params['status']) && in_array($params['status'], ['draft', 'publish', 'pending', 'future', 'private', 'trash'], true)) {
    197190        $post_data['post_status'] = $params['status'];
    198191    }
     
    203196            'error'   => 'post_update_failed',
    204197            'message' => 'Could not update post.',
    205             'status'  => 500
     198            'status'  => 500,
    206199        ]);
    207200    }
     
    222215    return rest_ensure_response([
    223216        'post_id' => $post_id,
    224         'status'  => $status
    225     ]);
    226 }
    227 
    228 // Get All Posts
     217        'status'  => $status,
     218    ]);
     219}
     220
     221// 🔹 Get All Posts
    229222function sapient_seo_get_all_posts(WP_REST_Request $request) {
    230223    header('Cache-Control: no-cache, must-revalidate, max-age=0');
     
    241234        'orderby'                => 'modified',
    242235        'order'                  => 'DESC',
    243         'no_found_rows'          => false, // needed to get found_posts
     236        'no_found_rows'          => false,
    244237        'cache_results'          => false,
    245238        'update_post_meta_cache' => false,
     
    266259
    267260    return rest_ensure_response([
    268         'count'  => count($posts),         // number of posts in this call
    269         'total'  => $query->found_posts,   // total number of matching posts
     261        'count'  => count($posts),
     262        'total'  => $query->found_posts,
    270263        'offset' => $offset,
    271264        'posts'  => $posts,
     
    273266}
    274267
    275 // Get Post Details
     268// 🔹 Get Post Details (includes featured image)
    276269function sapient_seo_get_post_details(WP_REST_Request $request) {
    277270    $post_id = intval($request->get_param('id'));
     
    307300
    308301    return rest_ensure_response([
    309         'id'           => $post_id,
    310         'title'        => html_entity_decode(get_the_title($post)),
    311         'content'      => html_entity_decode(apply_filters('the_content', $post->post_content)),
    312         'excerpt'      => html_entity_decode(get_the_excerpt($post)),
    313         'status'       => $post->post_status,
    314         'post_type'    => $post->post_type,
    315         'slug'         => $post->post_name,
    316         'url'          => get_permalink($post_id),
    317         'created_at'   => get_the_date('c', $post),
    318         'modified_at'  => get_post_modified_time('c', true, $post),
    319         'acf'          => $acf,
    320         'seo'          => $seo,
    321         'categories'   => $categories,
    322         'tags'         => $tags,
    323     ]);
    324 }
    325 
    326 // 🔹 Quick Publish Post
     302        'id'             => $post_id,
     303        'title'          => html_entity_decode(get_the_title($post)),
     304        'content'        => html_entity_decode(apply_filters('the_content', $post->post_content)),
     305        'excerpt'        => html_entity_decode(get_the_excerpt($post)),
     306        'status'         => $post->post_status,
     307        'post_type'      => $post->post_type,
     308        'slug'           => $post->post_name,
     309        'url'            => get_permalink($post_id),
     310        'created_at'     => get_the_date('c', $post),
     311        'modified_at'    => get_post_modified_time('c', true, $post),
     312        'acf'            => $acf,
     313        'seo'            => $seo,
     314        'categories'     => $categories,
     315        'tags'           => $tags,
     316        'featured_image' => get_the_post_thumbnail_url($post_id, 'full') ?? '',
     317    ]);
     318}
     319
     320// 🔹 Quick Publish
    327321function sapient_seo_quick_publish_post(WP_REST_Request $request) {
    328322    $post_id = intval($request->get_param('post_id'));
     
    342336            'error' => 'publish_failed',
    343337            'message' => 'Could not publish post.',
    344             'status' => 500
     338            'status' => 500,
    345339        ]);
    346340    }
     
    357351    }
    358352
    359     $result = wp_delete_post($post_id, true); // `true` = force delete
     353    $result = wp_delete_post($post_id, true);
    360354
    361355    if (!$result) {
     
    363357            'error' => 'delete_failed',
    364358            'message' => 'Could not delete post.',
    365             'status' => 500
     359            'status' => 500,
    366360        ]);
    367361    }
  • sapientseo/trunk/readme.txt

    r3295018 r3295473  
    44Tested up to: 6.8
    55Requires PHP: 7.4
    6 Stable tag: 1.0.24
     6Stable tag: 1.0.25
    77License: GPLv2 or later
    88License URI: https://www.gnu.org/licenses/gpl-2.0.html
  • sapientseo/trunk/sapientseo.php

    r3295018 r3295473  
    33 * Plugin Name: SapientSEO
    44 * Description: Connect your WordPress site to SapientSEO using secure custom REST API endpoints.
    5  * Version: 1.0.24
     5 * Version: 1.0.25
    66 * Author: SapientSEO
    77 * Plugin URI: https://sapientseo.ai
Note: See TracChangeset for help on using the changeset viewer.