برای ایجاد یک افزونه وردپرسی نمایش تبلیغات به صورت تصادفی را به صورت تصادفی در گوشه‌های سایت نمایش دهد، می‌توانید مراحل زیر را دنبال کنید:

ساختار کلی افزونه

    1. ایجاد فایل اصلی افزونه:
      • در پوشه wp-content/plugins/، یک پوشه جدید برای افزونه ایجاد کنید، مانند random-ad-images.
      • درون این پوشه، یک فایل PHP به نام random-ad-images.php بسازید.
    2. کد اصلی افزونه: در فایل random-ad-images.php، کد زیر را اضافه کنید تا افزونه اصلی و ابتدایی ایجاد شود.
<?php
/*
Plugin Name: Random Ad Images
Description: نمایش تصاویر تبلیغاتی به صورت تصادفی در گوشه‌های سایت.
Version: 1.0
Author: Your Name
*/

// جلوگیری از دسترسی مستقیم به افزونه
if (!defined('ABSPATH')) {
exit;
}

// اضافه کردن منوی تنظیمات به بخش مدیریت
add_action('admin_menu', 'random_ad_images_menu');

function random_ad_images_menu() {
add_menu_page(
'تنظیمات افزونه تصاویر تصادفی',
'تصاویر تصادفی',
'manage_options',
'random-ad-images-settings',
'random_ad_images_settings_page'
);
}

// محتوای صفحه تنظیمات افزونه
function random_ad_images_settings_page() {
?>
<div class="wrap">
<h1>تنظیمات افزونه تصاویر تصادفی</h1>
<form method="post" action="options.php">
<?php
settings_fields('random_ad_images_settings_group');
do_settings_sections('random-ad-images-settings');
submit_button();
?>
</form>
</div>
<?php
}

// ثبت تنظیمات افزونه
add_action('admin_init', 'random_ad_images_settings');

function random_ad_images_settings() {
// تنظیمات گوشه نمایش تصاویر
register_setting('random_ad_images_settings_group', 'random_ad_images_position');
add_settings_section('random_ad_images_section', 'تنظیمات نمایش', null, 'random-ad-images-settings');

add_settings_field(
'random_ad_images_position_field',
'موقعیت نمایش تصویر',
'random_ad_images_position_callback',
'random-ad-images-settings',
'random_ad_images_section'
);
}

function random_ad_images_position_callback() {
$position = get_option('random_ad_images_position', 'bottom-right');
?>
<select name="random_ad_images_position">
<option value="bottom-right" <?php selected($position, 'bottom-right'); ?>>پایین راست</option>
<option value="bottom-left" <?php selected($position, 'bottom-left'); ?>>پایین چپ</option>
<option value="top-right" <?php selected($position, 'top-right'); ?>>بالا راست</option>
<option value="top-left" <?php selected($position, 'top-left'); ?>>بالا چپ</option>
</select>
<?php

این کد اولیه افزونه را ایجاد می‌کند و یک منوی تنظیمات در داشبورد وردپرس اضافه می‌کند که در آن کاربران می‌توانند موقعیت تصاویر را در سایت انتخاب کنند.

افزودن انتخاب تصاویر و افکت نمایش

  1. انتخاب تصاویر از گالری وردپرس:
    • در تنظیمات افزونه، باید بتوانید تصاویری را برای نمایش انتخاب کنید. از قابلیت wp.media استفاده کنید تا یک دکمه برای انتخاب تصاویر ایجاد شود.
add_settings_field(
'random_ad_images_field',
'انتخاب تصاویر',
'random_ad_images_callback',
'random-ad-images-settings',
'random_ad_images_section'
);

function random_ad_images_callback() {
$images = get_option('random_ad_images', []);
?>
<button id="upload_images_button" class="button">انتخاب تصاویر</button>
<div id="image_preview">
<?php
if (!empty($images)) {
foreach ($images as $image) {
echo '<img src="' . wp_get_attachment_url($image) . '" style="max-width:100px;margin:5px;">';
}
}
?>
</div>
<input type="hidden" name="random_ad_images" id="random_ad_images" value="<?php echo implode(',', $images); ?>">
<script>
jQuery(document).ready(function ($) {
$('#upload_images_button').click(function (e) {
e.preventDefault();
var frame = wp.media({
title: 'انتخاب تصاویر',
multiple: true,
library: { type: 'image' },
button: { text: 'افزودن تصاویر' }
});

frame.on('select', function () {
var images = frame.state().get('selection').toJSON();
var image_ids = images.map(image => image.id);
$('#random_ad_images').val(image_ids.join(','));

$('#image_preview').html('');
images.forEach(image => {
$('#image_preview').append('<img src="' + image.url + '" style="max-width:100px;margin:5px;">');
});
});

frame.open();
});
});
</script>
<?php

این کد یک دکمه ایجاد می‌کند که با کلیک بر روی آن می‌توانید تصاویر را از گالری وردپرس انتخاب کنید و آن‌ها را به عنوان تبلیغ برای نمایش ذخیره کنید.

  1. افکت‌های نمایش تصاویر:
    • افزودن یک تنظیم برای انتخاب افکت نمایش (مانند فید، اسلاید، زوم) به شکل زیر:
add_settings_field(
'random_ad_images_effect_field',
'افکت نمایش',
'random_ad_images_effect_callback',
'random-ad-images-settings',
'random_ad_images_section'
);

function random_ad_images_effect_callback() {
$effect = get_option('random_ad_images_effect', 'fade');
?>
<select name="random_ad_images_effect">
<option value="fade" <?php selected($effect, 'fade'); ?>>فید</option>
<option value="slide" <?php selected($effect, 'slide'); ?>>اسلاید</option>
<option value="zoom" <?php selected($effect, 'zoom'); ?>>زوم</option>
</select>
<?php

 

نمایش تصاویر در سایت:

  • در فایل افزونه، یک تابع برای نمایش تصادفی تصاویر بر اساس تنظیمات کاربر در گوشه سایت ایجاد کنید.
add_action('wp_footer', 'display_random_ad_images');

function display_random_ad_images() {
$images = get_option('random_ad_images', []);
$position = get_option('random_ad_images_position', 'bottom-right');
$effect = get_option('random_ad_images_effect', 'fade');

if (!empty($images)) {
$image_id = $images[array_rand($images)];
$image_url = wp_get_attachment_url($image_id);

echo '<div id="random-ad-image" style="position: fixed; ' . get_position_style($position) . '">';
echo '<img src="' . esc_url($image_url) . '" alt="تبلیغ" style="max-width:200px;">';
echo '</div>';

?>
<script>
jQuery(document).ready(function ($) {
$('#random-ad-image img').hide().<?php echo esc_js($effect); ?>(1000);
});
</script>
<?php
}
}

function get_position_style($position) {
switch ($position) {
case 'bottom-right':
return 'bottom: 10px; right: 10px;';
case 'bottom-left':
return 'bottom: 10px; left: 10px;';
case 'top-right':
return 'top: 10px; right: 10px;';
case 'top-left':
return 'top: 10px; left: 10px;';
default:
return 'bottom: 10px; right: 10px;';
}

با این افزونه، تصاویر تبلیغاتی به صورت تصادفی در گوشه‌ای از سایت نمایش داده می‌شوند و افکت نمایش نیز بر اساس تنظیمات کاربر قابل تغییر است.

ساختار فایل افزونه برای مدیریت بهتر کدها و قابلیت توسعه آسان‌تر، به صورت زیر پیشنهاد می‌شود:

random-ad-images/

├── assets/

│ ├── css/

│ │ └── admin-style.css # استایل‌های صفحه تنظیمات افزونه در داشبورد مدیریت

│ └── js/

│ └── admin-script.js # اسکریپت‌های مربوط به صفحه تنظیمات افزونه در داشبورد مدیریت

├── includes/

│ ├── class-random-ad-images.php # کلاس اصلی افزونه که تمامی منطق و توابع اصلی در آن قرار می‌گیرند

│ └── admin/

│ └── class-random-ad-images-admin.php # توابع مربوط به مدیریت، تنظیمات و فرم‌های افزونه

├── templates/

│ └── admin-settings.php # قالب تنظیمات افزونه در پنل مدیریت

├── languages/

│ └── random-ad-images.pot # فایل زبان برای امکان ترجمه افزونه

└── random-ad-images.php # فایل اصلی افزونه (ورودی افزونه)

توضیحات هر پوشه و فایل

  1. assets/
    • شامل فایل‌های CSS و JS است که در بخش مدیریت و نمایش سایت استفاده می‌شوند.
    • در زیرپوشه css، می‌توانید فایل‌های استایل مربوط به افزونه را قرار دهید.
    • در زیرپوشه js، فایل‌های جاوااسکریپت مربوط به عملکرد افزونه در پنل مدیریت یا فرانت‌اند قرار می‌گیرند.
  2. includes/
    • در این پوشه منطق اصلی افزونه و توابع مورد نیاز قرار می‌گیرند.
    • class-random-ad-images.php: فایل کلاس اصلی افزونه که تمامی هوک‌ها، اکشن‌ها و فیلترهای وردپرس را مدیریت می‌کند. این فایل بخش اصلی افزونه است و از اینجا فایل‌های دیگر include می‌شوند.
    • admin/: شامل فایل‌های مربوط به مدیریت افزونه است.
      • class-random-ad-images-admin.php: فایل کلاس مدیریت تنظیمات افزونه، شامل توابع ثبت تنظیمات، ایجاد فرم‌ها و بخش تنظیمات در داشبورد وردپرس.
  3. templates/
    • در این پوشه قالب‌های HTML و PHP قرار دارند.
    • admin-settings.php: قالب صفحه تنظیمات افزونه در داشبورد مدیریت. این فایل شامل فرم‌ها و فیلدهای مربوط به تنظیمات افزونه است.
  4. languages/
    • شامل فایل‌های زبان برای ترجمه افزونه است.
    • random-ad-images.pot: یک فایل POT برای ترجمه افزونه که تمامی متون قابل ترجمه در افزونه را شامل می‌شود.
  5. random-ad-images.php
    • فایل ورودی افزونه که اطلاعات اولیه (مانند نام، توضیحات، نسخه، نویسنده) و منطق فعال‌سازی افزونه در آن قرار دارد.
    • از اینجا فایل‌های دیگر افزونه require یا include می‌شوند.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *