copilota sorduk
Kod:Tümünü seç
selam bir wordpress uygulaması yapalım. bu uygulama yeni klasör içinde olsun. bu uygulama [habergoster] etiketinin girildiği yazıların içinde o yazı ile alakalı (etiket, kategori en az yada hiç gösterimi olmayan) yazıları güzel bir görüntüde ufak kip bir kalıp içerisinde ufak öne çıkan reim ve belirli bir sayıda başlık içerecek şekilde göstersin ve tıklamayla o yazıya gitsin. kaçtane göstereceğini admin sayfasında belirleyelim. daha başka ince ayar boyut özelliği başlık karakter sayısı ayarlarını admin sayfasındda yapabilelim....
Tabii ki, bu harika bir fikir! Bir WordPress uygulaması oluşturmak için birkaç adım izlememiz gerekecek. Öncelikle temel yapılandırmayı yaparak başlayalım ve ardından özel eklentimizi geliştirelim.
Adım 1: Yeni Klasör Oluşturma ve WordPress Kurulumu
Sunucunuzda yeni bir klasör oluşturun ve WordPress kurulum dosyalarını buraya indirin.
WordPress'i bu klasöre kurun ve yapılandırma ayarlarını yapın.
Adım 2: Yeni Bir Plugin Oluşturma
WordPress kurulumunuzda /wp-content/plugins/ dizinine gidin ve yeni bir klasör oluşturun. Örneğin:Bu klasörün içinde related-posts-showcase.php adında bir dosya oluşturun.Kod:Tümünü seç
related-posts-showcase
Adım 3: Plugin Dosyasını Yapılandırma
Aşağıdaki kodudosyasına yapıştırarak eklenti temelini atın:Kod:Tümünü seç
related-posts-showcase.php
Kod:Tümünü seç
<?php /** * Plugin Name: Related Posts Showcase * Description: "[habergoster]" shortcode'u ile ilgili yazıları gösterir. * Version: 1.0 * Author: [Your Name] */ // Shortcode fonksiyonu function rps_related_posts_showcase($atts) { ob_start(); // Yönetici ayarlarını al $settings = get_option('rps_settings'); $post_limit = isset($settings['post_limit']) ? $settings['post_limit'] : 5; $title_length = isset($settings['title_length']) ? $settings['title_length'] : 50; // Geçerli gönderinin etiketlerini al $tags = wp_get_post_tags(get_the_ID(), array('fields' => 'ids')); // "habergoster" etiketinin ID'sini al $habergoster_tag = get_term_by('slug', 'habergoster', 'post_tag'); if ($habergoster_tag) { $habergoster_tag_id = $habergoster_tag->term_id; } else { return ''; // Eğer "habergoster" etiketi yoksa hiçbir şey gösterme } // Eğer geçerli gönderi "habergoster" etiketine sahipse if (has_tag('habergoster', get_the_ID())) { // İlgili yazıları sorgula $args = array( 'tag__in' => $tags, 'post__not_in' => array(get_the_ID()), 'posts_per_page' => $post_limit, 'ignore_sticky_posts' => 1, 'orderby' => 'rand' // İsterseniz farklı bir sıralama kullanabilirsiniz ); $query = new WP_Query($args); if ($query->have_posts()) { echo '<div class="rps-related-posts">'; while ($query->have_posts()) { $query->the_post(); $title = get_the_title(); if (mb_strlen($title) > $title_length) { $title = mb_substr($title, 0, $title_length) . '...'; } echo '<div class="rps-post">'; if (has_post_thumbnail()) { echo '<a href="' . get_permalink() . '">'; the_post_thumbnail('thumbnail'); echo '</a>'; } echo '<h4><a href="' . get_permalink() . '">' . esc_html($title) . '</a></h4>'; echo '</div>'; } echo '</div>'; } wp_reset_postdata(); } return ob_get_clean(); } add_shortcode('habergoster', 'rps_related_posts_showcase'); // Yönetici ayarları fonksiyonları function rps_register_settings() { register_setting('rps_settings_group', 'rps_settings'); } add_action('admin_init', 'rps_register_settings'); function rps_settings_page() { ?> <div class="wrap"> <h1>Related Posts Showcase Ayarları</h1> <form method="post" action="options.php"> <?php settings_fields('rps_settings_group'); ?> <?php $settings = get_option('rps_settings'); ?> <table class="form-table"> <tr valign="top"> <th scope="row">Gösterilecek Yazı Sayısı</th> <td><input type="number" name="rps_settings[post_limit]" value="<?php echo isset($settings['post_limit']) ? esc_attr($settings['post_limit']) : 5; ?>" /></td> </tr> <tr valign="top"> <th scope="row">Başlık Karakter Sınırı</th> <td><input type="number" name="rps_settings[title_length]" value="<?php echo isset($settings['title_length']) ? esc_attr($settings['title_length']) : 50; ?>" /></td> </tr> </table> <?php submit_button(); ?> </form> </div> <?php } function rps_add_settings_page() { add_options_page('Related Posts Showcase', 'Related Posts Showcase', 'manage_options', 'related-posts-showcase', 'rps_settings_page'); } add_action('admin_menu', 'rps_add_settings_page'); ?>Kod:Tümünü seç
[habergoster]
wordpress yeni haber gösterim eklentisi
wordpress yeni haber gösterim eklentisi
Re: wordpress yeni haber gösterim eklentisi
en uzunKod:Tümünü seç
related-posts-showcase.phpKod:Tümünü seç
<?php /** * Plugin Name: Related Posts Showcase * Description: "[habergoster]" shortcode'u ile yazıya benzer diğer yazıları gösterir. * Version: 1.4 * Author: [Your Name] */ // CSS dosyasını kuyruğa alma function rps_enqueue_assets() { wp_enqueue_style('rps-styles', plugins_url('css/rps-styles.css', __FILE__)); } add_action('wp_enqueue_scripts', 'rps_enqueue_assets'); // Dinamik stilleri ekleme function rps_dynamic_styles() { $settings = get_option('rps_settings'); $border_radius = isset($settings['border_radius']) ? intval($settings['border_radius']) : 0; $row_height = isset($settings['row_height']) ? intval($settings['row_height']) : 60; ?> <style type="text/css"> .rps-table th, .rps-table td, .rps-post { border-radius: <?php echo $border_radius; ?>px; height: <?php echo $row_height; ?>px; } </style> <?php } add_action('wp_head', 'rps_dynamic_styles'); // Yazı görüntülenme sayısını artırma fonksiyonları function rps_set_post_views($postID) { $count_key = 'post_views_count'; $count = get_post_meta($postID, $count_key, true); if (empty($count)) { $count = 1; update_post_meta($postID, $count_key, $count); } else { $count++; update_post_meta($postID, $count_key, $count); } } function rps_track_post_views($post_id) { if (!is_single()) return; if (empty($post_id)) { global $post; $post_id = $post->ID; } rps_set_post_views($post_id); } add_action('wp_head', 'rps_track_post_views'); // Shortcode fonksiyonu function rps_related_posts_showcase($atts) { ob_start(); // Yönetici ayarlarını al $settings = get_option('rps_settings'); $post_limit = isset($settings['post_limit']) ? intval($settings['post_limit']) : 5; $title_length = isset($settings['title_length']) ? intval($settings['title_length']) : 50; $table_style = isset($settings['table_style']) && $settings['table_style'] == 1; $row_height = isset($settings['row_height']) ? intval($settings['row_height']) : 60; $header_text = isset($settings['header_text']) ? esc_html($settings['header_text']) : 'İlgili Yazılar'; $column_count = isset($settings['column_count']) ? intval($settings['column_count']) : 2; $border_radius = isset($settings['border_radius']) ? intval($settings['border_radius']) : 0; // Geçerli gönderinin ID'sini al $post_id = get_the_ID(); // Geçerli gönderinin kategorilerini ve etiketlerini al $categories = wp_get_post_categories($post_id); $tags = wp_get_post_tags($post_id, array('fields' => 'ids')); // İlgili yazıları sorgula $args = array( 'post__not_in' => array($post_id), 'posts_per_page' => $post_limit, 'ignore_sticky_posts' => 1, 'orderby' => 'rand', 'tax_query' => array( 'relation' => 'OR', array( 'taxonomy' => 'category', 'field' => 'term_id', 'terms' => $categories, ), array( 'taxonomy' => 'post_tag', 'field' => 'term_id', 'terms' => $tags, ), ), ); // Eğer kategori ve etiket yoksa, en az görüntülenen yazıları getir if (empty($categories) && empty($tags)) { $args['orderby'] = 'meta_value_num'; $args['meta_key'] = 'post_views_count'; $args['order'] = 'ASC'; } $query = new WP_Query($args); if ($query->have_posts()) { if ($table_style) { echo '<table class="rps-table" style="border-radius:' . $border_radius . 'px;">'; echo '<thead><tr><th colspan="' . $column_count . '">' . $header_text . '</th></tr></thead><tbody>'; $counter = 0; while ($query->have_posts()) { $query->the_post(); $title = get_the_title(); if (mb_strlen($title) > $title_length) { $title = mb_substr($title, 0, $title_length) . '...'; } if ($counter % $column_count == 0) { echo '<tr class="rps-post">'; } echo '<td>'; if (has_post_thumbnail()) { echo '<a href="' . get_permalink() . '">'; the_post_thumbnail('thumbnail'); echo '</a><br>'; } echo '<a href="' . get_permalink() . '">' . esc_html($title) . '</a>'; echo '</td>'; $counter++; if ($counter % $column_count == 0) { echo '</tr>'; } } // Son satırı tamamla if ($counter % $column_count != 0) { $remaining = $column_count - ($counter % $column_count); for ($i = 0; $i < $remaining; $i++) { echo '<td></td>'; } echo '</tr>'; } echo '</tbody></table>'; } else { // Önceki stil (eğer tablo stili etkin değilse) echo '<div class="rps-related-posts">'; echo '<h3>' . $header_text . '</h3>'; while ($query->have_posts()) { $query->the_post(); $title = get_the_title(); if (mb_strlen($title) > $title_length) { $title = mb_substr($title, 0, $title_length) . '...'; } echo '<div class="rps-post" style="border-radius:' . $border_radius . 'px;">'; if (has_post_thumbnail()) { echo '<div class="rps-post-image">'; echo '<a href="' . get_permalink() . '">'; the_post_thumbnail('thumbnail'); echo '</a>'; echo '</div>'; } echo '<div class="rps-post-content">'; echo '<h4><a href="' . get_permalink() . '">' . esc_html($title) . '</a></h4>'; echo '</div>'; echo '</div>'; } echo '</div>'; } } else { echo '<p>İlgili yazı bulunamadı.</p>'; } wp_reset_postdata(); return ob_get_clean(); } add_shortcode('habergoster', 'rps_related_posts_showcase'); // Yönetici ayarları fonksiyonları function rps_register_settings() { register_setting('rps_settings_group', 'rps_settings'); } add_action('admin_init', 'rps_register_settings'); function rps_settings_page() { ?> <div class="wrap"> <h1>Related Posts Showcase Ayarları</h1> <form method="post" action="options.php"> <?php settings_fields('rps_settings_group'); ?> <?php $settings = get_option('rps_settings'); ?> <table class="form-table"> <!-- Mevcut ayarlar --> <tr valign="top"> <th scope="row">Gösterilecek Yazı Sayısı</th> <td><input type="number" name="rps_settings[post_limit]" value="<?php echo isset($settings['post_limit']) ? esc_attr($settings['post_limit']) : 5; ?>" /></td> </tr> <tr valign="top"> <th scope="row">Başlık Karakter Sınırı</th> <td><input type="number" name="rps_settings[title_length]" value="<?php echo isset($settings['title_length']) ? esc_attr($settings['title_length']) : 50; ?>" /></td> </tr> <!-- Yeni ayarlar --> <tr valign="top"> <th scope="row">Satır Yüksekliği (px)</th> <td><input type="number" name="rps_settings[row_height]" value="<?php echo isset($settings['row_height']) ? esc_attr($settings['row_height']) : 60; ?>" /></td> </tr> <tr valign="top"> <th scope="row">Üst Başlık Metni</th> <td><input type="text" name="rps_settings[header_text]" value="<?php echo isset($settings['header_text']) ? esc_attr($settings['header_text']) : 'İlgili Yazılar'; ?>" /></td> </tr> <tr valign="top"> <th scope="row">Sütun Sayısı</th> <td><input type="number" name="rps_settings[column_count]" value="<?php echo isset($settings['column_count']) ? esc_attr($settings['column_count']) : 2; ?>" min="1" /></td> </tr> <tr valign="top"> <th scope="row">Tablo Stili Etkinleştir</th> <td> <input type="checkbox" name="rps_settings[table_style]" value="1" <?php checked(1, isset($settings['table_style']) ? $settings['table_style'] : 0); ?> /> </td> </tr> <tr valign="top"> <th scope="row">Köşe Yuvarlatma (px)</th> <td><input type="number" name="rps_settings[border_radius]" value="<?php echo isset($settings['border_radius']) ? esc_attr($settings['border_radius']) : 0; ?>" /></td> </tr> </table> <?php submit_button(); ?> </form> </div> <?php } function rps_add_settings_page() { add_options_page('Related Posts Showcase', 'Related Posts Showcase', 'manage_options', 'related-posts-showcase', 'rps_settings_page'); } add_action('admin_menu', 'rps_add_settings_page'); ?>Kod:Tümünü seç
css/rps-styles.cssKod:Tümünü seç
/* Tablo stili */ .rps-table { width: 100%; border-collapse: collapse; margin-bottom: 20px; text-align: center; } .rps-table th, .rps-table td { border: 1px solid #ccc; padding: 8px; } .rps-table th { background-color: #f2f2f2; font-size: 16px; font-weight: bold; } .rps-table td img { max-width: 100%; height: auto; } .rps-table td a { text-decoration: none; color: #333; } .rps-table td a:hover { text-decoration: underline; } /* Genel stil ayarları */ .rps-related-posts { display: flex; flex-direction: column; gap: 5px; } .rps-related-posts h3 { font-size: 18px; margin: 0; text-align: center; } .rps-post { display: flex; align-items: center; padding: 8px; border: 1px solid #ccc; transition: background-color 0.2s; /* Köşe yuvarlatma dinamik olarak eklenecek */ } .rps-post:hover { background-color: #f5f5f5; } .rps-post-image { flex-shrink: 0; margin-right: 10px; } .rps-post-image img { width: 100%; height: 100%; object-fit: cover; /* Köşe yuvarlatma dinamik olarak eklenecek */ } .rps-post-content { flex: 1; overflow: hidden; } .rps-post-content h4 { font-size: 14px; margin: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .rps-post-content h4 a { text-decoration: none; color: #333; } .rps-post-content h4 a:hover { text-decoration: underline; }
Re: wordpress yeni haber gösterim eklentisi
son uzun dosya
Kod:Tümünü seç
/* Tablo stili */
.rps-table {
width: 100%;
border-collapse: collapse;
margin-bottom: 20px;
text-align: center;
}
.rps-table th,
.rps-table td {
border: 1px solid #ccc;
padding: 8px;
}
.rps-table th {
background-color: #f2f2f2;
font-size: 16px;
font-weight: bold;
}
.rps-table td img {
max-width: 100%;
height: auto;
}
.rps-table td a {
text-decoration: none;
color: #333;
}
.rps-table td a:hover {
text-decoration: underline;
}
/* Genel stil ayarları */
.rps-related-posts {
display: flex;
flex-direction: column;
gap: 5px;
}
.rps-related-posts h3 {
font-size: 18px;
margin: 0;
text-align: center;
}
.rps-post {
display: flex;
align-items: center;
padding: 8px;
border: 1px solid #ccc;
transition: background-color 0.2s;
/* Köşe yuvarlatma dinamik olarak eklenecek */
}
.rps-post:hover {
background-color: #f5f5f5;
}
.rps-post-image {
flex-shrink: 0;
margin-right: 10px;
}
.rps-post-image img {
width: 100%;
height: 100%;
object-fit: cover;
/* Köşe yuvarlatma dinamik olarak eklenecek */
}
.rps-post-content {
flex: 1;
overflow: hidden;
}
.rps-post-content h4 {
font-size: 14px;
margin: 0;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.rps-post-content h4 a {
text-decoration: none;
color: #333;
}
.rps-post-content h4 a:hover {
text-decoration: underline;
}Kod:Tümünü seç
<?php
/**
* Plugin Name: Related Posts Showcase
* Description: "[habergoster]" kısa kodu ile yazıya benzer diğer yazıları gösterir.
* Version: 1.6
* Author: [Your Name]
*/
// CSS dosyasını kuyruğa alma
function rps_enqueue_assets() {
wp_enqueue_style('rps-styles', plugins_url('css/rps-styles.css', __FILE__));
}
add_action('wp_enqueue_scripts', 'rps_enqueue_assets');
// Dinamik stilleri ekleme
function rps_dynamic_styles() {
$settings = get_option('rps_settings');
$border_radius = isset($settings['border_radius']) ? intval($settings['border_radius']) : 0;
$row_height = isset($settings['row_height']) ? intval($settings['row_height']) : 60;
$header_height = isset($settings['header_height']) ? intval($settings['header_height']) : 30;
?>
<style type="text/css">
.rps-table th, .rps-table td, .rps-post, .rps-post-image img {
border-radius: <?php echo $border_radius; ?>px;
}
.rps-post {
height: <?php echo $row_height; ?>px;
}
.rps-post-image, .rps-post-image img {
width: <?php echo $row_height; ?>px;
height: <?php echo $row_height; ?>px;
}
.rps-related-posts h3 {
height: <?php echo $header_height; ?>px;
line-height: <?php echo $header_height; ?>px;
}
</style>
<?php
}
add_action('wp_head', 'rps_dynamic_styles');
// Yazı görüntülenme sayısını artırma fonksiyonları
function rps_set_post_views($postID) {
$count_key = 'post_views_count';
$count = get_post_meta($postID, $count_key, true);
if (empty($count)) {
$count = 1;
update_post_meta($postID, $count_key, $count);
} else {
$count++;
update_post_meta($postID, $count_key, $count);
}
}
function rps_track_post_views($post_id) {
if (!is_single()) return;
if (empty($post_id)) {
global $post;
$post_id = $post->ID;
}
rps_set_post_views($post_id);
}
add_action('wp_head', 'rps_track_post_views');
// Shortcode fonksiyonu
function rps_related_posts_showcase($atts) {
ob_start();
// Yönetici ayarlarını al
$settings = get_option('rps_settings');
$post_limit = isset($settings['post_limit']) ? intval($settings['post_limit']) : 5;
$title_length = isset($settings['title_length']) ? intval($settings['title_length']) : 50;
$table_style = isset($settings['table_style']) && $settings['table_style'] == 1;
$row_height = isset($settings['row_height']) ? intval($settings['row_height']) : 60;
$header_text = isset($settings['header_text']) ? esc_html($settings['header_text']) : 'İlgili Yazılar';
$header_height = isset($settings['header_height']) ? intval($settings['header_height']) : 30;
$column_count = isset($settings['column_count']) ? intval($settings['column_count']) : 2;
$border_radius = isset($settings['border_radius']) ? intval($settings['border_radius']) : 0;
// Geçerli gönderinin ID'sini al
$post_id = get_the_ID();
// Geçerli gönderinin kategorilerini ve etiketlerini al
$categories = wp_get_post_categories($post_id);
$tags = wp_get_post_tags($post_id, array('fields' => 'ids'));
// İlgili yazıları sorgula
$args = array(
'post__not_in' => array($post_id),
'posts_per_page' => $post_limit,
'ignore_sticky_posts' => 1,
'orderby' => 'rand',
'tax_query' => array(
'relation' => 'OR',
array(
'taxonomy' => 'category',
'field' => 'term_id',
'terms' => $categories,
),
array(
'taxonomy' => 'post_tag',
'field' => 'term_id',
'terms' => $tags,
),
),
);
// Eğer kategori ve etiket yoksa, en az görüntülenen yazıları getir
if (empty($categories) && empty($tags)) {
$args['orderby'] = 'meta_value_num';
$args['meta_key'] = 'post_views_count';
$args['order'] = 'ASC';
}
$query = new WP_Query($args);
if ($query->have_posts()) {
if ($table_style) {
// Tablo stili
echo '<table class="rps-table" style="border-radius:' . $border_radius . 'px;">';
echo '<thead><tr><th colspan="' . $column_count . '" style="height: ' . $header_height . 'px; line-height: ' . $header_height . 'px;">' . $header_text . '</th></tr></thead><tbody>';
$counter = 0;
while ($query->have_posts()) {
$query->the_post();
$title = get_the_title();
if (mb_strlen($title) > $title_length) {
$title = mb_substr($title, 0, $title_length) . '...';
}
if ($counter % $column_count == 0) {
echo '<tr class="rps-post">';
}
echo '<td>';
if (has_post_thumbnail()) {
echo '<a href="' . get_permalink() . '">';
the_post_thumbnail('thumbnail', array('style' => 'width: ' . $row_height . 'px; height: ' . $row_height . 'px; object-fit: cover;'));
echo '</a><br>';
}
echo '<a href="' . get_permalink() . '">' . esc_html($title) . '</a>';
echo '</td>';
$counter++;
if ($counter % $column_count == 0) {
echo '</tr>';
}
}
// Son satırı tamamla
if ($counter % $column_count != 0) {
$remaining = $column_count - ($counter % $column_count);
for ($i = 0; $i < $remaining; $i++) {
echo '<td></td>';
}
echo '</tr>';
}
echo '</tbody></table>';
} else {
// Liste görünümü
echo '<div class="rps-related-posts">';
echo '<h3 style="height: ' . $header_height . 'px; line-height: ' . $header_height . 'px;">' . $header_text . '</h3>';
while ($query->have_posts()) {
$query->the_post();
$title = get_the_title();
if (mb_strlen($title) > $title_length) {
$title = mb_substr($title, 0, $title_length) . '...';
}
echo '<div class="rps-post" style="border-radius:' . $border_radius . 'px;">';
if (has_post_thumbnail()) {
echo '<div class="rps-post-image">';
echo '<a href="' . get_permalink() . '">';
the_post_thumbnail('full');
echo '</a>';
echo '</div>';
}
echo '<div class="rps-post-content">';
echo '<h4><a href="' . get_permalink() . '">' . esc_html($title) . '</a></h4>';
echo '</div>';
echo '</div>';
}
echo '</div>';
}
} else {
echo '<p>İlgili yazı bulunamadı.</p>';
}
wp_reset_postdata();
return ob_get_clean();
}
add_shortcode('habergoster', 'rps_related_posts_showcase');
// Yönetici ayarları fonksiyonları
function rps_register_settings() {
register_setting('rps_settings_group', 'rps_settings');
}
add_action('admin_init', 'rps_register_settings');
function rps_settings_page() {
?>
<div class="wrap">
<h1>Related Posts Showcase Ayarları</h1>
<form method="post" action="options.php">
<?php settings_fields('rps_settings_group'); ?>
<?php $settings = get_option('rps_settings'); ?>
<table class="form-table">
<!-- Mevcut ve yeni ayarlar -->
<tr valign="top">
<th scope="row">Gösterilecek Yazı Sayısı</th>
<td><input type="number" name="rps_settings[post_limit]" value="<?php echo esc_attr($settings['post_limit'] ?? 5); ?>" /></td>
</tr>
<tr valign="top">
<th scope="row">Başlık Karakter Sınırı</th>
<td><input type="number" name="rps_settings[title_length]" value="<?php echo esc_attr($settings['title_length'] ?? 50); ?>" /></td>
</tr>
<tr valign="top">
<th scope="row">Satır Yüksekliği (px)</th>
<td><input type="number" name="rps_settings[row_height]" value="<?php echo esc_attr($settings['row_height'] ?? 60); ?>" /></td>
</tr>
<tr valign="top">
<th scope="row">Üst Başlık Metni</th>
<td><input type="text" name="rps_settings[header_text]" value="<?php echo esc_attr($settings['header_text'] ?? 'İlgili Yazılar'); ?>" /></td>
</tr>
<tr valign="top">
<th scope="row">Başlık Yüksekliği (px)</th>
<td><input type="number" name="rps_settings[header_height]" value="<?php echo esc_attr($settings['header_height'] ?? 30); ?>" /></td>
</tr>
<tr valign="top">
<th scope="row">Sütun Sayısı</th>
<td><input type="number" name="rps_settings[column_count]" value="<?php echo esc_attr($settings['column_count'] ?? 2); ?>" min="1" /></td>
</tr>
<tr valign="top">
<th scope="row">Tablo Stili Etkinleştir</th>
<td>
<input type="checkbox" name="rps_settings[table_style]" value="1" <?php checked(1, $settings['table_style'] ?? 0); ?> />
</td>
</tr>
<tr valign="top">
<th scope="row">Köşe Yuvarlatma (px)</th>
<td><input type="number" name="rps_settings[border_radius]" value="<?php echo esc_attr($settings['border_radius'] ?? 0); ?>" /></td>
</tr>
</table>
<?php submit_button(); ?>
</form>
</div>
<?php
}
function rps_add_settings_page() {
add_options_page('Related Posts Showcase', 'Related Posts Showcase', 'manage_options', 'related-posts-showcase', 'rps_settings_page');
}
add_action('admin_menu', 'rps_add_settings_page');
?>
Re: wordpress yeni haber gösterim eklentisi
dosya yapısıKod:Tümünü seç
wp-content/ └── plugins/ └── related-posts-showcase/ ├── related-posts-showcase.php └── css/ └── rps-styles.css └── js/ └── rps-scripts.js
Re: wordpress yeni haber gösterim eklentisi
çalışan kodlar ve güzel
Kod:Tümünü seç
/* Genel stil ayarları */ .rps-related-posts { display: flex; flex-direction: column; gap: 10px; } .rps-related-posts h3 { font-size: 20px; margin: 0; text-align: center; height: var(--header-height); line-height: var(--header-height); } .rps-posts-wrapper { display: flex; flex-direction: column; gap: 10px; } .rps-post { display: flex; align-items: center; padding: 8px; border: 1px solid #ccc; border-radius: var(--border-radius); transition: background-color 0.2s; height: var(--row-height); overflow: hidden; /* Satırın yüksekliğini aşan içerikleri gizlemek için */ } .rps-post:hover { background-color: #f5f5f5; } .rps-post-image { flex-shrink: 0; margin-right: 10px; height: 100%; } .rps-post-image img { height: 100%; width: auto; object-fit: cover; border-radius: var(--image-border-radius); } .rps-post-content { flex: 1; overflow: hidden; } .rps-post-content h4 { font-size: 16px; margin: 0; line-height: 1.2; } .rps-post-content h4 a { text-decoration: none; color: #333; } .rps-post-content h4 a:hover { text-decoration: underline; } /* Responsive Tasarım */ @media (max-width: 600px) { .rps-post { flex-direction: column; align-items: flex-start; height: auto; } .rps-post-image { margin-right: 0; margin-bottom: 10px; height: auto; width: 100%; } .rps-post-image img { width: 100%; height: auto; } }Kod:Tümünü seç
<?php /** * Plugin Name: Related Posts Showcase * Description: "[habergoster]" kısa kodu ile yazıya benzer diğer yazıları gösterir. * Version: 1.8 * Author: [Your Name] */ // CSS dosyasını kuyruğa alma function rps_enqueue_assets() { wp_enqueue_style('rps-styles', plugins_url('css/rps-styles.css', __FILE__)); } add_action('wp_enqueue_scripts', 'rps_enqueue_assets'); // Dinamik stilleri ekleme function rps_dynamic_styles() { $settings = get_option('rps_settings'); $border_radius = intval($settings['border_radius'] ?? 5); $row_height = intval($settings['row_height'] ?? 80); $header_height = intval($settings['header_height'] ?? 30); $image_border_radius = intval($settings['image_border_radius'] ?? 5); echo '<style type="text/css"> :root { --border-radius: ' . $border_radius . 'px; --row-height: ' . $row_height . 'px; --header-height: ' . $header_height . 'px; --image-border-radius: ' . $image_border_radius . 'px; } .rps-related-posts h3 { height: var(--header-height); line-height: var(--header-height); } </style>'; } add_action('wp_head', 'rps_dynamic_styles'); // Shortcode fonksiyonu function rps_related_posts_showcase($atts) { ob_start(); // Yönetici ayarlarını al $settings = get_option('rps_settings'); $post_limit = intval($settings['post_limit'] ?? 5); $title_length = intval($settings['title_length'] ?? 50); $row_height = intval($settings['row_height'] ?? 80); $header_text = esc_html($settings['header_text'] ?? 'İlgili Yazılar'); $header_height = intval($settings['header_height'] ?? 30); $border_radius = intval($settings['border_radius'] ?? 5); $image_border_radius = intval($settings['image_border_radius'] ?? 5); // Geçerli gönderinin ID'sini al $post_id = get_the_ID(); // Geçerli gönderinin kategorilerini ve etiketlerini al $categories = wp_get_post_categories($post_id); $tags = wp_get_post_tags($post_id, array('fields' => 'ids')); // İlgili yazıları sorgula $args = array( 'post__not_in' => array($post_id), 'posts_per_page' => $post_limit, 'ignore_sticky_posts' => 1, 'orderby' => 'rand', 'tax_query' => array( 'relation' => 'OR', array( 'taxonomy' => 'category', 'field' => 'term_id', 'terms' => $categories, ), array( 'taxonomy' => 'post_tag', 'field' => 'term_id', 'terms' => $tags, ), ), ); // Eğer kategori ve etiket yoksa, en az görüntülenen yazıları getir if (empty($categories) && empty($tags)) { $args['orderby'] = 'meta_value_num'; $args['meta_key'] = 'post_views_count'; $args['order'] = 'ASC'; } $query = new WP_Query($args); if ($query->have_posts()) { // Liste görünümü echo '<div class="rps-related-posts">'; echo '<h3>' . $header_text . '</h3>'; // Başlık // Ana kapsayıcı div echo '<div class="rps-posts-wrapper">'; while ($query->have_posts()) { $query->the_post(); $title = get_the_title(); if (mb_strlen($title) > $title_length) { $title = mb_substr($title, 0, $title_length) . '...'; } echo '<div class="rps-post">'; if (has_post_thumbnail()) { echo '<div class="rps-post-image">'; echo '<a href="' . get_permalink() . '">'; the_post_thumbnail('full'); echo '</a>'; echo '</div>'; } echo '<div class="rps-post-content">'; echo '<h4><a href="' . get_permalink() . '">' . esc_html($title) . '</a></h4>'; echo '</div>'; echo '</div>'; // .rps-post } echo '</div>'; // .rps-posts-wrapper echo '</div>'; // .rps-related-posts } else { echo '<p>İlgili yazı bulunamadı.</p>'; } wp_reset_postdata(); return ob_get_clean(); } add_shortcode('habergoster', 'rps_related_posts_showcase'); // Yönetici ayarları fonksiyonları function rps_register_settings() { register_setting('rps_settings_group', 'rps_settings'); } add_action('admin_init', 'rps_register_settings'); function rps_settings_page() { ?> <div class="wrap"> <h1>Related Posts Showcase Ayarları</h1> <form method="post" action="options.php"> <?php settings_fields('rps_settings_group'); ?> <?php $settings = get_option('rps_settings'); ?> <table class="form-table"> <!-- Mevcut ve yeni ayarlar --> <tr valign="top"> <th scope="row">Gösterilecek Yazı Sayısı</th> <td><input type="number" name="rps_settings[post_limit]" value="<?php echo esc_attr($settings['post_limit'] ?? 5); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Başlık Karakter Sınırı</th> <td><input type="number" name="rps_settings[title_length]" value="<?php echo esc_attr($settings['title_length'] ?? 50); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Satır Yüksekliği (px)</th> <td><input type="number" name="rps_settings[row_height]" value="<?php echo esc_attr($settings['row_height'] ?? 80); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Üst Başlık Metni</th> <td><input type="text" name="rps_settings[header_text]" value="<?php echo esc_attr($settings['header_text'] ?? 'İlgili Yazılar'); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Başlık Yüksekliği (px)</th> <td><input type="number" name="rps_settings[header_height]" value="<?php echo esc_attr($settings['header_height'] ?? 30); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Köşe Yuvarlatma (px)</th> <td><input type="number" name="rps_settings[border_radius]" value="<?php echo esc_attr($settings['border_radius'] ?? 5); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Resim Köşe Yuvarlatma (px)</th> <td><input type="number" name="rps_settings[image_border_radius]" value="<?php echo esc_attr($settings['image_border_radius'] ?? 5); ?>" /></td> </tr> </table> <?php submit_button(); ?> </form> </div> <?php } function rps_add_settings_page() { add_options_page('Related Posts Showcase', 'Related Posts Showcase', 'manage_options', 'related-posts-showcase', 'rps_settings_page'); } add_action('admin_menu', 'rps_add_settings_page');
Re: wordpress yeni haber gösterim eklentisi
çalışan son kodlarKod:Tümünü seç
/* Genel stil ayarlar覺 */ .rps-related-posts { display: flex; flex-direction: column; gap: 10px; } .rps-related-posts h3 { font-size: 20px; margin: 0; text-align: center; height: var(--header-height); line-height: var(--header-height); } .rps-posts-wrapper { display: flex; flex-direction: column; gap: 10px; } .rps-post { display: flex; align-items: center; padding: 8px; border: 1px solid #ccc; border-radius: var(--border-radius); transition: background-color 0.2s; height: var(--row-height); overflow: hidden; } .rps-post:hover { background-color: #f5f5f5; } .rps-post-image { flex-shrink: 0; margin-right: 10px; height: 100%; } .rps-post-image img { height: 100%; width: auto; object-fit: cover; border-radius: var(--image-border-radius); } .rps-post-content { flex: 1; overflow: hidden; } .rps-post-header { display: flex; justify-content: space-between; align-items: center; } .rps-post-header h4 { margin: 0; font-size: 16px; line-height: 1.2; } .rps-post-header h4 a { text-decoration: none; color: #333; } .rps-post-header h4 a:hover { text-decoration: underline; } .rps-post-views { font-size: 14px; color: #555; display: flex; align-items: center; margin-left: 10px; } /* Responsive Tasar覺m */ @media (max-width: 600px) { .rps-post { flex-direction: column; align-items: flex-start; height: auto; } .rps-post-image { margin-right: 0; margin-bottom: 10px; height: auto; width: 100%; } .rps-post-image img { width: 100%; height: auto; } .rps-post-header { flex-direction: row; width: 100%; } .rps-post-header h4 { flex: 1; } }Kod:Tümünü seç
<?php /** * Plugin Name: Related Posts Showcase * Description: "[habergoster]" kısa kodu ile yazıya benzer diğer yazıları gösterir. * Version: 1.9 * Author: [Your Name] */ // CSS dosyasını kuyruğa alma function rps_enqueue_assets() { wp_enqueue_style('rps-styles', plugins_url('css/rps-styles.css', __FILE__)); } add_action('wp_enqueue_scripts', 'rps_enqueue_assets'); // Dinamik stilleri ekleme function rps_dynamic_styles() { $settings = get_option('rps_settings'); $border_radius = intval($settings['border_radius'] ?? 5); $row_height = intval($settings['row_height'] ?? 80); $header_height = intval($settings['header_height'] ?? 30); $image_border_radius = intval($settings['image_border_radius'] ?? 5); echo '<style type="text/css"> :root { --border-radius: ' . $border_radius . 'px; --row-height: ' . $row_height . 'px; --header-height: ' . $header_height . 'px; --image-border-radius: ' . $image_border_radius . 'px; } .rps-related-posts h3 { height: var(--header-height); line-height: var(--header-height); } </style>'; } add_action('wp_head', 'rps_dynamic_styles'); // Yazı görüntülenme sayısını artırma fonksiyonları function rps_set_post_views($postID) { $count_key = 'post_views_count'; $count = get_post_meta($postID, $count_key, true); if ($count == '') { $count = 1; update_post_meta($postID, $count_key, $count); } else { $count++; update_post_meta($postID, $count_key, $count); } } function rps_track_post_views($post_id) { if (!is_single()) return; if (empty($post_id)) { global $post; $post_id = $post->ID; } rps_set_post_views($post_id); } add_action('wp_head', 'rps_track_post_views'); // Shortcode fonksiyonu function rps_related_posts_showcase($atts) { ob_start(); // Yönetici ayarlarını al $settings = get_option('rps_settings'); $post_limit = intval($settings['post_limit'] ?? 5); $title_length = intval($settings['title_length'] ?? 50); $row_height = intval($settings['row_height'] ?? 80); $header_text = esc_html($settings['header_text'] ?? 'İlgili Yazılar'); $header_height = intval($settings['header_height'] ?? 30); $border_radius = intval($settings['border_radius'] ?? 5); $image_border_radius = intval($settings['image_border_radius'] ?? 5); // Geçerli gönderinin ID'sini al $post_id = get_the_ID(); // Geçerli gönderinin kategorilerini ve etiketlerini al $categories = wp_get_post_categories($post_id); $tags = wp_get_post_tags($post_id, array('fields' => 'ids')); // İlgili yazıları sorgula $args = array( 'post__not_in' => array($post_id), 'posts_per_page' => $post_limit, 'ignore_sticky_posts' => 1, 'orderby' => 'rand', 'tax_query' => array( 'relation' => 'OR', array( 'taxonomy' => 'category', 'field' => 'term_id', 'terms' => $categories, ), array( 'taxonomy' => 'post_tag', 'field' => 'term_id', 'terms' => $tags, ), ), ); // Eğer kategori ve etiket yoksa, en az görüntülenen yazıları getir if (empty($categories) && empty($tags)) { $args['orderby'] = 'meta_value_num'; $args['meta_key'] = 'post_views_count'; $args['order'] = 'ASC'; } $query = new WP_Query($args); if ($query->have_posts()) { // Liste görünümü echo '<div class="rps-related-posts">'; echo '<h3>' . $header_text . '</h3>'; // Başlık // Ana kapsayıcı div echo '<div class="rps-posts-wrapper">'; while ($query->have_posts()) { $query->the_post(); // Yazı başlığını al ve karakter sınırını uygula $title = get_the_title(); if (mb_strlen($title) > $title_length) { $title = mb_substr($title, 0, $title_length) . '...'; } // Yazı görüntülenme sayısını al $views = get_post_meta(get_the_ID(), 'post_views_count', true); $views = $views ? $views : 0; echo '<div class="rps-post">'; if (has_post_thumbnail()) { echo '<div class="rps-post-image">'; echo '<a href="' . get_permalink() . '">'; the_post_thumbnail('full'); echo '</a>'; echo '</div>'; } echo '<div class="rps-post-content">'; // Başlık ve görüntülenme sayısı kapsayıcısı echo '<div class="rps-post-header">'; echo '<h4><a href="' . get_permalink() . '">' . esc_html($title) . '</a></h4>'; // Görüntülenme sayısı ve göz emojisi echo '<div class="rps-post-views">'; echo '👁️ ' . intval($views); echo '</div>'; echo '</div>'; // .rps-post-header echo '</div>'; // .rps-post-content echo '</div>'; // .rps-post } echo '</div>'; // .rps-posts-wrapper echo '</div>'; // .rps-related-posts } else { echo '<p>İlgili yazı bulunamadı.</p>'; } wp_reset_postdata(); return ob_get_clean(); } add_shortcode('habergoster', 'rps_related_posts_showcase'); // Yönetici ayarları fonksiyonları function rps_register_settings() { register_setting('rps_settings_group', 'rps_settings'); } add_action('admin_init', 'rps_register_settings'); function rps_settings_page() { ?> <div class="wrap"> <h1>Related Posts Showcase Ayarları</h1> <form method="post" action="options.php"> <?php settings_fields('rps_settings_group'); ?> <?php $settings = get_option('rps_settings'); ?> <table class="form-table"> <!-- Mevcut ve yeni ayarlar --> <tr valign="top"> <th scope="row">Gösterilecek Yazı Sayısı</th> <td><input type="number" name="rps_settings[post_limit]" value="<?php echo esc_attr($settings['post_limit'] ?? 5); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Başlık Karakter Sınırı</th> <td><input type="number" name="rps_settings[title_length]" value="<?php echo esc_attr($settings['title_length'] ?? 50); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Satır Yüksekliği (px)</th> <td><input type="number" name="rps_settings[row_height]" value="<?php echo esc_attr($settings['row_height'] ?? 80); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Üst Başlık Metni</th> <td><input type="text" name="rps_settings[header_text]" value="<?php echo esc_attr($settings['header_text'] ?? 'İlgili Yazılar'); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Başlık Yüksekliği (px)</th> <td><input type="number" name="rps_settings[header_height]" value="<?php echo esc_attr($settings['header_height'] ?? 30); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Köşe Yuvarlatma (px)</th> <td><input type="number" name="rps_settings[border_radius]" value="<?php echo esc_attr($settings['border_radius'] ?? 5); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Resim Köşe Yuvarlatma (px)</th> <td><input type="number" name="rps_settings[image_border_radius]" value="<?php echo esc_attr($settings['image_border_radius'] ?? 5); ?>" /></td> </tr> </table> <?php submit_button(); ?> </form> </div> <?php } function rps_add_settings_page() { add_options_page('Related Posts Showcase', 'Related Posts Showcase', 'manage_options', 'related-posts-showcase', 'rps_settings_page'); } add_action('admin_menu', 'rps_add_settings_page'); ?>
Re: wordpress yeni haber gösterim eklentisi
çalışan ve güzel çalışan cgptKod:Tümünü seç
<?php /** * Plugin Name: Related Posts Showcase * Description: "[habergoster]" kısa kodu ile yazıya benzer diğer yazıları gösterir. * Version: 2.0 * Author: [Your Name] */ // CSS dosyasını kuyruğa alma function rps_enqueue_assets() { wp_enqueue_style('rps-styles', plugins_url('css/rps-styles.css', __FILE__)); } add_action('wp_enqueue_scripts', 'rps_enqueue_assets'); // Dinamik stilleri ekleme function rps_dynamic_styles() { $settings = get_option('rps_settings'); $border_radius = intval($settings['border_radius'] ?? 5); $row_height = intval($settings['row_height'] ?? 80); $header_height = intval($settings['header_height'] ?? 30); $image_border_radius = intval($settings['image_border_radius'] ?? 5); echo '<style type="text/css"> :root { --border-radius: ' . $border_radius . 'px; --row-height: ' . $row_height . 'px; --header-height: ' . $header_height . 'px; --image-border-radius: ' . $image_border_radius . 'px; } .rps-related-posts h3 { height: var(--header-height); line-height: var(--header-height); } </style>'; } add_action('wp_head', 'rps_dynamic_styles'); // Yazı görüntülenme sayısını artırma fonksiyonları function rps_set_post_views($postID) { $count_key = 'post_views_count'; $count = get_post_meta($postID, $count_key, true); if ($count == '') { $count = 1; update_post_meta($postID, $count_key, $count); } else { $count++; update_post_meta($postID, $count_key, $count); } } function rps_track_post_views($post_id) { if (!is_single()) return; if (empty($post_id)) { global $post; $post_id = $post->ID; } rps_set_post_views($post_id); } add_action('wp_head', 'rps_track_post_views'); // Shortcode fonksiyonu function rps_related_posts_showcase($atts) { ob_start(); // Yönetici ayarlarını al $settings = get_option('rps_settings'); // Ayarlar için varsayılan değerler $min_views = intval($settings['min_views'] ?? 0); $max_views = intval($settings['max_views'] ?? PHP_INT_MAX); $post_limit = intval($settings['post_limit'] ?? 5); $title_length = intval($settings['title_length'] ?? 50); $header_text = $settings['header_text'] ?? 'İlgili Yazılar'; $start_date = $settings['start_date'] ?? ''; $end_date = $settings['end_date'] ?? ''; // Geçerli gönderinin ID'sini al $post_id = get_the_ID(); // Geçerli gönderinin kategorilerini ve etiketlerini al $categories = wp_get_post_categories($post_id); $tags = wp_get_post_tags($post_id, array('fields' => 'ids')); // Meta sorgusu $meta_query = array( 'relation' => 'OR', // `post_views_count` meta verisi olan yazılar için array( 'key' => 'post_views_count', 'value' => array($min_views, $max_views), 'type' => 'NUMERIC', 'compare' => 'BETWEEN', ), // `post_views_count` meta verisi olmayan yazılar için array( 'key' => 'post_views_count', 'compare' => 'NOT EXISTS', ), ); // Eğer minimum görüntülenme sayısı 1 veya daha büyükse, `NOT EXISTS` durumunu kaldırıyoruz if ($min_views > 0) { $meta_query = array( array( 'key' => 'post_views_count', 'value' => array($min_views, $max_views), 'type' => 'NUMERIC', 'compare' => 'BETWEEN', ), ); } // Tarih sorgusu $date_query = array(); if (!empty($start_date) || !empty($end_date)) { $date_query[] = array( 'after' => $start_date, 'before' => $end_date, 'inclusive' => true, ); } // İlgili yazıları sorgula $args = array( 'post__not_in' => array($post_id), 'posts_per_page' => $post_limit, 'ignore_sticky_posts' => 1, 'orderby' => 'rand', 'tax_query' => array( 'relation' => 'OR', array( 'taxonomy' => 'category', 'field' => 'term_id', 'terms' => $categories, ), array( 'taxonomy' => 'post_tag', 'field' => 'term_id', 'terms' => $tags, ), ), 'meta_query' => $meta_query, ); if (!empty($date_query)) { $args['date_query'] = $date_query; } $query = new WP_Query($args); if ($query->have_posts()) { // Liste görünümü echo '<div class="rps-related-posts">'; echo '<h3>' . esc_html($header_text) . '</h3>'; // Başlık // Ana kapsayıcı div echo '<div class="rps-posts-wrapper">'; while ($query->have_posts()) { $query->the_post(); // Yazı başlığını al ve karakter sınırını uygula $title = get_the_title(); if (mb_strlen($title) > $title_length) { $title = mb_substr($title, 0, $title_length) . '...'; } // Yazı görüntülenme sayısını al $views = get_post_meta(get_the_ID(), 'post_views_count', true); $views = $views ? $views : 0; echo '<div class="rps-post">'; if (has_post_thumbnail()) { echo '<div class="rps-post-image">'; echo '<a href="' . get_permalink() . '">'; the_post_thumbnail('full'); echo '</a>'; echo '</div>'; } echo '<div class="rps-post-content">'; // Başlık ve görüntülenme sayısı kapsayıcısı echo '<div class="rps-post-header">'; echo '<h4><a href="' . get_permalink() . '">' . esc_html($title) . '</a></h4>'; echo '<div class="rps-post-views">'; echo '👁️ ' . intval($views); echo '</div>'; echo '</div>'; // .rps-post-header echo '</div>'; // .rps-post-content echo '</div>'; // .rps-post } echo '</div>'; // .rps-posts-wrapper echo '</div>'; // .rps-related-posts } else { echo '<p>İlgili yazı bulunamadı.</p>'; } wp_reset_postdata(); return ob_get_clean(); } add_shortcode('habergoster', 'rps_related_posts_showcase'); // Yönetici ayarları fonksiyonları function rps_register_settings() { register_setting('rps_settings_group', 'rps_settings'); } add_action('admin_init', 'rps_register_settings'); function rps_settings_page() { $settings = get_option('rps_settings'); ?> <div class="wrap"> <h1>Related Posts Showcase Ayarları</h1> <form method="post" action="options.php"> <?php settings_fields('rps_settings_group'); ?> <table class="form-table"> <!-- Mevcut ve yeni ayarlar --> <tr valign="top"> <th scope="row">Gösterilecek Yazı Sayısı</th> <td><input type="number" name="rps_settings[post_limit]" value="<?php echo esc_attr($settings['post_limit'] ?? 5); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Başlık Karakter Sınırı</th> <td><input type="number" name="rps_settings[title_length]" value="<?php echo esc_attr($settings['title_length'] ?? 50); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Satır Yüksekliği (px)</th> <td><input type="number" name="rps_settings[row_height]" value="<?php echo esc_attr($settings['row_height'] ?? 80); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Üst Başlık Metni</th> <td><input type="text" name="rps_settings[header_text]" value="<?php echo esc_attr($settings['header_text'] ?? 'İlgili Yazılar'); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Başlık Yüksekliği (px)</th> <td><input type="number" name="rps_settings[header_height]" value="<?php echo esc_attr($settings['header_height'] ?? 30); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Köşe Yuvarlatma (px)</th> <td><input type="number" name="rps_settings[border_radius]" value="<?php echo esc_attr($settings['border_radius'] ?? 5); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Resim Köşe Yuvarlatma (px)</th> <td><input type="number" name="rps_settings[image_border_radius]" value="<?php echo esc_attr($settings['image_border_radius'] ?? 5); ?>" /></td> </tr> <!-- Yeni eklenen ayarlar --> <tr valign="top"> <th scope="row">Minimum Görüntülenme Sayısı</th> <td><input type="number" name="rps_settings[min_views]" value="<?php echo esc_attr($settings['min_views'] ?? 0); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Maksimum Görüntülenme Sayısı</th> <td><input type="number" name="rps_settings[max_views]" value="<?php echo esc_attr($settings['max_views'] ?? 10000); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Başlangıç Tarihi</th> <td><input type="date" name="rps_settings[start_date]" value="<?php echo esc_attr($settings['start_date'] ?? ''); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Bitiş Tarihi</th> <td><input type="date" name="rps_settings[end_date]" value="<?php echo esc_attr($settings['end_date'] ?? ''); ?>" /></td> </tr> </table> <?php submit_button(); ?> </form> </div> <?php } // Admin menüye ayar sayfasını ekle function rps_add_settings_page() { add_options_page('Related Posts Showcase', 'Related Posts Showcase', 'manage_options', 'related-posts-showcase', 'rps_settings_page'); } add_action('admin_menu', 'rps_add_settings_page'); ?>
Re: wordpress yeni haber gösterim eklentisi
gün bazlı tüm değerler girilecekKod:Tümünü seç
<?php /** * Plugin Name: Related Posts Showcase * Description: "[habergoster]" kısa kodu ile yazıya benzer diğer yazıları gösterir. * Version: 2.0 * Author: [Your Name] */ // CSS dosyasını kuyruğa alma function rps_enqueue_assets() { wp_enqueue_style('rps-styles', plugins_url('css/rps-styles.css', __FILE__)); } add_action('wp_enqueue_scripts', 'rps_enqueue_assets'); // Dinamik stilleri ekleme function rps_dynamic_styles() { $settings = get_option('rps_settings'); $border_radius = intval($settings['border_radius'] ?? 5); $row_height = intval($settings['row_height'] ?? 80); $header_height = intval($settings['header_height'] ?? 30); $image_border_radius = intval($settings['image_border_radius'] ?? 5); echo '<style type="text/css"> :root { --border-radius: ' . $border_radius . 'px; --row-height: ' . $row_height . 'px; --header-height: ' . $header_height . 'px; --image-border-radius: ' . $image_border_radius . 'px; } .rps-related-posts h3 { height: var(--header-height); line-height: var(--header-height); } </style>'; } add_action('wp_head', 'rps_dynamic_styles'); // Yazı görüntülenme sayısını artırma fonksiyonları function rps_set_post_views($postID) { $count_key = 'post_views_count'; $count = get_post_meta($postID, $count_key, true); if ($count == '') { $count = 1; update_post_meta($postID, $count_key, $count); } else { $count++; update_post_meta($postID, $count_key, $count); } } function rps_track_post_views($post_id) { if (!is_single()) return; if (empty($post_id)) { global $post; $post_id = $post->ID; } rps_set_post_views($post_id); } add_action('wp_head', 'rps_track_post_views'); // Shortcode fonksiyonu function rps_related_posts_showcase($atts) { ob_start(); // Yönetici ayarlarını al $settings = get_option('rps_settings'); // Ayarlar için varsayılan değerler $min_views = intval($settings['min_views'] ?? 0); $max_views = intval($settings['max_views'] ?? PHP_INT_MAX); $post_limit = intval($settings['post_limit'] ?? 5); $title_length = intval($settings['title_length'] ?? 50); $header_text = $settings['header_text'] ?? 'İlgili Yazılar'; $start_date = $settings['start_date'] ?? ''; $end_date = $settings['end_date'] ?? ''; $days_filter = isset($settings['days_filter']) && $settings['days_filter'] !== '' ? intval($settings['days_filter']) : 0; // Geçerli gönderinin ID'sini al $post_id = get_the_ID(); // Geçerli gönderinin kategorilerini ve etiketlerini al $categories = wp_get_post_categories($post_id); $tags = wp_get_post_tags($post_id, array('fields' => 'ids')); // Meta sorgusu $meta_query = array( 'relation' => 'OR', array( 'key' => 'post_views_count', 'value' => array($min_views, $max_views), 'type' => 'NUMERIC', 'compare' => 'BETWEEN', ), array( 'key' => 'post_views_count', 'compare' => 'NOT EXISTS', ), ); if ($min_views > 0) { $meta_query = array( array( 'key' => 'post_views_count', 'value' => array($min_views, $max_views), 'type' => 'NUMERIC', 'compare' => 'BETWEEN', ), ); } // Tarih sorgusu $date_query = array(); if ($days_filter > 0) { // Kullanıcının girdiği gün filtresine göre tarih değeri hesaplanıyor $after_date = date('Y-m-d H:i:s', strtotime("-{$days_filter} days")); $date_query[] = array( 'after' => $after_date, 'inclusive' => true, ); } elseif (!empty($start_date) || !empty($end_date)) { $date_query[] = array( 'after' => $start_date, 'before' => $end_date, 'inclusive' => true, ); } // İlgili yazıları sorgula $args = array( 'post__not_in' => array($post_id), 'posts_per_page' => $post_limit, 'ignore_sticky_posts'=> 1, 'orderby' => 'rand', 'tax_query' => array( 'relation' => 'OR', array( 'taxonomy' => 'category', 'field' => 'term_id', 'terms' => $categories, ), array( 'taxonomy' => 'post_tag', 'field' => 'term_id', 'terms' => $tags, ), ), 'meta_query' => $meta_query, ); if (!empty($date_query)) { $args['date_query'] = $date_query; } $query = new WP_Query($args); if ($query->have_posts()) { echo '<div class="rps-related-posts">'; echo '<h3>' . esc_html($header_text) . '</h3>'; echo '<div class="rps-posts-wrapper">'; while ($query->have_posts()) { $query->the_post(); $title = get_the_title(); if (mb_strlen($title) > $title_length) { $title = mb_substr($title, 0, $title_length) . '...'; } $views = get_post_meta(get_the_ID(), 'post_views_count', true); $views = $views ? $views : 0; echo '<div class="rps-post">'; if (has_post_thumbnail()) { echo '<div class="rps-post-image">'; echo '<a href="' . get_permalink() . '">'; the_post_thumbnail('full'); echo '</a>'; echo '</div>'; } echo '<div class="rps-post-content">'; echo '<div class="rps-post-header">'; echo '<h4><a href="' . get_permalink() . '">' . esc_html($title) . '</a></h4>'; echo '<div class="rps-post-views">👁️ ' . intval($views) . '</div>'; echo '</div>'; echo '</div>'; echo '</div>'; } echo '</div>'; echo '</div>'; } else { echo '<p>İlgili yazı bulunamadı.</p>'; } wp_reset_postdata(); return ob_get_clean(); } add_shortcode('habergoster', 'rps_related_posts_showcase'); // Yönetici ayarları fonksiyonları function rps_register_settings() { register_setting('rps_settings_group', 'rps_settings'); } add_action('admin_init', 'rps_register_settings'); function rps_settings_page() { $settings = get_option('rps_settings'); ?> <div class="wrap"> <h1>Related Posts Showcase Ayarları</h1> <form method="post" action="options.php"> <?php settings_fields('rps_settings_group'); ?> <table class="form-table"> <tr valign="top"> <th scope="row">Gösterilecek Yazı Sayısı</th> <td><input type="number" name="rps_settings[post_limit]" value="<?php echo esc_attr($settings['post_limit'] ?? 5); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Başlık Karakter Sınırı</th> <td><input type="number" name="rps_settings[title_length]" value="<?php echo esc_attr($settings['title_length'] ?? 50); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Satır Yüksekliği (px)</th> <td><input type="number" name="rps_settings[row_height]" value="<?php echo esc_attr($settings['row_height'] ?? 80); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Üst Başlık Metni</th> <td><input type="text" name="rps_settings[header_text]" value="<?php echo esc_attr($settings['header_text'] ?? 'İlgili Yazılar'); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Başlık Yüksekliği (px)</th> <td><input type="number" name="rps_settings[header_height]" value="<?php echo esc_attr($settings['header_height'] ?? 30); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Köşe Yuvarlatma (px)</th> <td><input type="number" name="rps_settings[border_radius]" value="<?php echo esc_attr($settings['border_radius'] ?? 5); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Resim Köşe Yuvarlatma (px)</th> <td><input type="number" name="rps_settings[image_border_radius]" value="<?php echo esc_attr($settings['image_border_radius'] ?? 5); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Minimum Görüntülenme Sayısı</th> <td><input type="number" name="rps_settings[min_views]" value="<?php echo esc_attr($settings['min_views'] ?? 0); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Maksimum Görüntülenme Sayısı</th> <td><input type="number" name="rps_settings[max_views]" value="<?php echo esc_attr($settings['max_views'] ?? 10000); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Geçmiş Gün Filtresi (gün)</th> <td><input type="number" name="rps_settings[days_filter]" value="<?php echo esc_attr($settings['days_filter'] ?? ''); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Başlangıç Tarihi</th> <td><input type="date" name="rps_settings[start_date]" value="<?php echo esc_attr($settings['start_date'] ?? ''); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Bitiş Tarihi</th> <td><input type="date" name="rps_settings[end_date]" value="<?php echo esc_attr($settings['end_date'] ?? ''); ?>" /></td> </tr> </table> <?php submit_button(); ?> </form> </div> <?php } function rps_add_settings_page() { add_options_page('Related Posts Showcase', 'Related Posts Showcase', 'manage_options', 'related-posts-showcase', 'rps_settings_page'); } add_action('admin_menu', 'rps_add_settings_page'); ?>
Re: wordpress yeni haber gösterim eklentisi
saat bazlı bu fena değil
Kod:Tümünü seç
<?php /** * Plugin Name: Related Posts Showcase * Description: "[habergoster]" kısa kodu ile yazıya benzer diğer yazıları gösterir. * Version: 2.0 * Author: [Your Name] */ // CSS dosyasını kuyruğa alma function rps_enqueue_assets() { wp_enqueue_style('rps-styles', plugins_url('css/rps-styles.css', __FILE__)); } add_action('wp_enqueue_scripts', 'rps_enqueue_assets'); // Dinamik stilleri ekleme function rps_dynamic_styles() { $settings = get_option('rps_settings'); $border_radius = intval($settings['border_radius'] ?? 5); $row_height = intval($settings['row_height'] ?? 80); $header_height = intval($settings['header_height'] ?? 30); $image_border_radius = intval($settings['image_border_radius'] ?? 5); echo '<style type="text/css"> :root { --border-radius: ' . $border_radius . 'px; --row-height: ' . $row_height . 'px; --header-height: ' . $header_height . 'px; --image-border-radius: ' . $image_border_radius . 'px; } .rps-related-posts h3 { height: var(--header-height); line-height: var(--header-height); } </style>'; } add_action('wp_head', 'rps_dynamic_styles'); // Yazı görüntülenme sayısını artırma fonksiyonları function rps_set_post_views($postID) { $count_key = 'post_views_count'; $count = get_post_meta($postID, $count_key, true); if ($count == '') { $count = 1; update_post_meta($postID, $count_key, $count); } else { $count++; update_post_meta($postID, $count_key, $count); } } function rps_track_post_views($post_id) { if (!is_single()) return; if (empty($post_id)) { global $post; $post_id = $post->ID; } rps_set_post_views($post_id); } add_action('wp_head', 'rps_track_post_views'); // Shortcode fonksiyonu function rps_related_posts_showcase($atts) { ob_start(); // Yönetici ayarlarını al $settings = get_option('rps_settings'); // Ayarlar için varsayılan değerler $min_views = intval($settings['min_views'] ?? 0); $max_views = intval($settings['max_views'] ?? PHP_INT_MAX); $post_limit = intval($settings['post_limit'] ?? 5); $title_length = intval($settings['title_length'] ?? 50); $header_text = $settings['header_text'] ?? 'İlgili Yazılar'; $start_date = $settings['start_date'] ?? ''; $end_date = $settings['end_date'] ?? ''; $hours_filter = (isset($settings['hours_filter']) && $settings['hours_filter'] !== '') ? intval($settings['hours_filter']) : 0; // Geçerli gönderinin ID'sini al $post_id = get_the_ID(); // Geçerli gönderinin kategorilerini ve etiketlerini al $categories = wp_get_post_categories($post_id); $tags = wp_get_post_tags($post_id, array('fields' => 'ids')); // Meta sorgusu $meta_query = array( 'relation' => 'OR', array( 'key' => 'post_views_count', 'value' => array($min_views, $max_views), 'type' => 'NUMERIC', 'compare' => 'BETWEEN', ), array( 'key' => 'post_views_count', 'compare' => 'NOT EXISTS', ), ); if ($min_views > 0) { $meta_query = array( array( 'key' => 'post_views_count', 'value' => array($min_views, $max_views), 'type' => 'NUMERIC', 'compare' => 'BETWEEN', ), ); } // Tarih sorgusu: yalnızca dolu filtreler dikkate alınacak $date_query = array(); if ($hours_filter > 0) { // Saat filtresi mevcutsa onu kullan; diğer tarih alanları dikkate alınmaz. $after_date = date('Y-m-d H:i:s', strtotime("-{$hours_filter} hours")); $date_query[] = array( 'after' => $after_date, 'inclusive' => true, ); } else { // Saat filtresi boşsa, başlangıç/bitiş tarih alanlarından dolu olanları ekle. $date_filter = array('inclusive' => true); if (!empty($start_date)) { $date_filter['after'] = $start_date; } if (!empty($end_date)) { $date_filter['before'] = $end_date; } // Eğer date_filter'da en az bir tarih değeri varsa, sorguya ekle. if (count($date_filter) > 1) { $date_query[] = $date_filter; } } // İlgili yazıları sorgula $args = array( 'post__not_in' => array($post_id), 'posts_per_page' => $post_limit, 'ignore_sticky_posts' => 1, 'orderby' => 'rand', 'tax_query' => array( 'relation' => 'OR', array( 'taxonomy' => 'category', 'field' => 'term_id', 'terms' => $categories, ), array( 'taxonomy' => 'post_tag', 'field' => 'term_id', 'terms' => $tags, ), ), 'meta_query' => $meta_query, ); if (!empty($date_query)) { $args['date_query'] = $date_query; } $query = new WP_Query($args); if ($query->have_posts()) { echo '<div class="rps-related-posts">'; echo '<h3>' . esc_html($header_text) . '</h3>'; echo '<div class="rps-posts-wrapper">'; while ($query->have_posts()) { $query->the_post(); $title = get_the_title(); if (mb_strlen($title) > $title_length) { $title = mb_substr($title, 0, $title_length) . '...'; } $views = get_post_meta(get_the_ID(), 'post_views_count', true); $views = $views ? $views : 0; echo '<div class="rps-post">'; if (has_post_thumbnail()) { echo '<div class="rps-post-image">'; echo '<a href="' . get_permalink() . '">'; the_post_thumbnail('full'); echo '</a>'; echo '</div>'; } echo '<div class="rps-post-content">'; echo '<div class="rps-post-header">'; echo '<h4><a href="' . get_permalink() . '">' . esc_html($title) . '</a></h4>'; echo '<div class="rps-post-views">👁️ ' . intval($views) . '</div>'; echo '</div>'; echo '</div>'; echo '</div>'; } echo '</div>'; echo '</div>'; } else { echo '<p>İlgili yazı bulunamadı.</p>'; } wp_reset_postdata(); return ob_get_clean(); } add_shortcode('habergoster', 'rps_related_posts_showcase'); // Yönetici ayarları fonksiyonları function rps_register_settings() { register_setting('rps_settings_group', 'rps_settings'); } add_action('admin_init', 'rps_register_settings'); function rps_settings_page() { $settings = get_option('rps_settings'); ?> <div class="wrap"> <h1>Related Posts Showcase Ayarları</h1> <form method="post" action="options.php"> <?php settings_fields('rps_settings_group'); ?> <table class="form-table"> <tr valign="top"> <th scope="row">Gösterilecek Yazı Sayısı</th> <td><input type="number" name="rps_settings[post_limit]" value="<?php echo esc_attr($settings['post_limit'] ?? 5); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Başlık Karakter Sınırı</th> <td><input type="number" name="rps_settings[title_length]" value="<?php echo esc_attr($settings['title_length'] ?? 50); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Satır Yüksekliği (px)</th> <td><input type="number" name="rps_settings[row_height]" value="<?php echo esc_attr($settings['row_height'] ?? 80); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Üst Başlık Metni</th> <td><input type="text" name="rps_settings[header_text]" value="<?php echo esc_attr($settings['header_text'] ?? 'İlgili Yazılar'); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Başlık Yüksekliği (px)</th> <td><input type="number" name="rps_settings[header_height]" value="<?php echo esc_attr($settings['header_height'] ?? 30); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Köşe Yuvarlatma (px)</th> <td><input type="number" name="rps_settings[border_radius]" value="<?php echo esc_attr($settings['border_radius'] ?? 5); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Resim Köşe Yuvarlatma (px)</th> <td><input type="number" name="rps_settings[image_border_radius]" value="<?php echo esc_attr($settings['image_border_radius'] ?? 5); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Minimum Görüntülenme Sayısı</th> <td><input type="number" name="rps_settings[min_views]" value="<?php echo esc_attr($settings['min_views'] ?? 0); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Maksimum Görüntülenme Sayısı</th> <td><input type="number" name="rps_settings[max_views]" value="<?php echo esc_attr($settings['max_views'] ?? 10000); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Geçmiş Saat Filtresi (saat)</th> <td><input type="number" name="rps_settings[hours_filter]" value="<?php echo esc_attr($settings['hours_filter'] ?? ''); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Başlangıç Tarihi</th> <td><input type="date" name="rps_settings[start_date]" value="<?php echo esc_attr($settings['start_date'] ?? ''); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Bitiş Tarihi</th> <td><input type="date" name="rps_settings[end_date]" value="<?php echo esc_attr($settings['end_date'] ?? ''); ?>" /></td> </tr> </table> <?php submit_button(); ?> </form> </div> <?php } function rps_add_settings_page() { add_options_page('Related Posts Showcase', 'Related Posts Showcase', 'manage_options', 'related-posts-showcase', 'rps_settings_page'); } add_action('admin_menu', 'rps_add_settings_page'); ?>
Re: wordpress yeni haber gösterim eklentisi
bu gibiKod:Tümünü seç
<?php /** * Plugin Name: Related Posts Showcase * Description: "[habergoster]" kısa kodu ile yazıya benzer diğer yazıları gösterir. * Version: 2.0 * Author: [Your Name] */ // CSS dosyasını kuyruğa alma function rps_enqueue_assets() { wp_enqueue_style('rps-styles', plugins_url('css/rps-styles.css', __FILE__)); } add_action('wp_enqueue_scripts', 'rps_enqueue_assets'); // Dinamik stilleri ekleme function rps_dynamic_styles() { $settings = get_option('rps_settings'); $border_radius = intval($settings['border_radius'] ?? 5); $row_height = intval($settings['row_height'] ?? 80); $header_height = intval($settings['header_height'] ?? 30); $image_border_radius = intval($settings['image_border_radius'] ?? 5); echo '<style type="text/css"> :root { --border-radius: ' . $border_radius . 'px; --row-height: ' . $row_height . 'px; --header-height: ' . $header_height . 'px; --image-border-radius: ' . $image_border_radius . 'px; } .rps-related-posts h3 { height: var(--header-height); line-height: var(--header-height); } </style>'; } add_action('wp_head', 'rps_dynamic_styles'); // Yazı görüntülenme sayısını artırma fonksiyonları function rps_set_post_views($postID) { $count_key = 'post_views_count'; $count = get_post_meta($postID, $count_key, true); if ($count == '') { $count = 1; update_post_meta($postID, $count_key, $count); } else { $count++; update_post_meta($postID, $count_key, $count); } } function rps_track_post_views($post_id) { if (!is_single()) return; if (empty($post_id)) { global $post; $post_id = $post->ID; } rps_set_post_views($post_id); } add_action('wp_head', 'rps_track_post_views'); // Shortcode fonksiyonu function rps_related_posts_showcase($atts) { ob_start(); // Yönetici ayarlarını al $settings = get_option('rps_settings'); // Ayarlar için varsayılan değerler $min_views = intval($settings['min_views'] ?? 0); $max_views = intval($settings['max_views'] ?? PHP_INT_MAX); $post_limit = intval($settings['post_limit'] ?? 5); $title_length = intval($settings['title_length'] ?? 50); $header_text = $settings['header_text'] ?? 'İlgili Yazılar'; $start_date = $settings['start_date'] ?? ''; $end_date = $settings['end_date'] ?? ''; $hours_filter = (isset($settings['hours_filter']) && $settings['hours_filter'] !== '') ? intval($settings['hours_filter']) : 0; // Geçerli gönderinin ID'sini al $post_id = get_the_ID(); // Geçerli gönderinin kategorilerini ve etiketlerini al $categories = wp_get_post_categories($post_id); $tags = wp_get_post_tags($post_id, array('fields' => 'ids')); // Meta sorgusu $meta_query = array( 'relation' => 'OR', array( 'key' => 'post_views_count', 'value' => array($min_views, $max_views), 'type' => 'NUMERIC', 'compare' => 'BETWEEN', ), array( 'key' => 'post_views_count', 'compare' => 'NOT EXISTS', ), ); if ($min_views > 0) { $meta_query = array( array( 'key' => 'post_views_count', 'value' => array($min_views, $max_views), 'type' => 'NUMERIC', 'compare' => 'BETWEEN', ), ); } // Tarih sorgusu: Sadece dolu olan kriterler, 'post_date' kolonuna göre uygulanacak. $date_conditions = array(); if ($hours_filter > 0) { // Geçmiş saat filtresi kullanılıyorsa $after_date = date('Y-m-d H:i:s', strtotime("-{$hours_filter} hours")); $date_conditions[] = array( 'column' => 'post_date', 'after' => $after_date, 'inclusive' => true, ); } if (!empty($start_date)) { $date_conditions[] = array( 'column' => 'post_date', 'after' => $start_date, 'inclusive' => true, ); } if (!empty($end_date)) { $date_conditions[] = array( 'column' => 'post_date', 'before' => $end_date, 'inclusive' => true, ); } if (!empty($date_conditions)) { if (count($date_conditions) > 1) { $date_query = array_merge(array('relation' => 'AND'), $date_conditions); } else { $date_query = $date_conditions; } } else { $date_query = array(); } // İlgili yazıları sorgula $args = array( 'post__not_in' => array($post_id), 'posts_per_page' => $post_limit, 'ignore_sticky_posts' => 1, 'orderby' => 'rand', 'tax_query' => array( 'relation' => 'OR', array( 'taxonomy' => 'category', 'field' => 'term_id', 'terms' => $categories, ), array( 'taxonomy' => 'post_tag', 'field' => 'term_id', 'terms' => $tags, ), ), 'meta_query' => $meta_query, ); if (!empty($date_query)) { $args['date_query'] = $date_query; } $query = new WP_Query($args); if ($query->have_posts()) { echo '<div class="rps-related-posts">'; echo '<h3>' . esc_html($header_text) . '</h3>'; echo '<div class="rps-posts-wrapper">'; while ($query->have_posts()) { $query->the_post(); $title = get_the_title(); if (mb_strlen($title) > $title_length) { $title = mb_substr($title, 0, $title_length) . '...'; } $views = get_post_meta(get_the_ID(), 'post_views_count', true); $views = $views ? $views : 0; echo '<div class="rps-post">'; if (has_post_thumbnail()) { echo '<div class="rps-post-image">'; echo '<a href="' . get_permalink() . '">'; the_post_thumbnail('full'); echo '</a>'; echo '</div>'; } echo '<div class="rps-post-content">'; echo '<div class="rps-post-header">'; echo '<h4><a href="' . get_permalink() . '">' . esc_html($title) . '</a></h4>'; echo '<div class="rps-post-views">👁️ ' . intval($views) . '</div>'; echo '</div>'; echo '</div>'; echo '</div>'; } echo '</div>'; echo '</div>'; } else { echo '<p>İlgili yazı bulunamadı.</p>'; } wp_reset_postdata(); return ob_get_clean(); } add_shortcode('habergoster', 'rps_related_posts_showcase'); // Yönetici ayarları fonksiyonları function rps_register_settings() { register_setting('rps_settings_group', 'rps_settings'); } add_action('admin_init', 'rps_register_settings'); function rps_settings_page() { $settings = get_option('rps_settings'); ?> <div class="wrap"> <h1>Related Posts Showcase Ayarları</h1> <form method="post" action="options.php"> <?php settings_fields('rps_settings_group'); ?> <table class="form-table"> <tr valign="top"> <th scope="row">Gösterilecek Yazı Sayısı</th> <td><input type="number" name="rps_settings[post_limit]" value="<?php echo esc_attr($settings['post_limit'] ?? 5); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Başlık Karakter Sınırı</th> <td><input type="number" name="rps_settings[title_length]" value="<?php echo esc_attr($settings['title_length'] ?? 50); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Satır Yüksekliği (px)</th> <td><input type="number" name="rps_settings[row_height]" value="<?php echo esc_attr($settings['row_height'] ?? 80); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Üst Başlık Metni</th> <td><input type="text" name="rps_settings[header_text]" value="<?php echo esc_attr($settings['header_text'] ?? 'İlgili Yazılar'); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Başlık Yüksekliği (px)</th> <td><input type="number" name="rps_settings[header_height]" value="<?php echo esc_attr($settings['header_height'] ?? 30); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Köşe Yuvarlatma (px)</th> <td><input type="number" name="rps_settings[border_radius]" value="<?php echo esc_attr($settings['border_radius'] ?? 5); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Resim Köşe Yuvarlatma (px)</th> <td><input type="number" name="rps_settings[image_border_radius]" value="<?php echo esc_attr($settings['image_border_radius'] ?? 5); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Minimum Görüntülenme Sayısı</th> <td><input type="number" name="rps_settings[min_views]" value="<?php echo esc_attr($settings['min_views'] ?? 0); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Maksimum Görüntülenme Sayısı</th> <td><input type="number" name="rps_settings[max_views]" value="<?php echo esc_attr($settings['max_views'] ?? 10000); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Geçmiş Saat Filtresi (saat)</th> <td><input type="number" name="rps_settings[hours_filter]" value="<?php echo esc_attr($settings['hours_filter'] ?? ''); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Başlangıç Tarihi</th> <td><input type="date" name="rps_settings[start_date]" value="<?php echo esc_attr($settings['start_date'] ?? ''); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Bitiş Tarihi</th> <td><input type="date" name="rps_settings[end_date]" value="<?php echo esc_attr($settings['end_date'] ?? ''); ?>" /></td> </tr> </table> <?php submit_button(); ?> </form> </div> <?php } function rps_add_settings_page() { add_options_page('Related Posts Showcase', 'Related Posts Showcase', 'manage_options', 'related-posts-showcase', 'rps_settings_page'); } add_action('admin_menu', 'rps_add_settings_page'); ?>