Özellikler:
- Kaynak siteden kategoriler, yazılar, sayfalar ve etiketler dahil tüm içerik türlerini hedef siteye aktarır.
- İçerik aktarımı sırasında kategori ve etiket eşleştirmeleri yapılır, böylece yazılar yeni sitede de eski kategoriler ve etiketlerle ilişkilendirilir.
- Yönetim panelinden kolayca URL girerek içerik çekme işlemi yapabilirsiniz.
Kullanım Talimatları:
- Eklentiyi Yükleyin ve Aktif Edin: wp-content/plugins klasörüne full_content_importer adında bir klasör oluşturun. Bu klasörün içine category-post-importer.php dosyasını ekleyin. WordPress yönetim panelinde "Eklentiler" bölümüne gidip eklentiyi aktif hale getirin.
- Tüm İçeriği Çekme: Yönetim panelinde "Tüm İçerik İçe Aktar" adlı bir menü göreceksiniz. Bu menüye tıklayın ve açılan sayfada:
- Kaynak WordPress sitesinin ana URLsini (örneğin, https://kaynak-site.com) ilgili alana girin.
- "Çek" butonuna basarak içeriği aktarın. Tüm kategoriler, yazılar, sayfalar ve etiketler otomatik olarak sitenize aktarılacaktır.
Önemli Not:
Eklenti, REST API ile çalıştığı için kaynak sitede REST API erişiminin açık olması gerekmektedir.
<?php
/*
Plugin Name: Full Content Importer
Description: Kaynak WordPress sitesindeki tüm içerikleri (kategoriler, yazılar, sayfalar, etiketler) çekip hedef siteye ekler.
Version: 1.2
Author: Your Name
*/
// REST API aracılığıyla içerik çekme fonksiyonu
function import_full_content_from_source_site($source_site_url) {
if (empty($source_site_url)) {
return; // URL boşsa işlem yapılmaz
}
// 1. Kategorileri kaynaktan çek ve hedef siteye ekle
$categories = json_decode(file_get_contents($source_site_url . '/categories'));
$category_map = []; // Kategori ID eşleştirmesi
if (is_array($categories)) {
foreach ($categories as $category) {
$term = wp_insert_term($category->name, 'category', array(
'description' => $category->description,
'slug' => $category->slug
));
if (!is_wp_error($term)) {
$category_map[$category->id] = $term['term_id']; // Kaynak ve hedef kategori ID eşlemesi
}
}
}
// 2. Etiketleri kaynaktan çek ve hedef siteye ekle
$tags = json_decode(file_get_contents($source_site_url . '/tags'));
$tag_map = []; // Etiket ID eşleştirmesi
if (is_array($tags)) {
foreach ($tags as $tag) {
$term = wp_insert_term($tag->name, 'post_tag', array(
'description' => $tag->description,
'slug' => $tag->slug
));
if (!is_wp_error($term)) {
$tag_map[$tag->id] = $term['term_id']; // Kaynak ve hedef etiket ID eşlemesi
}
}
}
// 3. Yazıları kaynaktan çek ve hedef siteye ekle
$posts = json_decode(file_get_contents($source_site_url . '/posts'));
if (is_array($posts)) {
foreach ($posts as $post) {
// Kategori ve etiket ID'lerini yeni siteye uyarlama
$post_categories = array_map(function($cat_id) use ($category_map) {
return isset($category_map[$cat_id]) ? $category_map[$cat_id] : null;
}, $post->categories);
$post_categories = array_filter($post_categories); // Null olanları temizle
$post_tags = array_map(function($tag_id) use ($tag_map) {
return isset($tag_map[$tag_id]) ? $tag_map[$tag_id] : null;
}, $post->tags);
$post_tags = array_filter($post_tags);
// Yazıyı hedef siteye ekle
wp_insert_post(array(
'post_title' => $post->title->rendered,
'post_content' => $post->content->rendered,
'post_status' => 'publish',
'post_author' => 1,
'post_category'=> $post_categories,
'tags_input' => $post_tags,
));
}
}
// 4. Sayfaları kaynaktan çek ve hedef siteye ekle
$pages = json_decode(file_get_contents($source_site_url . '/pages'));
if (is_array($pages)) {
foreach ($pages as $page) {
wp_insert_post(array(
'post_title' => $page->title->rendered,
'post_content' => $page->content->rendered,
'post_status' => 'publish',
'post_type' => 'page',
'post_author' => 1
));
}
}
}
// Yönetim panelinde eklentiyi çalıştırmak için bir menü ekleyin
function full_content_importer_menu() {
add_menu_page(
'Tüm İçeriği İçe Aktar',
'Tüm İçerik İçe Aktar',
'manage_options',
'full-content-importer',
'full_content_importer_admin_page'
);
}
add_action('admin_menu', 'full_content_importer_menu');
// Yönetim sayfası içeriği
function full_content_importer_admin_page() {
echo '<h1>Tüm İçeriği İçe Aktar</h1>';
echo '<form method="post" action="">';
echo '<label for="source_site_url">Kaynak Site URL\'si:</label>';
echo '<input type="text" id="source_site_url" name="source_site_url" value="' . (isset($_POST['source_site_url']) ? esc_attr($_POST['source_site_url']) : '') . '" size="50">';
echo '<br><br>';
echo '<input type="submit" name="import_content" value="Çek" class="button button-primary">';
echo '</form>';
// Eğer form gönderildiyse içerik çekme fonksiyonunu çağır
if (isset($_POST['import_content']) && !empty($_POST['source_site_url'])) {
$source_site_url = esc_url_raw($_POST['source_site_url']) . '/wp-json/wp/v2';
// İçeriği çek
import_full_content_from_source_site($source_site_url);
echo '<div class="updated"><p>Tüm içerikler başarıyla içe aktarıldı.</p></div>';
}
}
?>