将get_results添加到WordPress REST API

我具有自定义功能,可以在其中检索每个帖子所附的guid。现在,我想在WordPress API上添加它。

global $wpdb;

$post_id= $object['id'];
$sql = "SELECT post_content FROM wp_posts WHERE id = $post_id";

$results = $wpdb->get_results($sql);

foreach ($results as $result) {
    $content = $result->post_content;

    $needle = 'gallery_ids="';

    $offset = strpos($content,$needle);

    if($offset>=0){
        $offset += strlen($needle);

        $l = strpos($content,'"',$offset);
        $l -= $offset;
        $content = substr($content,$offset,$l);
        $content = explode(",",$content);
        function filterGuid($var) {return is_numeric($var);}
        $content = array_filter($content,"filterGuid");

        for ($x = 0; $x <= count($content) -1; $x++) {
            $guids = "SELECT guid FROM wp_posts WHERE id IN ('$content[$x]')";
            $gui_results = $wpdb->get_results($guids);

            foreach ($gui_results as $result) {
                echo $result->guid;
            }
        }
    }
}

我应该对其进行哪些更改?感谢您的帮助!

jlx53727 回答:将get_results添加到WordPress REST API

一些帮助您的步骤:

  1. 使用其余api注册功能。将endpoint_group和endpoint替换为要使用的任何值。

add_action( 'rest_api_init','register_function_name' );

function register_function_name() {
    register_rest_route( 'endpoint_group','/endpoint',array(
        'methods' => 'POST',//Whatever Method you want
        'callback' => 'callback_function' //Function to call       
    ));
}
  1. 更改您的函数以返回结果,而不是回显它们。
function callback_function(){

global $wpdb;

$post_id= $object['id']; //Change this to get the data from the api call ex: $post_id = $_POST['id']
$sql = "SELECT post_content FROM wp_posts WHERE id = $post_id";

$results = $wpdb->get_results($sql);

    foreach ($results as $result) {
    $content = $result->post_content;

    $needle = 'gallery_ids="';

    $offset = strpos($content,$needle);

    if($offset>=0){
        $offset += strlen($needle);

        $l = strpos($content,'"',$offset);
        $l -= $offset;
        $content = substr($content,$offset,$l);
        $content = explode(",",$content);
        function filterGuid($var) {return is_numeric($var);}
        $content = array_filter($content,"filterGuid");

        for ($x = 0; $x <= count($content) -1; $x++) {
            $guids = "SELECT guid FROM wp_posts WHERE id IN ('$content[$x]')";
            $gui_results = $wpdb->get_results($guids);

            foreach ($gui_results as $result) {
                $results[] = $result->guid;
            }
        }
    }
    }

   wp_send_json_success($results,200);
}
本文链接:https://www.f2er.com/3137841.html

大家都在问