1. sayfa (Toplam 1 sayfa)
içerik çekme eklentisi wordpress
Gönderilme zamanı: Cum Şub 14, 2025 7:16 pm
gönderen muratca61
dosya yapısı
Kod:Tümünü seç
/wp-content/plugins/icerik-cekici/
├── icerik-cekici.php
└── includes/
├── class-baslik-olusturucu.php
└── functions.php
icerik-cekici.php
Kod:Tümünü seç
<?php
/*
Plugin Name: İçerik Çekici
Description: URL'den yazı ve görsel çeker, otomatik başlık oluşturur.
Version: 6.0
Author: Sizin Adınız
*/
if (!defined('ABSPATH')) exit;
// Gerekli dosyaları yükle
require_once plugin_dir_path(__FILE__) . 'includes/class-baslik-olusturucu.php';
require_once plugin_dir_path(__FILE__) . 'includes/functions.php';
// Admin menüsünü ekle
add_action('admin_menu', 'icerik_cekici_menu');
function icerik_cekici_menu() {
add_menu_page(
'İçerik Çekici',
'İçerik Çek',
'manage_options',
'icerik-cekici',
'icerik_cekici_admin_page',
'dashicons-download'
);
}
// Admin arayüzü
function icerik_cekici_admin_page() {
?>
<div class="wrap">
<h1>İçerik Çekici 🚀</h1>
<form method="post">
<input type="url" name="hedef_url" placeholder="https://ornek.com" style="width: 400px;" required>
<?php wp_nonce_field('icerik_cekici_action', 'icerik_cekici_nonce'); ?>
<input type="submit" name="cek" class="button button-primary" value="İçeriği Çek">
</form>
<?php icerik_cekici_sonuc_goster(); ?>
</div>
<?php
}
// Sonuçları göster
function icerik_cekici_sonuc_goster() {
if (!isset($_POST['cek'])) return;
try {
$url = esc_url_raw($_POST['hedef_url']);
$baslik_olusturucu = new BaslikOlusturucu($url);
$icerik = icerik_cekici_icerik_al($url);
// Yazıyı oluştur
$post_id = wp_insert_post([
'post_title' => $baslik_olusturucu->baslik,
'post_content' => $icerik->metin,
'post_status' => 'draft',
'post_author' => get_current_user_id(),
]);
// Öne çıkan görsel
if ($icerik->gorsel_id) {
set_post_thumbnail($post_id, $icerik->gorsel_id);
}
echo '<div class="notice notice-success"><p>✅ İçerik başarıyla oluşturuldu! <a href="' . esc_url(get_edit_post_link($post_id)) . '">Düzenle</a></p></div>';
} catch (Exception $e) {
echo '<div class="notice notice-error"><p>Hata: ' . esc_html($e->getMessage()) . '</p></div>';
}
}
class-baslik-olusturucu.php
Kod:Tümünü seç
<?php
class BaslikOlusturucu {
public $baslik;
private $url;
private $dom;
public function __construct($url) {
$this->url = $url;
$this->dom = new DOMDocument();
$this->html_yukle();
$this->baslik_olustur();
}
private function html_yukle() {
$html = icerik_cekici_html_al($this->url);
if (!$html) throw new Exception('HTML çekilemedi');
libxml_use_internal_errors(true);
$this->dom->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'));
libxml_clear_errors();
}
private function baslik_olustur() {
$this->baslik = $this->h1_bul()
?: $this->meta_title_bul()
?: $this->ilk_paragraftan_baslik()
?: $this->url_baslik();
$this->baslik = sanitize_text_field($this->baslik);
}
private function h1_bul() {
$h1 = $this->dom->getElementsByTagName('h1');
return ($h1->length > 0) ? trim($h1->item(0)->nodeValue) : false;
}
private function meta_title_bul() {
$title = $this->dom->getElementsByTagName('title');
return ($title->length > 0) ? trim($title->item(0)->nodeValue) : false;
}
private function ilk_paragraftan_baslik() {
$p = $this->dom->getElementsByTagName('p')->item(0);
return ($p) ? $this->metni_kisalt($p->nodeValue) : false;
}
private function url_baslik() {
$parsed = parse_url($this->url);
return 'Çekilen İçerik - ' . str_replace('www.', '', $parsed['host']);
}
private function metni_kisalt($metin, $max_kelime = 8) {
$kelimeler = preg_split('/\s+/', trim($metin));
$kisa = array_slice($kelimeler, 0, $max_kelime);
return implode(' ', $kisa) . (count($kelimeler) > $max_kelime ? '...' : '');
}
}
functions.php
Kod:Tümünü seç
<?php
// HTML çek
function icerik_cekici_html_al($url) {
$response = wp_remote_get($url, [
'headers' => [
'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
],
'timeout' => 45
]);
return !is_wp_error($response) ? wp_remote_retrieve_body($response) : false;
}
// İçerik işle
function icerik_cekici_icerik_al($url) {
$html = icerik_cekici_html_al($url);
if (!$html) return (object)['metin' => '', 'gorsel_id' => null];
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'));
libxml_clear_errors();
$icerik = (object)['metin' => '', 'gorsel_id' => null];
$xpath = new DOMXPath($dom);
// Tüm p ve img'leri bul
$nodes = $xpath->query('//p | //img');
foreach ($nodes as $node) {
if ($node->tagName === 'p') {
$icerik->metin .= $dom->saveHTML($node);
}
elseif ($node->tagName === 'img') {
$src = $node->getAttribute('src');
$image_url = icerik_normalize_url($src, $url);
$upload_id = icerik_cekici_gorsel_yukle($image_url);
if ($upload_id) {
$node->setAttribute('src', wp_get_attachment_url($upload_id));
if (!$icerik->gorsel_id) $icerik->gorsel_id = $upload_id;
}
$icerik->metin .= $dom->saveHTML($node);
}
}
$icerik->metin = (string)$icerik->metin;
return $icerik;
}
// Görsel yükle
function icerik_cekici_gorsel_yukle($image_url) {
$allowed_ext = ['jpg', 'jpeg', 'png', 'gif', 'webp', 'wrp'];
$extension = strtolower(pathinfo(parse_url($image_url, PHP_URL_PATH), PATHINFO_EXTENSION));
if (!in_array($extension, $allowed_ext)) return false;
$tmp_file = download_url($image_url);
if (is_wp_error($tmp_file)) return false;
$file_array = [
'name' => sanitize_file_name(basename($image_url)),
'tmp_name' => $tmp_file
];
$upload_id = media_handle_sideload($file_array, 0);
@unlink($tmp_file);
return is_wp_error($upload_id) ? false : $upload_id;
}
// URL normalizasyonu
function icerik_normalize_url($image_url, $base_url) {
if (strpos($image_url, 'http') === 0) return $image_url;
$parsed_base = parse_url($base_url);
$base = $parsed_base['scheme'] . '://' . $parsed_base['host'];
$path = isset($parsed_base['path']) ? rtrim($parsed_base['path'], '/') : '';
return $base . $path . '/' . ltrim($image_url, '/');
}
Re: içerik çekme eklentisi wordpress
Gönderilme zamanı: Cum Şub 14, 2025 7:34 pm
gönderen muratca61
dosya yapısı
/wp-content/plugins/icerik-cekici/
├── icerik-cekici.php
└── includes/
├── class-baslik-olusturucu.php
└── functions.php
icerik-cekici.php
Kod:Tümünü seç
<?php
/*
Plugin Name: İçerik Çekici
Description: URL'den yazı ve görsel çeker, otomatik başlık oluşturur.
Version: 6.0
Author: Sizin Adınız
*/
if (!defined('ABSPATH')) exit;
// Gerekli dosyaları yükle
require_once plugin_dir_path(__FILE__) . 'includes/class-baslik-olusturucu.php';
require_once plugin_dir_path(__FILE__) . 'includes/functions.php';
// Admin menüsünü ekle
add_action('admin_menu', 'icerik_cekici_menu');
function icerik_cekici_menu() {
add_menu_page(
'İçerik Çekici',
'İçerik Çek',
'manage_options',
'icerik-cekici',
'icerik_cekici_admin_page',
'dashicons-download'
);
}
// Admin arayüzü
function icerik_cekici_admin_page() {
?>
<div class="wrap">
<h1>İçerik Çekici 🚀</h1>
<form method="post">
<input type="url" name="hedef_url" placeholder="https://ornek.com" style="width: 400px;" required>
<?php wp_nonce_field('icerik_cekici_action', 'icerik_cekici_nonce'); ?>
<input type="submit" name="cek" class="button button-primary" value="İçeriği Çek">
</form>
<?php icerik_cekici_sonuc_goster(); ?>
</div>
<?php
}
// Sonuçları göster
function icerik_cekici_sonuc_goster() {
if (!isset($_POST['cek'])) return;
try {
$url = esc_url_raw($_POST['hedef_url']);
$baslik_olusturucu = new BaslikOlusturucu($url);
$icerik = icerik_cekici_icerik_al($url);
// Yazıyı oluştur
$post_id = wp_insert_post([
'post_title' => $baslik_olusturucu->baslik,
'post_content' => $icerik->metin,
'post_status' => 'draft',
'post_author' => get_current_user_id(),
]);
// Öne çıkan görsel
if ($icerik->gorsel_id) {
set_post_thumbnail($post_id, $icerik->gorsel_id);
}
echo '<div class="notice notice-success"><p>✅ İçerik başarıyla oluşturuldu! <a href="' . esc_url(get_edit_post_link($post_id)) . '">Düzenle</a></p></div>';
} catch (Exception $e) {
echo '<div class="notice notice-error"><p>Hata: ' . esc_html($e->getMessage()) . '</p></div>';
}
}
class-baslik-olusturucu.php
Kod:Tümünü seç
<?php
class BaslikOlusturucu {
public $baslik;
private $url;
private $dom;
public function __construct($url) {
$this->url = $url;
$this->dom = new DOMDocument();
$this->html_yukle();
$this->baslik_olustur();
}
private function html_yukle() {
$html = icerik_cekici_html_al($this->url);
if (!$html) throw new Exception('HTML çekilemedi');
libxml_use_internal_errors(true);
$this->dom->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'));
libxml_clear_errors();
}
private function baslik_olustur() {
$this->baslik = $this->h1_bul()
?: $this->meta_title_bul()
?: $this->ilk_paragraftan_baslik()
?: $this->url_baslik();
$this->baslik = sanitize_text_field($this->baslik);
}
private function h1_bul() {
$h1 = $this->dom->getElementsByTagName('h1');
return ($h1->length > 0) ? trim($h1->item(0)->nodeValue) : false;
}
private function meta_title_bul() {
$title = $this->dom->getElementsByTagName('title');
return ($title->length > 0) ? trim($title->item(0)->nodeValue) : false;
}
private function ilk_paragraftan_baslik() {
$p = $this->dom->getElementsByTagName('p')->item(0);
return ($p) ? $this->metni_kisalt($p->nodeValue) : false;
}
private function url_baslik() {
$parsed = parse_url($this->url);
return 'Çekilen İçerik - ' . str_replace('www.', '', $parsed['host']);
}
private function metni_kisalt($metin, $max_kelime = 8) {
$kelimeler = preg_split('/\s+/', trim($metin));
$kisa = array_slice($kelimeler, 0, $max_kelime);
return implode(' ', $kisa) . (count($kelimeler) > $max_kelime ? '...' : '');
}
}
functions.php
Kod:Tümünü seç
<?php
// HTML çek
function icerik_cekici_html_al($url) {
$response = wp_remote_get($url, [
'headers' => [
'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
],
'timeout' => 45
]);
return !is_wp_error($response) ? wp_remote_retrieve_body($response) : false;
}
// İçerik işle
function icerik_cekici_icerik_al($url) {
$html = icerik_cekici_html_al($url);
if (!$html) return (object)['metin' => '', 'gorsel_id' => null];
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'));
libxml_clear_errors();
$icerik = (object)['metin' => '', 'gorsel_id' => null];
$xpath = new DOMXPath($dom);
// Tüm p ve img'leri bul
$nodes = $xpath->query('//p | //img');
foreach ($nodes as $node) {
if ($node->tagName === 'p') {
$icerik->metin .= $dom->saveHTML($node);
}
elseif ($node->tagName === 'img') {
$src = $node->getAttribute('src');
$image_url = icerik_normalize_url($src, $url);
$upload_id = icerik_cekici_gorsel_yukle($image_url);
if ($upload_id) {
$node->setAttribute('src', wp_get_attachment_url($upload_id));
if (!$icerik->gorsel_id) $icerik->gorsel_id = $upload_id;
}
$icerik->metin .= $dom->saveHTML($node);
}
}
$icerik->metin = (string)$icerik->metin;
return $icerik;
}
// Görsel yükle
function icerik_cekici_gorsel_yukle($image_url) {
$allowed_ext = ['jpg', 'jpeg', 'png', 'gif', 'webp', 'wrp'];
$extension = strtolower(pathinfo(parse_url($image_url, PHP_URL_PATH), PATHINFO_EXTENSION));
if (!in_array($extension, $allowed_ext)) return false;
$tmp_file = download_url($image_url);
if (is_wp_error($tmp_file)) return false;
$file_array = [
'name' => sanitize_file_name(basename($image_url)),
'tmp_name' => $tmp_file
];
$upload_id = media_handle_sideload($file_array, 0);
@unlink($tmp_file);
return is_wp_error($upload_id) ? false : $upload_id;
}
// URL normalizasyonu
function icerik_normalize_url($image_url, $base_url) {
if (strpos($image_url, 'http') === 0) return $image_url;
$parsed_base = parse_url($base_url);
$base = $parsed_base['scheme'] . '://' . $parsed_base['host'];
$path = isset($parsed_base['path']) ? rtrim($parsed_base['path'], '/') : '';
return $base . $path . '/' . ltrim($image_url, '/');
}
Re: içerik çekme eklentisi wordpress
Gönderilme zamanı: Cum Şub 14, 2025 7:35 pm
gönderen muratca61
functions.php
Kod:Tümünü seç
<?php
// HTML çek
function icerik_cekici_html_al($url) {
$response = wp_remote_get($url, [
'headers' => [
'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
],
'timeout' => 45
]);
return !is_wp_error($response) ? wp_remote_retrieve_body($response) : false;
}
// İçerik işle
function icerik_cekici_icerik_al($url) {
$html = icerik_cekici_html_al($url);
if (!$html) return (object)['metin' => '', 'gorsel_id' => null];
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'));
libxml_clear_errors();
$icerik = (object)['metin' => '', 'gorsel_id' => null];
$xpath = new DOMXPath($dom);
// Tüm p ve img'leri bul
$nodes = $xpath->query('//p | //img');
foreach ($nodes as $node) {
if ($node->tagName === 'p') {
$icerik->metin .= $dom->saveHTML($node);
}
elseif ($node->tagName === 'img') {
$src = $node->getAttribute('src');
$image_url = icerik_normalize_url($src, $url);
$upload_id = icerik_cekici_gorsel_yukle($image_url);
if ($upload_id) {
$node->setAttribute('src', wp_get_attachment_url($upload_id));
if (!$icerik->gorsel_id) $icerik->gorsel_id = $upload_id;
}
$icerik->metin .= $dom->saveHTML($node);
}
}
$icerik->metin = (string)$icerik->metin;
return $icerik;
}
// Görsel yükle
function icerik_cekici_gorsel_yukle($image_url) {
$allowed_ext = ['jpg', 'jpeg', 'png', 'gif', 'webp', 'wrp'];
$extension = strtolower(pathinfo(parse_url($image_url, PHP_URL_PATH), PATHINFO_EXTENSION));
if (!in_array($extension, $allowed_ext)) return false;
$tmp_file = download_url($image_url);
if (is_wp_error($tmp_file)) return false;
$file_array = [
'name' => sanitize_file_name(basename($image_url)),
'tmp_name' => $tmp_file
];
$upload_id = media_handle_sideload($file_array, 0);
@unlink($tmp_file);
return is_wp_error($upload_id) ? false : $upload_id;
}
// URL normalizasyonu
function icerik_normalize_url($image_url, $base_url) {
if (strpos($image_url, 'http') === 0) return $image_url;
$parsed_base = parse_url($base_url);
$base = $parsed_base['scheme'] . '://' . $parsed_base['host'];
$path = isset($parsed_base['path']) ? rtrim($parsed_base['path'], '/') : '';
return $base . $path . '/' . ltrim($image_url, '/');
}
Re: içerik çekme eklentisi wordpress
Gönderilme zamanı: Cum Şub 14, 2025 7:43 pm
gönderen muratca61
class-etiket-olusturucu.php
Kod:Tümünü seç
<?php
class EtiketOlusturucu {
private $metin;
private $stop_words = [
've', 'bir', 'ile', 'olarak', 'ama', 'için', 'gibi', 'şey',
'bu', 'şu', 'hiç', 'de', 'da', 'den', 'dan', 'mi', 'mı'
];
public function __construct($metin) {
$this->metin = mb_strtolower($metin, 'UTF-8');
}
// Büyük harfle başlayan özel isimleri bul
public function buyuk_harf_etiketleri() {
preg_match_all('/\b(?!\b[A-Z][a-z]*\b)([A-Z][a-zA-ZğüşıöçĞÜŞİÖÇ]+)\b/u', $this->metin, $eslesmeler);
return array_unique($eslesmeler[1]);
}
// En sık kullanılan kelimeleri bul
public function sik_kullanilan_etiketler($limit = 5) {
$kelimeler = preg_split('/\s+/', $this->metin);
$kelimeler = array_diff($kelimeler, $this->stop_words);
$frekans = array_count_values($kelimeler);
arsort($frekans);
return array_slice(array_keys($frekans), 0, $limit);
}
// Kombine edilmiş etiketler
public function etiketleri_olustur() {
$etiketler = array_merge(
$this->buyuk_harf_etiketleri(),
$this->sik_kullanilan_etiketler()
);
return array_slice(array_unique($etiketler), 0, 10);
}
}