wp_back/wp-content/themes/simple-theme/api-posts/api-posts.php

81 lines
2.1 KiB
PHP
Raw Normal View History

2024-05-27 15:01:43 +03:00
<?php
add_action('rest_api_init', 'endlessPosts');
function endlessPosts()
{
register_rest_route('api-posts/v1', "/endlessPosts", array(
'methods' => WP_REST_Server::READABLE,
'callback' => 'getEndlessPostsResults'
));
}
function getEndlessPostsResults($data)
2024-05-27 15:01:43 +03:00
{
global $wpdb;
$link = $data['permalink'];
$paged = $data['paged'];
if ($paged < 0){
$paged = 1;
}
$result = [];
2024-05-29 16:29:52 +03:00
$tag_slug = url_to_postid($link); //Получаем айди поста по пермалинку
$tags = get_the_tags($tag_slug); //Получаем тэги по айди
$i = 0;
$postSlugs = [];
foreach ($tags as $key => $slug){ //Создаём массив с ID тэгов
$postSlugs[] += $tags[$i]->term_id;
$i++;
}
2024-05-27 15:01:43 +03:00
$id_from_permalink = explode('/', $link);
$id_from_permalink = explode('-', $id_from_permalink[3]);
$id = $id_from_permalink[0];
$requestedPost = get_post($id);
$result[] = ['requested-post' => $requestedPost];
2024-05-27 15:01:43 +03:00
2024-05-29 16:29:52 +03:00
$args = array( // Создаем массив с параметрами запроса
'tag__and' => $postSlugs,
2024-05-27 15:01:43 +03:00
'posts_per_page' => 10,
'paged' =>$paged,
'orderby'=>'date',
'order'=> 'DESC'
2024-05-27 15:01:43 +03:00
);
2024-05-29 16:29:52 +03:00
$posts = new WP_Query($args); // Инициализация запроса
2024-05-27 15:01:43 +03:00
while ( $posts->have_posts() ) {
$posts->the_post();
2024-05-29 16:29:52 +03:00
$tags = get_the_tags();
$postsTags ='';
$tags = get_the_tags();
foreach ($tags as $key => $tag){
$postsTags .= $tags[$i]->name;
if ($key < count($tags) - 1) {
$postsTags .= ', ';
}
$i++;
}
2024-05-27 15:01:43 +03:00
2024-05-29 16:29:52 +03:00
$actualTag = get_the_tags();
$terms = get_the_category();
2024-05-27 15:01:43 +03:00
$result[] = array(
'post_id' => get_the_ID(),
2024-05-27 15:01:43 +03:00
'permalink' => get_the_permalink(),
);
}
return $result;
}
//"http://pamtest.ru/702-oformlenie-osago-na-a-b-c-d-otkryto-vsem-agenta/"
//"http://pamtest.ru/294-6-j-urok-kak-strahovomu-agentu-zadavat-voprosy-i-rabotat-s-vozrazheniyami/"