1 . sayfa (Toplam 1 sayfa)
wordpress yazı engelleme eklentisi
Gönderilme zamanı: Cum Şub 28, 2025 5:05 pm
gönderen muratca61
cpgt surduk
Kod:Tümünü seç Kopyala
bir wordpress shortcode eklentisi yapalım. dosya yapısı plugins/engelle ve
shortkodumuz [engelle] adı olsun. admin panelinde aktif pasif ayarı olsun. admin
panelinde bu eklenti arayüzünde ekle butonu ile alt alta textbox ekleyebilsin.
bu eklenen textboxlarda girilen tümceler bir bütün olarak içerdikleri karakter
harf rakam ne var ise bütünüyle eşleşenleri yazının ana sayfa görünümünde göstermeyecek.
Re: wordpress yazı engelleme eklentisi
Gönderilme zamanı: Cum Şub 28, 2025 5:09 pm
gönderen muratca61
1m 8s hakkında Gerekçelendirilmiş engelleme kısa kodu tasarımı
Aşağıda, isteğinize uygun basit bir WordPress eklentisi örneği yer alıyor. Bu örnekte:
Eklenti dosya yapısı: wp-content/plugins/engelle/
shortcodu tanımlanıyor.
Yönetim panelinde “aktif/pasif” seçeneği ve dinamik olarak eklenebilen metin kutuları (her biri bir tümce) yer alıyor.
Ana sayfa görünümünde (is_home()) ve eklenti aktifse, admin panelinde eklenen tümcelerin içerik içinde tam eşleşmeleri siliniyor.
Aşağıdaki kodu dosyanıza kaydedip, eklentiyi aktif hale getirebilirsiniz:
Kod:Tümünü seç Kopyala
<?php
/*
Plugin Name: Engelle Shortcode Eklentisi
Description: Yazıların ana sayfa görünümünde, admin panelinde eklenen tümcelerin tam eşleşmelerini kaldıran [engelle] shortcodunu ekler.
Version: 1.0
Author: Your Name
*/
// Yönetici panelinde menü ekleme ve ayar sayfası oluşturma
if ( is_admin() ) {
add_action('admin_menu', 'engelle_admin_menu');
function engelle_admin_menu(){
add_menu_page(
'Engelle Ayarları', // Sayfa başlığı
'Engelle', // Menü başlığı
'manage_options', // Yetki
'engelle-settings', // Menü slug
'engelle_settings_page', // Callback fonksiyonu
'dashicons-hidden' // Menü ikonu (isteğe bağlı)
);
}
// Ayar sayfası arayüzü
function engelle_settings_page(){
// Form gönderimi kontrolü ve verilerin kaydedilmesi
if ( isset($_POST['engelle_form_submitted']) ) {
if ( !empty($_POST['_wpnonce']) && wp_verify_nonce($_POST['_wpnonce'], 'engelle_settings') ) {
$active = isset($_POST['engelle_active']) ? 1 : 0;
update_option('engelle_active', $active);
// Girilen tümceleri alırken boş olanları filtreliyoruz.
$phrases = isset($_POST['engelle_phrases']) ? array_filter(array_map('sanitize_text_field', $_POST['engelle_phrases'])) : array();
update_option('engelle_phrases', $phrases);
echo '<div class="updated"><p>Ayarlar güncellendi.</p></div>';
}
}
// Önceden kaydedilmiş ayarları çekiyoruz.
$active = get_option('engelle_active', 0);
$phrases = get_option('engelle_phrases', array());
?>
<div class="wrap">
<h1>Engelle Ayarları</h1>
<form method="post">
<?php wp_nonce_field('engelle_settings'); ?>
<table class="form-table">
<tr valign="top">
<th scope="row">Eklenti Durumu</th>
<td>
<label>
<input type="checkbox" name="engelle_active" value="1" <?php checked(1, $active); ?>>
Aktif
</label>
</td>
</tr>
<tr valign="top">
<th scope="row">Engellenecek Tümceler</th>
<td>
<div id="phrase_container">
<?php
if(!empty($phrases)){
foreach($phrases as $phrase){
?>
<input type="text" name="engelle_phrases[]" value="<?php echo esc_attr($phrase); ?>" style="display:block; margin-bottom:5px; width:100%;">
<?php
}
}
?>
</div>
<!-- Dinamik ekleme için gizli şablon -->
<input type="text" class="phrase_field_template" name="engelle_phrases[]" value="" style="display:none;">
<button id="add_phrase" class="button">Yeni Tümce Ekle</button>
<p class="description">Eklemek istediğiniz tümceleri yukarıdaki kutucuklara giriniz. Yazının ana sayfa görünümünde, tam eşleşen tümcelerin görüntüsü kaldırılacaktır.</p>
</td>
</tr>
</table>
<p class="submit">
<input type="hidden" name="engelle_form_submitted" value="1">
<input type="submit" class="button-primary" value="Ayarları Kaydet">
</p>
</form>
</div>
<script>
(function($){
$(document).ready(function(){
$('#add_phrase').on('click', function(e){
e.preventDefault();
// Gizli şablonu kopyala ve görünür yap
var newField = $('.phrase_field_template').clone().removeClass('phrase_field_template').show();
$('#phrase_container').append(newField);
});
});
})(jQuery);
</script>
<?php
}
}
// Ana sayfa görünümünde içerikten engellenecek tümceleri kaldıran fonksiyon
function engelle_filter_content($content) {
// Sadece ana sayfa görünümünde ve eklenti aktifse çalışır.
if ( is_home() && get_option('engelle_active', 0) ) {
$phrases = get_option('engelle_phrases', array());
if ( !empty($phrases) ) {
foreach ( $phrases as $phrase ) {
$phrase = trim($phrase);
if ( $phrase !== '' ) {
// Tam eşleşme sağlamak için str_replace kullanıyoruz.
$content = str_replace($phrase, '', $content);
}
}
}
}
return $content;
}
add_filter('the_content', 'engelle_filter_content');
// [engelle] shortcodunu tanımlama
function engelle_shortcode($atts, $content = null) {
// Eğer kısa kodun içeriği varsa, yukarıdaki filtreyle aynı işlemi uygularız.
if ( is_home() && get_option('engelle_active', 0) ) {
$phrases = get_option('engelle_phrases', array());
if ( !empty($phrases) ) {
foreach ( $phrases as $phrase ) {
$phrase = trim($phrase);
if ( $phrase !== '' ) {
$content = str_replace($phrase, '', $content);
}
}
}
}
return $content;
}
add_shortcode('engelle', 'engelle_shortcode');
Re: wordpress yazı engelleme eklentisi
Gönderilme zamanı: Cum Şub 28, 2025 5:17 pm
gönderen muratca61
Kod:Tümünü seç Kopyala
<?php
/*
Plugin Name: Engelle Shortcode Eklentisi
Description: Yazı içeriğinde, admin panelinde eklenen tümcelerin tam eşleşmelerini kaldıran [engelle] shortcodunu ekler.
Version: 1.1
Author: Your Name
*/
// Yönetici panelinde menü ekleme ve ayar sayfası oluşturma
if ( is_admin() ) {
add_action('admin_menu', 'engelle_admin_menu');
function engelle_admin_menu(){
add_menu_page(
'Engelle Ayarları', // Sayfa başlığı
'Engelle', // Menü başlığı
'manage_options', // Yetki
'engelle-settings', // Menü slug
'engelle_settings_page', // Callback fonksiyonu
'dashicons-hidden' // Menü ikonu (isteğe bağlı)
);
}
// Ayar sayfası arayüzü
function engelle_settings_page(){
// Form gönderimi kontrolü ve verilerin kaydedilmesi
if ( isset($_POST['engelle_form_submitted']) ) {
if ( !empty($_POST['_wpnonce']) && wp_verify_nonce($_POST['_wpnonce'], 'engelle_settings') ) {
$active = isset($_POST['engelle_active']) ? 1 : 0;
update_option('engelle_active', $active);
// Girilen tümceleri alırken boş olanları filtreleyelim
$phrases = isset($_POST['engelle_phrases']) ? array_filter(array_map('sanitize_text_field', $_POST['engelle_phrases'])) : array();
update_option('engelle_phrases', $phrases);
echo '<div class="updated"><p>Ayarlar güncellendi.</p></div>';
}
}
// Önceden kaydedilmiş ayarları çekiyoruz
$active = get_option('engelle_active', 0);
$phrases = get_option('engelle_phrases', array());
?>
<div class="wrap">
<h1>Engelle Ayarları</h1>
<form method="post">
<?php wp_nonce_field('engelle_settings'); ?>
<table class="form-table">
<tr valign="top">
<th scope="row">Eklenti Durumu</th>
<td>
<label>
<input type="checkbox" name="engelle_active" value="1" <?php checked(1, $active); ?>>
Aktif
</label>
</td>
</tr>
<tr valign="top">
<th scope="row">Engellenecek Tümceler</th>
<td>
<div id="phrase_container">
<?php
if(!empty($phrases)){
foreach($phrases as $phrase){
?>
<input type="text" name="engelle_phrases[]" value="<?php echo esc_attr($phrase); ?>" style="display:block; margin-bottom:5px; width:100%;">
<?php
}
}
?>
</div>
<!-- Dinamik ekleme için gizli şablon -->
<input type="text" class="phrase_field_template" name="engelle_phrases[]" value="" style="display:none;">
<button id="add_phrase" class="button">Yeni Tümce Ekle</button>
<p class="description">Eklemek istediğiniz tümceleri yukarıdaki kutucuklara giriniz. Yazı içeriğinde, tam eşleşen tümcelerin görüntüsü kaldırılacaktır.</p>
</td>
</tr>
</table>
<p class="submit">
<input type="hidden" name="engelle_form_submitted" value="1">
<input type="submit" class="button-primary" value="Ayarları Kaydet">
</p>
</form>
</div>
<script>
(function($){
$(document).ready(function(){
$('#add_phrase').on('click', function(e){
e.preventDefault();
// Gizli şablonu kopyala ve görünür yap
var newField = $('.phrase_field_template').clone().removeClass('phrase_field_template').show();
$('#phrase_container').append(newField);
});
});
})(jQuery);
</script>
<?php
}
}
// Yazı/gönderi içeriğinde, ayarlardan kaydedilen tümceleri kaldıran fonksiyon
function engelle_filter_content($content) {
if ( get_option('engelle_active', 0) ) {
$phrases = get_option('engelle_phrases', array());
if ( !empty($phrases) ) {
foreach ( $phrases as $phrase ) {
$phrase = trim($phrase);
if ( $phrase !== '' ) {
// Tam eşleşme sağlamak için str_replace ile kaldırıyoruz
$content = str_replace($phrase, '', $content);
}
}
}
}
return $content;
}
add_filter('the_content', 'engelle_filter_content');
// [engelle] shortcodunu tanımlama (shortcode içerisinde de aynı işlem uygulanır)
function engelle_shortcode($atts, $content = null) {
if ( get_option('engelle_active', 0) ) {
$phrases = get_option('engelle_phrases', array());
if ( !empty($phrases) ) {
foreach ( $phrases as $phrase ) {
$phrase = trim($phrase);
if ( $phrase !== '' ) {
$content = str_replace($phrase, '', $content);
}
}
}
}
return $content;
}
add_shortcode('engelle', 'engelle_shortcode');