افزونه کپی کاری

مشخصات مقاله:
بروزرسانی: مهر ۱۴۰۴
لوگو کپی کاری
فهرست مطالب

افزونه کپی کاری

افزونه کپی کاری : ابزاری منحصر بفرد و ایرانی جهت قرار دادن کدهای برنامه نویسی + باکس های سفارشی درون مقاله ,محصول ,برگه , نوشته (سازگار با ویرایشگر کلاسیک , گوتنبرگ و المنتور) تنها با یک شورتکد! هر نوع کد یا استایل باکس جذاب را به تصویر بکشید.

پلاگین کپی کاری

ویژگی‌های افزونه کپی کاری

  • ✅ نمایش همزمان تاریخ‌های واقعی و فیک

  • ✅ پشتیبانی کامل از ووکامرس فارسی

  • ✅ طراحی ریسپانسیو و سازگار با موبایل

  • ✅ انیمیشن‌های جذاب و قابل تنظیم

  • ✅ آیکون‌های متنوع و زیبا

چرا این افزونه ضروری؟

  • افزایش اعتماد کاربران با نمایش تاریخ‌های بروزرسانی

  • بهبود سئو با به‌روز نشان دادن محتوا

  • مدیریت حرفه‌ای ظاهر تاریخ‌ها

  • صرفه‌جویی در زمان با اتوماسیون کامل

قابلیت‌های اصلی

  • شورت‌کدهای متنوع: ۸ شورت‌کد مختلف برای نیازهای گوناگون

  • تنظیمات پیشرفته: کنترل کامل رنگ، فونت، آیکون و انیمیشن

  • مدیریت هوشمند: مخفی کردن خودکار در شرایط خاص

  • پشتیبانی از تاریخ شمسی: سازگار با افزونه پارسی‌دیت

برای چه سایت‌هایی مناسب؟

  • 🛒 فروشگاه‌های اینترنتی

  • 📝 وبلاگ‌های شخصی و شرکتی

  • 🏢 سایت‌های خبری

  • 💼 همه سایت‌های وردپرسی

نصب آسان – استفاده سریع

  • نصب-بروزرسانی از طریق پیشخوان

  • راهنمای فارسی کامل

  • پشتیبانی حرفه‌ای

امنیت و بهینه‌سازی

  • توسعه بر اساس استانداردهای وردپرس

  • عدم تاثیر بر سرعت سایت

  • به‌روزرسانی منظم و رایگان

  • سازگار با آخرین نسخه وردپرس

تجربه کاربری استثنایی

  • تنظیمات جداگانه برای بخش‌های مختلف

  • قابلیت غیرفعال کردن در پست‌های خاص

نسخه رایگان جهت تست : کافیست دانلود و زیپ و نصب کنید ! ۲-ویا کدها را درون افزونه wpcode بصورت یک اسنیپت php قرار دهید
/**
 * Plugin Name: کپی کاری (نسخه رایگان)
 * Description: افزونه‌ای ساده برای نمایش محتوا با دکمه کپی در وردپرس
 * Version: 0.0
 * Author: مهندس براتی
 * Author URI: https://mrbarati.com
 * License: GPL v2 or later
 */

if (!defined('ABSPATH')) {
    exit;
}

define('CCB_VERSION', '0.0');
define('CCB_PLUGIN_DIR', plugin_dir_path(__FILE__));
define('CCB_PLUGIN_URL', plugin_dir_url(__FILE__));

function ccb_register_settings() {
    $settings = array(
        'ccb_shortcodes' => 'sanitize_text_field',
    );
    foreach ($settings as $option => $callback) {
        register_setting('ccb_settings_group', $option, array('sanitize_callback' => $callback));
    }
}
add_action('admin_init', 'ccb_register_settings');

function ccb_get_shortcode_link($shortcode_id) {
    $shortcode_id = sanitize_text_field($shortcode_id);
    $args = array(
        's' => '[ccb_display id="' . $shortcode_id . '"]',
        'post_type' => 'any',
        'posts_per_page' => 1
    );
    $query = new WP_Query($args);
    if ($query->have_posts()) {
        while ($query->have_posts()) {
            $query->the_post();
            $link = str_replace(home_url(), '', get_permalink());
            wp_reset_postdata();
            return rtrim($link, '/');
        }
    }
    return 'استفاده نشده';
}

function ccb_settings_page() {
    if (!current_user_can('manage_options')) {
        wp_die(esc_html__('شما دسترسی لازم برای مشاهده این صفحه را ندارید.', 'copy-kari'));
    }

    $shortcodes = get_option('ccb_shortcodes', array());
    $max_shortcodes = 4;

    if (isset($_POST['save_shortcode']) && isset($_POST['ccb_nonce']) && wp_verify_nonce(sanitize_text_field(wp_unslash($_POST['ccb_nonce'])), 'ccb_save_shortcode')) {
        if (count($shortcodes) >= $max_shortcodes) {
            echo '<div class="updated"><p>حداکثر ۴ شورت‌کد مجاز است. برای ساخت بیشتر، نسخه پرو را تهیه کنید!</p></div>';
        } else {
            $content = isset($_POST['ccb_custom_content']) ? wp_kses_post(wp_unslash($_POST['ccb_custom_content'])) : '';
            $direction = isset($_POST['ccb_text_direction']) ? sanitize_text_field(wp_unslash($_POST['ccb_text_direction'])) : 'ltr';
            $no_copy_download = isset($_POST['no_copy_download']) ? true : false;
            if (!empty($content)) {
                $shortcode_id = 'ck_' . wp_generate_password(2, false);
                $shortcodes[$shortcode_id] = array(
                    'content' => $content,
                    'created_at' => current_time('mysql'),
                    'no_copy_download' => $no_copy_download,
                    'direction' => $direction,
                );
                update_option('ccb_shortcodes', $shortcodes);
                echo '<div class="updated"><p>شورت‌کد با موفقیت ساخته شد!</p></div>';
            }
        }
    }

    if (isset($_POST['delete_shortcode']) && isset($_POST['_wpnonce']) && wp_verify_nonce(sanitize_text_field(wp_unslash($_POST['_wpnonce'])), 'ccb_delete_shortcode_' . sanitize_text_field(wp_unslash($_POST['delete_shortcode'])))) {
        $shortcode_id = sanitize_text_field(wp_unslash($_POST['delete_shortcode']));
        if (isset($shortcodes[$shortcode_id])) {
            unset($shortcodes[$shortcode_id]);
            update_option('ccb_shortcodes', $shortcodes);
            echo '<div class="updated"><p>شورت‌کد حذف شد!</p></div>';
        }
    }
    ?>
    <div class="wrap">
        <div style="background: #fff; padding: 15px; border: 1px solid #ccc; border-radius: 5px; margin-bottom: 20px; text-align: center; font-size: 15px;">
            افزونه شما نسخه رایگان هست با ساخت ۴ تا شورت کد برای تست - <a href="https://mrbarati.com" target="_blank">لینک خرید پرو</a>
        </div>
        <h1>تنظیمات افزونه کپی کاری (نسخه رایگان)</h1>
        <h2 class="nav-tab-wrapper">
            <a href="#tab-1" class="nav-tab nav-tab-active">تنظیمات استایل</a>
            <a href="#tab-2" class="nav-tab">مدیریت شورت‌کد</a>
            <a href="#tab-3" class="nav-tab">راهنما</a>
        </h2>

        <div id="tab-1" class="tab-content">
            <table class="form-table">
                <tr><th>متن دکمه کپی:</th><td></td></tr>
                <tr><th>متن دکمه دانلود:</th><td></td></tr>
                <tr><th>تنظیمات دکمه کپی کد:</th><td></td></tr>
                <tr><th>تنظیمات دکمه دانلود:</th><td></td></tr>
                <tr><th>تنظیمات اندازه برای مانیتور:</th><td></td></tr>
                <tr><th>تنظیمات اندازه برای موبایل:</th><td></td></tr>
                <tr><th>موقعیت دکمه کپی کد:</th><td></td></tr>
                <tr><th>جهت دکمه‌ها:</th><td></td></tr>
                <tr><th>تنظیمات رنگ محتوا:</th><td></td></tr>
                <tr><th>تنظیمات شماره خطوط:</th><td></td></tr>
                <tr><th>نوع فایل دانلود:</th><td></td></tr>
                <tr><th>تنظیمات گرد شدن گوشه‌ها:</th><td></td></tr>
                <tr><th>عرض شورت‌کد:</th><td></td></tr>
            </table>
            <p>برای دسترسی به تنظیمات استایل، نسخه پرو را تهیه کنید.</p>
        </div>

        <div id="tab-2" class="tab-content" style="display:none;">
            <form id="ccb-generate-form" method="post">
                <?php wp_nonce_field('ccb_save_shortcode', 'ccb_nonce'); ?>
                <table class="form-table">
                    <tr>
                        <th>محتوای متنی:</th>
                        <td><textarea name="ccb_custom_content" rows="5" style="width:100%; direction:ltr; text-align:left;"></textarea></td>
                    </tr>
                    <tr>
                        <th>جهت‌گیری متن:</th>
                        <td>
                            <div style="display: flex; flex-direction: column; gap: 10px;">
                                <label><input type="radio" name="ccb_text_direction" value="ltr" checked /> کد و حروف انگلیسی (چپ‌چین)</label>
                                <label><input type="radio" name="ccb_text_direction" value="rtl" /> حروف فارسی (راست‌چین)</label>
                            </div>
                        </td>
                    </tr>
                </table>
                <p style="font-size:12px; color:#666;">قبل از وارد کردن متن، مطمئن شوید جهت متن کدام طرف باتوجه به گزینه انتخابی شما تنظیم شده است.</p>
                <button type="submit" name="save_shortcode" class="button button-primary">ساخت شورت‌کد</button>
                <button type="submit" name="no_copy_download" class="button" style="background:#9b1d20;color:#fff;border:none;">ساخت شورت‌کد بدون کپی+دانلود</button>
            </form>

            <h2>شورت‌کدهای ساخته‌شده</h2>
            <?php if (!empty($shortcodes)) : ?>
                <table class="widefat">
                    <thead>
                        <tr>
                            <th>#</th>
                            <th>شورت‌کد</th>
                            <th>تاریخ ایجاد</th>
                            <th>لینک راهنما</th>
                            <th>وضعیت کپی/دانلود</th>
                            <th>عملیات</th>
                        </tr>
                    </thead>
                    <tbody>
                        <?php $counter = 1; foreach ($shortcodes as $shortcode_id => $data) : 
                            $content = $data['content'];
                            $created_at = $data['created_at'];
                            $no_copy_download = $data['no_copy_download'];
                            $shortcode_text = '[ccb_display id="' . esc_html($shortcode_id) . '"]';
                            $guide_link = ccb_get_shortcode_link($shortcode_id);
                            $is_used = ($guide_link !== 'استفاده نشده');
                        ?>
                        <tr>
                            <td><?php echo esc_html($counter++); ?></td>
                            <td>
                                <button type="button" class="ccb-shortcode-btn" data-shortcode="<?php echo esc_attr($shortcode_text); ?>">
                                    <?php echo esc_html($shortcode_text); ?>
                                </button>
                            </td>
                            <td><?php echo esc_html($created_at); ?></td>
                            <td><span style="color:<?php echo $is_used ? 'green' : 'red'; ?>;"><?php echo esc_html($guide_link); ?></span></td>
                            <td><?php echo $no_copy_download ? 'غیرفعال' : 'فعال'; ?></td>
                            <td>
                                <?php if (!$is_used) : ?>
                                    <form method="post" style="display:inline;">
                                        <?php wp_nonce_field('ccb_delete_shortcode_' . $shortcode_id); ?>
                                        <input type="hidden" name="delete_shortcode" value="<?php echo esc_attr($shortcode_id); ?>">
                                        <button type="submit" class="button" style="background:#dc3545;color:#fff;border:none;">🗑️</button>
                                    </form>
                                <?php else: echo '-'; endif; ?>
                            </td>
                        </tr>
                        <?php endforeach; ?>
                    </tbody>
                </table>
            <?php else : ?>
                <p>شورت‌کدی وجود ندارد.</p>
            <?php endif; ?>
        </div>

        <div id="tab-3" class="tab-content" style="display:none;">
            <h2>راهنما</h2>
            <p><strong>این افزونه توسط محمد براتی طراحی شده و برای افزودن دکمه کپی با تنظیمات دلخواه در وردپرس استفاده می‌شود.</strong></p>
            <p><strong>ویژگی‌ها:</strong></p>
            <ul>
                <li><strong>ساخت شورت‌کد برای محتوای متنی</strong></li>
                <li><strong>تنظیم استایل دکمه و محتوا (در نسخه پرو)</strong></li>
                <li><strong>پشتیبانی از کدهای HTML مثل marquee</strong></li>
                <li><strong>دانلود کد به‌صورت فایل (فقط در دسکتاپ)</strong></li>
                <li><strong>فاصله خطوط ثابت: ۲.۲ (دسکتاپ) و ۱.۹ (موبایل)</strong></li>
                <li><strong>تنظیم گرد شدن گوشه‌های دکمه‌ها و شورت‌کد (در نسخه پرو)</strong></li>
                <li><strong>طراح و توسعه‌دهنده سایت، افزونه و SEO: <a href="https://mrbarati.com" target="_blank">مهندس براتی</a></strong></li>
            </ul>
        </div>

        <style>
            .nav-tab-wrapper { margin-bottom: 20px; }
            .tab-content { display: none; }
            .tab-content.active { display: block; }
            .ccb-notification {
                position: fixed;
                top: 50%;
                left: 50%;
                transform: translate(-50%, -50%);
                background-color: #0073aa;
                color: white;
                padding: 10px 20px;
                border-radius: 5px;
                z-index: 9999;
                opacity: 0;
                transition: opacity 0.5s ease-in-out;
                pointer-events: none;
            }
            .ccb-notification.show {
                opacity: 1;
            }
            .ccb-shortcode-btn {
                background-color: #fff;
                border: 1px solid #ccc;
                color: #333;
                padding: 5px 10px;
                cursor: pointer;
                border-radius: 3px;
            }
            .ccb-shortcode-btn:hover {
                background-color: #f9f9f9;
            }
        </style>

        <script>
            document.addEventListener('DOMContentLoaded', function() {
                var tabs = document.querySelectorAll('.nav-tab');
                var contents = document.querySelectorAll('.tab-content');

                tabs.forEach(function(tab) {
                    tab.addEventListener('click', function(e) {
                        e.preventDefault();
                        tabs.forEach(function(t) { t.classList.remove('nav-tab-active'); });
                        contents.forEach(function(c) { c.style.display = 'none'; });
                        tab.classList.add('nav-tab-active');
                        document.querySelector(tab.getAttribute('href')).style.display = 'block';
                    });
                });

                document.querySelectorAll('.nav-tab')[0].click();

                var textarea = document.querySelector('textarea[name="ccb_custom_content"]');
                var directionRadios = document.querySelectorAll('input[name="ccb_text_direction"]');

                function updateTextDirection() {
                    if (directionRadios[0].checked) {
                        textarea.style.direction = 'ltr';
                        textarea.style.textAlign = 'left';
                    } else if (directionRadios[1].checked) {
                        textarea.style.direction = 'rtl';
                        textarea.style.textAlign = 'right';
                    }
                }

                updateTextDirection();
                directionRadios.forEach(function(radio) {
                    radio.addEventListener('change', updateTextDirection);
                });

                document.querySelectorAll('.ccb-shortcode-btn').forEach(function(btn) {
                    btn.addEventListener('click', function(e) {
                        var shortcode = btn.getAttribute('data-shortcode');
                        copyToClipboard(shortcode, 'شورت‌کد کپی شد!');
                    });
                });

                function copyToClipboard(text, message) {
                    if (navigator.clipboard) {
                        navigator.clipboard.writeText(text).then(function() { showNotification(message); }).catch(function() { fallbackCopy(text, message); });
                    } else {
                        fallbackCopy(text, message);
                    }
                }

                function fallbackCopy(text, message) {
                    var temp = document.createElement('textarea');
                    temp.value = text;
                    document.body.appendChild(temp);
                    temp.select();
                    document.execCommand('copy');
                    document.body.removeChild(temp);
                    showNotification(message);
                }

                function showNotification(message) {
                    var notification = document.querySelector('.ccb-notification');
                    if (!notification) {
                        notification = document.createElement('div');
                        notification.className = 'ccb-notification';
                        document.body.appendChild(notification);
                    }
                    notification.textContent = message;
                    notification.classList.add('show');
                    setTimeout(function() {
                        notification.classList.remove('show');
                        setTimeout(function() { notification.remove(); }, 500);
                    }, ۳۰۰۰);
                }

                <?php if (isset($_POST['save_shortcode']) && count($shortcodes) >= $max_shortcodes) : ?>
                    showNotification('حداکثر ۴ شورت‌کد مجاز است. برای ساخت بیشتر، نسخه پرو را تهیه کنید!');
                <?php endif; ?>
            });
        </script>
    </div>
    <?php
}
add_action('admin_menu', function() {
    add_submenu_page(
        'options-general.php',
        'تنظیمات کپی کاری (رایگان)',
        'کپی کاری',
        'manage_options',
        'ccb-settings',
        'ccb_settings_page'
    );
});

function ccb_display_shortcode($atts) {
    $atts = shortcode_atts(array('id' => ''), $atts);
    $shortcode_id = sanitize_text_field($atts['id']);
    if (empty($shortcode_id)) return '';

    $shortcodes = get_option('ccb_shortcodes', array());
    if (!isset($shortcodes[$shortcode_id])) return '';

    $data = $shortcodes[$shortcode_id];
    $content = $data['content'];
    $no_copy_download = $data['no_copy_download'];
    $direction = $data['direction'];

    $allowed_html = array(
        'marquee' => array(
            'class' => array(),
            'direction' => array(),
            'scrollamount' => array(),
            'loop' => array(),
        ),
        'style' => array(),
        'br' => array(),
        'strong' => array(),
        'em' => array(),
        'span' => array('class' => array(), 'style' => array()),
    );

    $container_direction = $direction === 'rtl' ? 'rtl' : 'ltr';
    $container_text_align = $direction === 'rtl' ? 'right' : 'left';

    ob_start();
    ?>
    <div class="ccb-copy-container" style="background-color: #333332; color: #ffffff; padding: 20px; direction: <?php echo esc_attr($container_direction); ?>; text-align: <?php echo esc_attr($container_text_align); ?>; position: relative; font-family: inherit; border-radius: 0px; width: 100%; max-width: 100%; display: block; margin: 0 auto;">
        <?php if (!$no_copy_download) : ?>
            <button class="ccb-copy-btn" style="position: absolute; top: 10px; right: 10px; border-radius: 0px; background: #0073aa; color: #ffffff; border: none; cursor: pointer; padding: 5px 10px; font-size: 14px;" data-content="<?php echo esc_attr($content); ?>">کپی</button>
            <button class="ccb-download-btn" style="position: absolute; top: 10px; right: 75px; border-radius: 0px; background: #28a745; color: #ffffff; border: none; cursor: pointer; padding: 5px 10px; font-size: 14px;" data-content="<?php echo esc_attr($content); ?>">دانلود</button>
        <?php endif; ?>
        <pre style="font-family: inherit; font-size: 14px; line-height: 2.2; margin: 8px 0; <?php echo $no_copy_download ? '' : 'padding-top: 25px;'; ?> direction: <?php echo esc_attr($container_direction); ?>; text-align: <?php echo esc_attr($container_text_align); ?>;"><?php echo wp_kses($content, $allowed_html); ?></pre>
    </div>
    <?php
    return ob_get_clean();
}
add_shortcode('ccb_display', 'ccb_display_shortcode');

function ccb_add_copy_script() {
    ?>
    <style>
        .ccb-copy-container { position: relative; }
        pre { white-space: pre-wrap; word-wrap: break-word; }
        @media (max-width: 768px) {
            pre { line-height: 1.9; font-size: 12px; }
            .ccb-copy-btn { font-size: 12px; margin-top: 5px; margin-bottom: 5px; }
            .ccb-download-btn { display: none; }
        }
        .ccb-notification {
            position: fixed;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            background-color: #0073aa;
            color: white;
            padding: 10px 20px;
            border-radius: 5px;
            z-index: 9999;
            opacity: 0;
            transition: opacity 0.5s ease-in-out;
            pointer-events: none;
        }
        .ccb-notification.show {
            opacity: 1;
        }
    </style>
    <script>
        document.addEventListener('DOMContentLoaded', function() {
            document.querySelectorAll('.ccb-copy-btn').forEach(function(btn) {
                btn.addEventListener('click', function(e) {
                    e.preventDefault();
                    var content = btn.getAttribute('data-content');
                    copyToClipboard(content, 'کد کپی شد!');
                    btn.textContent = 'کپی شد!';
                    btn.style.backgroundColor = '#4CAF50';
                    btn.style.color = '#ffffff';
                    setTimeout(function() {
                        btn.textContent = 'کپی';
                        btn.style.backgroundColor = '#0073aa';
                        btn.style.color = '#ffffff';
                    }, ۲۰۰۰);
                });
            });

            document.querySelectorAll('.ccb-download-btn').forEach(function(btn) {
                btn.addEventListener('click', function(e) {
                    e.preventDefault();
                    var content = btn.getAttribute('data-content');
                    var blob = new Blob([content], { type: 'text/plain' });
                    var url = URL.createObjectURL(blob);
                    var a = document.createElement('a');
                    a.href = url;
                    a.download = 'code.txt';
                    document.body.appendChild(a);
                    a.click();
                    document.body.removeChild(a);
                    URL.revokeObjectURL(url);
                    showNotification('فایل دانلود شد!');
                });
            });

            function copyToClipboard(text, message) {
                if (navigator.clipboard) {
                    navigator.clipboard.writeText(text).then(function() { showNotification(message); }).catch(function() { fallbackCopy(text, message); });
                } else {
                    fallbackCopy(text, message);
                }
            }

            function fallbackCopy(text, message) {
                var temp = document.createElement('textarea');
                temp.value = text;
                document.body.appendChild(temp);
                temp.select();
                document.execCommand('copy');
                document.body.removeChild(temp);
                showNotification(message);
            }

            function showNotification(message) {
                var notification = document.querySelector('.ccb-notification');
                if (!notification) {
                    notification = document.createElement('div');
                    notification.className = 'ccb-notification';
                    document.body.appendChild(notification);
                }
                notification.textContent = message;
                notification.classList.add('show');
                setTimeout(function() {
                    notification.classList.remove('show');
                    setTimeout(function() { notification.remove(); }, 500);
                }, ۳۰۰۰);
            }
        });
    </script>
    <?php
}
add_action('wp_footer', 'ccb_add_copy_script');

function ccb_uninstall_cleanup() {
    delete_option('ccb_shortcodes');
}
register_uninstall_hook(__FILE__, 'ccb_uninstall_cleanup');
خدمات پشتیبانی سایت وردپرسی
بعد از تکمیل فرم وبررسی اولیه باشما تماس می گیرم
۴/۵ - (۱۲ امتیاز)
مقاله مرتبط:  افزونه وبپی پرو
Telegram
WhatsApp
Email
LinkedIn
پشتیبان سایت

2 پاسخ

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

نوزده − 5 =