Отображение данных с определенным параметром в запросе WordPress

#php #wordpress #wp-api

#php #wordpress #wp-api

Вопрос:

там у меня есть profile_driver , я хочу, чтобы эти данные отображались при первом вводе параметра. пример ввода ‘id’

 $command = $_GET['command'];
switch ($command) {
    case 'profile_driver':
    if(!empty($_REQUEST['id'])) {
           $data = array( "api_status" => 0, "api_message" => "cant Find data");
           echo  json_encode($data);
        } else {
           $loop = new WP_Query( 
                array(
                        'post_type'    => 'drivers'
                    )
                ); 
            if( $loop->have_posts() ) :

                $data = array( "api_status" => 1, "api_message" => "success");
                $meta = array();
                while ( $loop->have_posts() ) : $loop->the_post();

                    $meta[] = array(
                        "id"         => get_the_ID(),
                        "post_name"  => get_the_title(),
                        "username"      => get_post_meta( get_the_ID(), 'username', true ),
                        "password"      => get_post_meta( get_the_ID(), 'password', true ),
                        "email"      => get_post_meta( get_the_ID(), 'email', true ),
                        "phone"      => get_post_meta( get_the_ID(), 'phone', true ),
                    );

                endwhile;
            endif;

            echo  json_encode($meta);
        }
break;
}
  

здесь, когда я пытаюсь запустить в postman (у меня есть данные с правильным идентификатором) :

здесь

может ли кто-нибудь помочь мне улучшить мой код, чтобы он мог работать так, как я хочу?

Ответ №1:

Вам нужно поставить if условие после этой строки case 'profile_driver': , прежде чем возвращать данные веб-сервису.

Попробуйте сбросить, var_dump($_REQUEST) чтобы проверить, есть ли параметр id в запросе или нет OR , он пуст.

 if(!empty($_REQUEST['id'])) {
   echo 'Please enter id';
} else {
   // your rest of the code goes here
}
  

Также вам нужно изменить цикл.

 $data = array("api_status" => 1, "api_message" => "success", "result" => "");
if( $loop->have_posts() ) :
    while($loop->have_posts()) : $loop->the_post();
        $data['result'][] = array(
            "id"        => get_the_ID(),
            "post_name" => get_the_title(),
            "username"  => get_post_meta(get_the_ID(), 'username', true),
            "password"  => get_post_meta(get_the_ID(), 'password', true),
            "email"     => get_post_meta(get_the_ID(), 'email', true),
            "phone"     => get_post_meta(get_the_ID(), 'phone', true),
        );
    endwhile;
endif;
echo  json_encode($data);
  

Комментарии:

1. оке, он может получить идентификатор, но я все еще получаю неправильный ответ, вы можете мне помочь? проверьте мой скрипт редактирования, спасибо, или я все еще неправильно его размещаю?

2. @AdamProjo похоже, что ваш файл содержит var_dump найдите var_dump и удалите его. затем вы получите правильный ответ в формате json.