Как разрешить публиковать записи с постороннего домена на свой сайт?
Помогите решить задачу. Мой сайт размещен на определенном домене ( допустим site.com ), на другом сайте ( допустим new-site.ru ) нужно вывести форму создания постов, которые будут публиковаться на моем сайте (site.com) . Возможно ли сделать такую связку ?
Ответы (3 шт):
да,
- делаете api
- делаете api авторизацию
и стандартным REST API можете пулять сами себе данные
JS:
$(function() {
$.ajax( {
url: 'https://new-site.com/index.php/wp-json/ajaxposts/v1/post/',
method: 'GET',
dataType: 'json'
} ).done( function ( response ) {
console.log( response );
response.forEach(function(post){
var postdate = moment(post.post_date).format('D MMMM YYYY');
var posturl = "https://new-site.com/" + post.post_name;
$('#Post').append(`
<div class="post">
<img src="${post.image}" />
<span class="categoryTeg">${post.post_category_name[0].name}</span>
<h3><a href="${posturl}">${post.post_title}</a></h3>
</div>
`);
});
} );
});
HTML вставить туда, где необходимо добавить посты с другого домена:
<div id="Post"></div>
При этом у вас должны быть настроены заголовки Access-Control-Allow-Origin со списком довереных доменов, по умолчанию (доступ разрешен любым доменам).
Вам нужно в файле function.php блога вставить данный код
function ajax_endpoint( $request_data ) {
$params = array(
'posts_per_page' => 3, //количество последних опубликованных статей
'order'=> 'DESC',
'orderby' => 'date'
);
$posts = get_posts($params);
foreach ($posts as $key => $post) {
$posts[$key]->image = get_the_post_thumbnail_url( $post, 'full' );
$posts[$key]->author_name = get_user_by( 'ID', $posts[$key]->post_author );
$posts[$key]->post_category_name = get_the_category( $posts[$key]->ID );
}
return $posts;
}
add_action('rest_api_init', function() {
register_rest_route( 'ajaxposts/v1', '/post/', array(
'methods' => 'GET',
'callback' => 'ajax_endpoint'
));
});
а затем вставить в js файл на сайт в котором вы собираетесь выводить свои посты как написал Станислав в своем ответе
$(function() {
$.ajax( {
url: 'https://quickblox.com/blog/index.php/wp-json/ajaxposts/v1/post/',
method: 'GET',
dataType: 'json'
} ).done( function ( response ) {
console.log( response );
response.forEach(function(post){
// var dd = Date.parse(post.post_date);
// var now = new Date(dd);
// var postdate = now.format("dd mmm yyyy");
var postdate = moment(post.post_date).format('D MMMM YYYY');
var posturl = "https://quickblox.com/blog/" + post.post_name;
$('#BlogPost').append(`
<div class="post">
<img src="${post.image}" />
<span class="categoryTeg">${post.post_category_name[0].name}</span>
<h3><a href="${posturl}">${post.post_title}</a></h3>
<span class="name">${post.author_name.data.display_name}</span>
<div class="oval"></div>
<span class="date">${postdate}</span>
</div>
`);
});
} );
});