Selamlar yapay zeka ile eklenti yaptım eklentiyi kurup etkinleştiriyorsunuz
çekim ayarlarından rss adresi ekliyorsunuz
gerekli ayarlamaları yapıyorsunuz
şimdi çek derseniz 20 adet çekti taslak olarak bıraktı
çekilen haber makalesi örnek içeriği
bu eklenti geliştirilebilir daha iyi hale getirilebilir
<?php
/**
* Plugin Name: Gelişmiş Haber Çekici
* Description: RSS beslemelerinden haberleri çeker, otomatik olarak taslak yazılar olarak kaydeder.
* Version: 2.0
* Author: Yapay Zeka Asistanı
* Author URI: https://ornek.com
* License: GPL v2 or later
* License URI: https://www.gnu.org/licenses/gpl-2.0.html
* Text Domain: gelismis-haber-cekici
*/
// Güvenlik kontrolü
if (!defined('ABSPATH')) {
exit;
}
// --- 1. AKTİVASYON VE DEAKTİVASYON KANCALARI ---
// Eklenti aktif olduğunda zamanlanmış görevi oluştur
register_activation_hook(__FILE__, 'ghc_activate');
function ghc_activate() {
// Varsayılan ayarları oluştur
$default_options = [
'rss_url' => '',
'author_id' => get_current_user_id(),
'category_id' => 1,
'schedule' => 'hourly',
];
add_option('ghc_settings', $default_options);
// Zamanlanmış görevi (WP-Cron) ayarla
if (!wp_next_scheduled('ghc_cron_event')) {
wp_schedule_event(time(), 'hourly', 'ghc_cron_event');
}
}
// Eklenti deaktif olduğunda zamanlanmış görevi temizle
register_deactivation_hook(__FILE__, 'ghc_deactivate');
function ghc_deactivate() {
wp_clear_scheduled_hook('ghc_cron_event');
}
// --- 2. ZAMANLANMIŞ GÖREVİN ÇALIŞTIRILMASI ---
add_action('ghc_cron_event', 'ghc_proceed_import');
// --- 3. ÇEKİM İŞLEMLERİNİ YAPAN ANA FONKSİYON ---
function ghc_proceed_import() {
$options = get_option('ghc_settings');
$rss_url = !empty($options['rss_url']) ? esc_url_raw($options['rss_url']) : null;
if (!$rss_url) {
return; // RSS URL boşsa işlemi durdur.
}
$rss = fetch_feed($rss_url);
if (is_wp_error($rss)) {
error_log('Gelişmiş Haber Çekici Hatası: ' . $rss->get_error_message());
return;
}
$maxitems = $rss->get_item_quantity(10); // Bir seferde en fazla 10 haber çek
$rss_items = $rss->get_items(0, $maxitems);
$author_id = !empty($options['author_id']) ? intval($options['author_id']) : 1;
$category_id = !empty($options['category_id']) ? intval($options['category_id']) : 1;
foreach ($rss_items as $item) {
$permalink = $item->get_permalink();
// TEKRAR ENGELLEME: Bu link ile daha önce yazı eklenmiş mi kontrol et
if (get_posts(['meta_key' => '_ghc_source_url', 'meta_value' => $permalink])) {
continue; // Eğer eklenmişse bu haberi atla
}
$post_data = [
'post_title' => wp_strip_all_tags($item->get_title()),
'post_content' => $item->get_description() . '<br><br><a href="' . esc_url($permalink) . '" target="_blank">Kaynaktan Devamını Oku</a>',
'post_status' => 'draft',
'post_author' => $author_id,
'post_category' => [$category_id],
'post_type' => 'post',
];
$post_id = wp_insert_post($post_data);
// Yazı başarıyla oluşturulursa kaynak linkini meta olarak kaydet
if (!is_wp_error($post_id)) {
update_post_meta($post_id, '_ghc_source_url', $permalink);
}
}
}
// --- 4. AYARLAR SAYFASI ---
add_action('admin_menu', 'ghc_add_admin_menu');
add_action('admin_init', 'ghc_settings_init');
function ghc_add_admin_menu() {
add_options_page(
'Gelişmiş Haber Çekici Ayarları',
'Gelişmiş Haber Çekici',
'manage_options',
'gelismis-haber-cekici',
'ghc_options_page_html'
);
}
function ghc_settings_init() {
register_setting('ghc_settings_group', 'ghc_settings');
add_settings_section(
'ghc_settings_section',
'Çekim Ayarları',
null,
'gelismis-haber-cekici'
);
add_settings_field('ghc_rss_url', 'RSS Besleme Adresi', 'ghc_rss_url_render', 'gelismis-haber-cekici', 'ghc_settings_section');
add_settings_field('ghc_author_id', 'Yazar', 'ghc_author_id_render', 'gelismis-haber-cekici', 'ghc_settings_section');
add_settings_field('ghc_category_id', 'Kategori', 'ghc_category_id_render', 'gelismis-haber-cekici', 'ghc_settings_section');
add_settings_field('ghc_schedule', 'Çekim Sıklığı', 'ghc_schedule_render', 'gelismis-haber-cekici', 'ghc_settings_section');
}
// Ayarlar alanlarını render eden fonksiyonlar
function ghc_rss_url_render() {
$options = get_option('ghc_settings');
echo '<input type="url" name="ghc_settings[rss_url]" value="' . esc_attr($options['rss_url']) . '" size="60" placeholder="https://www.ornek.com/rss.xml" />';
}
function ghc_author_id_render() {
$options = get_option('ghc_settings');
wp_dropdown_users([
'name' => 'ghc_settings[author_id]',
'selected' => $options['author_id'],
'show_option_none' => 'Site Yöneticisi'
]);
}
function ghc_category_id_render() {
$options = get_option('ghc_settings');
wp_dropdown_categories([
'name' => 'ghc_settings[category_id]',
'selected' => $options['category_id'],
'show_option_none' => 'Genel',
'hide_empty' => 0,
]);
}
function ghc_schedule_render() {
$options = get_option('ghc_settings');
$schedules = wp_get_schedules();
echo '<select name="ghc_settings[schedule]">';
foreach ($schedules as $key => $schedule) {
echo '<option value="' . esc_attr($key) . '" ' . selected($options['schedule'], $key, false) . '>' . esc_html($schedule['display']) . '</option>';
}
echo '</select>';
}
function ghc_options_page_html() {
// Manuel çekim işlemini burada handle et
if (isset($_POST['ghc_manual_import']) && check_admin_referer('ghc_manual_import_nonce')) {
ghc_proceed_import();
echo '<div class="notice notice-success is-dismissible"><p>Manuel çekim işlemi başlatıldı. Oluşturulan taslakları <a href="/wp-admin/edit.php?post_status=draft&post_type=post">buradan</a> görebilirsiniz.</p></div>';
}
// Ayarlar güncellendiğinde cron job'u yeniden ayarla
if (isset($_GET['settings-updated']) && $_GET['settings-updated'] == 'true') {
$options = get_option('ghc_settings');
wp_clear_scheduled_hook('ghc_cron_event');
wp_schedule_event(time(), $options['schedule'], 'ghc_cron_event');
}
?>
<div class="wrap">
<h1><?php echo esc_html(get_admin_page_title()); ?></h1>
<form action="options.php" method="post">
<?php
settings_fields('ghc_settings_group');
do_settings_sections('gelismis-haber-cekici');
submit_button('Ayarları Kaydet');
?>
</form>
<hr>
<h2>Manuel Haber Çekimi</h2>
<p>Ayarları kaydettikten sonra, RSS beslemesinden hemen haber çekmek için aşağıdaki butonu kullanabilirsiniz.</p>
<form method="post">
<?php wp_nonce_field('ghc_manual_import_nonce'); ?>
<input type="submit" name="ghc_manual_import" class="button button-primary" value="Şimdi Haberleri Çek">
</form>
</div>
<?php
}yapmanız gerekn klasör oluşturup haber-cekici klasör içine de verdiğim bu kodu notepad++ içine atıp habercekici.php olarak kayıt edip zip lemek oradan eklentiyi wordpresse atmak olacak geliştirmek isteyenler geliştirsin diye verdim başarılar