Я новичок в кодировании с функциями / PHP / cURL. Я думаю, что я застрял на синтаксис и лучший способ продвинуться с блоком кода, который у меня есть. Проще говоря, я хочу использовать созданный пользователем параметр шорткода для сопоставления заданного значения с заранее определенным массивом значений. Итак, вот моя функция шорткода:
function reviews_shortcode( $atts ) {
$args = shortcode_atts(
array(
'limit' => '',
'source' => '',
'lawyer' => '',
), $atts);
if($source == 'avvo'){
$avvoReviews = getAvvoReviews($limit);
foreach ($lawyer as $lawyerID) {
$lawyerID = $lawyer[array(
'craig' => '1238946',
'spencer' => '1242526',)];}
return $avvoReviews;
}
add_shortcode('reviews', 'reviews_shortcode');
Таким образом, шорткод будет:
[reviews limit="1" source="avvo" lawyer="craig"]
Это своего рода шаг 1, на котором я застрял.
Цель состоит в том, что когда пользователь вставляет «criag», код выдает $ lawyerID как 1238946, который затем используется функцией cURL для возврата всех отзывов об этом юристе с Avvo.com, а $ limit — целое число, используемое для определить, сколько отзывов пройти.
Вот и все остальное:
// Get Avvo Reviews
function getReviews($lawyerID) {
$ch = curl_init();
$access_token = '###';
$headers = array(
'Content-Type: application/json',
sprintf('Authorization: Bearer %s', $access_token)
);
curl_setopt($ch, CURLOPT_URL, 'https://api.avvo.com/api/4/reviews.json?lawyer_id=' . $lawyerID);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
curl_close($ch);
$dataSet = json_decode($response);
return $dataSet;
} // End of Get Avvo Review
// Get Lawyer Name by Lawyer ID
function getLawyerName($lawyerID) {
$ch = curl_init();
$access_token = '###';
$headers = array(
'Content-Type: application/json',
sprintf('Authorization: Bearer %s', $access_token)
);
curl_setopt($ch, CURLOPT_URL, 'https://api.avvo.com/api/4/lawyers.json?id='. $lawyerID);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
curl_close($ch);
$dataSet = json_decode($response);
return $dataSet->lawyers[0]->firstname . ' ' .
$dataSet->lawyers[0]->middlename . ' ' .
$dataSet->lawyers[0]->lastname;
} // End of get Lawyer Name by ID
// Display Avvo Reviews
function getAvvoReviews($limit) {
$lawyerIDs = array();
$output = '<div class="avvo-reviews">';
foreach ($lawyerIDs as $lawyerID) {
$nameOfLawyer = getLawyerName($lawyerID);
$reviews = getReviews($lawyerID);
$reviews = $reviews->reviews;
$counter = 1;
foreach ($reviews as $review) {
if($review->rating >= 5) {
$output .= '<p class="avvo-reviews">';
$output .= '<h5 class="review-title"> ' . $review->title . '</h5>';
$output .= '<span class="lawyer-name">Attorney: ' . $nameOfLawyer . '</span><br />' ;
$output .= '<span class="rating-starts">Rating Stars:</span>
<span class="fa fa-star checked"></span>
<span class="fa fa-star checked"></span>
<span class="fa fa-star checked"></span>
<span class="fa fa-star checked"></span>
<span class="fa fa-star checked"></span><br />';
$output .= '<span class="review-body">' . $review->body . '</span>';
$output .= '</p>';
if($counter == $limit)
break;
$counter++;
}
}
}
$output .= '</div>';
return $output;
В функции getAvvoReviews у меня также может быть проблема в коде $ lawyerIDs = array ().
Надеюсь, понятно, чего я пытаюсь достичь. Я ценю любые рекомендации, которые вы можете предоставить! Спасибо!
Задача ещё не решена.
Других решений пока нет …