• سه شنبه, 13 آذر 1403
  • آموزش برنامه نویسی وردپرس

برنامه نویسی و طراحی یک پلاگین چت با هوش مصنوعی در وردپرس

 ما به یک پلاگین ساده نیاز داریم که پیام‌ها را از کاربران دریافت کرده و با استفاده از ChatGPT API (یا مدل هوش مصنوعی دیگری) پاسخ‌های مربوطه را ارسال کند و این پیام‌ها را در پایگاه داده ذخیره نماید. به علاوه، در تنظیمات پلاگین، باید فضایی برای وارد کردن API Key برای ارتباط با OpenAI فراهم کنیم. در ادامه، مراحل گام به گام ایجاد این پلاگین برای وردپرس توضیح داده شده است. گام اول: ساختار پلاگین ساختار دایرکتوری پلاگین وردپرس به شکل زیر خواهد بود: /wp-content/plugins/ /chat-ai/ chat-ai.php /admin/ settings.php /assets/ /js/ script.js /css/ style.css /includes/ /db.php /chat.php گام دوم: ساخت فایل اصلی پلاگین (chat-ai.php) در ابتدا، باید یک فایل اصلی برای پلاگین خود بسازید که وردپرس آن را شناسایی کند. این فایل باید اطلاعات مربوط به پلاگین را داشته باشد و همچنین افزونه را بارگذاری کند. <?php /* Plugin Name: Chat AI Plugin URI: https://example.com/chat-ai Description: پلاگین چت با هوش مصنوعی با استفاده از APIهای GPT-3 یا GPT-4 Version: 1.0 Author: Your Name Author URI: https://example.com License: GPL2 */ if (!defined('ABSPATH')) { exit; // Exit if accessed directly } // بارگذاری فایل‌های اسکریپت و استایل function chat_ai_enqueue_scripts() { wp_enqueue_script('chat-ai-js', plugin_dir_url(__FILE__) . 'assets/js/script.js', array('jquery'), null, true); wp_enqueue_style('chat-ai-css', plugin_dir_url(__FILE__) . 'assets/css/style.css'); } add_action('wp_enqueue_scripts', 'chat_ai_enqueue_scripts'); // ایجاد جدول در پایگاه داده هنگام فعال‌سازی پلاگین function chat_ai_install() { global $wpdb; $table_name = $wpdb->prefix . 'chat_messages'; // بررسی وجود جدول و ایجاد آن if ($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name) { $charset_collate = $wpdb->get_charset_collate(); $sql = "CREATE TABLE $table_name ( id mediumint(9) NOT NULL AUTO_INCREMENT, user_message text NOT NULL, ai_response text NOT NULL, timestamp datetime DEFAULT CURRENT_TIMESTAMP NOT NULL, PRIMARY KEY (id) ) $charset_collate;"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); } } register_activation_hook(__FILE__, 'chat_ai_install'); // ایجاد منو برای تنظیمات پلاگین در پنل مدیریت وردپرس function chat_ai_admin_menu() { add_menu_page('Chat AI Settings', 'Chat AI', 'manage_options', 'chat-ai', 'chat_ai_settings_page'); } add_action('admin_menu', 'chat_ai_admin_menu'); // صفحه تنظیمات پلاگین در پنل مدیریت function chat_ai_settings_page() { ?> <div class="wrap"> <h1>تنظیمات Chat AI</h1> <form method="post" action="options.php"> <?php settings_fields('chat_ai_options_group'); do_settings_sections('chat-ai'); ?> <table class="form-table"> <tr valign="top"> <th scope="row">کلید API ChatGPT</th> <td><input type="text" name="chat_ai_api_key" value="<?php echo esc_attr(get_option('chat_ai_api_key')); ?>" /></td> </tr> </table> <?php submit_button(); ?> </form> </div> <?php } // ثبت تنظیمات پلاگین function chat_ai_register_settings() { register_setting('chat_ai_options_group', 'chat_ai_api_key'); } add_action('admin_init', 'chat_ai_register_settings'); گام سوم: ایجاد فایل‌های جاوااسکریپت و استایل در پوشه /assets/js/، یک فایل جاوااسکریپت به نام script.js بسازید که مسئول ارسال پیام‌ها به سرور و دریافت پاسخ باشد. // assets/js/script.js jQuery(document).ready(function($) { $('#chat-send-btn').click(function() { var userMessage = $('#user-message').val(); if (userMessage.trim() === "") return; // نمایش پیام کاربر $('#chat-box').append('<div><strong>شما:</strong> ' + userMessage + '</div>'); $('#user-message').val(''); // پاک کردن ورودی // ارسال درخواست به سرور $.ajax({ url: ajaxurl, type: 'POST', data: { action: 'chat_ai_send_message', user_message: userMessage }, success: function(response) { // نمایش پاسخ هوش مصنوعی var aiResponse = response.ai_response; $('#chat-box').append('<div><strong>هوش مصنوعی:</strong> ' + aiResponse + '</div>'); $('#chat-box').scrollTop($('#chat-box')[0].scrollHeight); } }); }); }); در پوشه /assets/css/، یک فایل CSS به نام style.css برای طراحی ساده چت ایجاد کنید. /* assets/css/style.css */ #chat-box { width: 100%; height: 300px; border: 1px solid #ddd; padding: 10px; overflow-y: scroll; } #user-message { width: 80%; padding: 10px; } #chat-send-btn { padding: 10px; } گام چهارم: مدیریت درخواست‌ها و ذخیره پیام‌ها در پایگاه داده برای ارسال و ذخیره پیام‌ها، نیاز داریم که یک اکشن AJAX تعریف کنیم. در فایل اصلی پلاگین (chat-ai.php)، این کد را اضافه کنید: // مدیریت ارسال پیام و ذخیره آن در پایگاه داده function chat_ai_send_message() { global $wpdb; // دریافت پیام از کاربر $user_message = sanitize_text_field($_POST['user_message']); // دریافت API key از تنظیمات پلاگین $api_key = get_option('chat_ai_api_key'); if (empty($api_key)) { wp_send_json_error(array('ai_response' => 'کلید API معتبر نیست.')); } // درخواست به API ChatGPT (OpenAI) $ai_response = chat_ai_get_ai_response($user_message, $api_key); // ذخیره پیام و پاسخ در پایگاه داده $table_name = $wpdb->prefix . 'chat_messages'; $wpdb->insert($table_name, array( 'user_message' => $user_message, 'ai_response' => $ai_response, )); // ارسال پاسخ به فرانت‌اند wp_send_json_success(array('ai_response' => $ai_response)); } add_action('wp_ajax_chat_ai_send_message', 'chat_ai_send_message'); // ارسال درخواست به ChatGPT API function chat_ai_get_ai_response($message, $api_key) { $url = 'https://api.openai.com/v1/completions'; $data = array( 'model' => 'gpt-4', 'prompt' => $message, 'max_tokens' => 150, 'temperature' => 0.7 ); $args = array( 'body' => json_encode($data), 'headers' => array( 'Content-Type' => 'application/json', 'Authorization' => 'Bearer ' . $api_key ), 'method' => 'POST', 'data_format' => 'body' ); $response = wp_remote_post($url, $args); $body = wp_remote_retrieve_body($response); $result = json_decode($body, true); return $result['choices'][0]['text'] ?? 'پاسخی یافت نشد.'; } گام پنجم: نمایش فرم چت در فرانت‌اند حالا باید کدی برای نمایش چت در صفحات سایت ایجاد کنیم. این کد باید از طریق شورت‌کد (shortcode) یا مستقیماً در تم قرار گیرد. برای اضافه کردن شورت‌کد برای فرم چت: // نمایش فرم چت در صفحات با استفاده از شورت‌کد function chat_ai_display_chat() { ob_start(); ?> <div id="chat-box"></div> <input type="text" id="user-message" placeholder="پیام خود را وارد کنید..."> <button id="chat-send-btn">ارسال</button> <?php return ob_get_clean(); } add_shortcode('chat_ai', 'chat_ai_display_chat'); گام ششم: نصب پلاگین تمامی فایل‌های مربوطه را در پوشه پلاگین chat-ai/ قرار دهید. پوشه پلاگین را به /wp-content/plugins/ منتقل کنید. از بخش پلاگین ها نصب کنید. پلاگین ها در پنل مدیریت وردپرس، پلاگین را فعال کنید. 4. پس از فعال‌سازی، به صفحه تنظیمات پلاگین بروید و کلید API ChatGPT خود را وارد کنید. 5. از شورت‌کد [chat_ai] برای نمایش فرم چت در هر صفحه یا پست استفاده کنید. نتیجه نهایی: حالا شما یک پلاگین وردپرس دارید که به شما این امکان را می‌دهد تا از طریق یک فرم چت با ChatGPT ارتباط برقرار کنید، پیام‌ها را در پایگاه داده ذخیره کنید و همچنین یک بخش تنظیمات برای وارد کردن API Key ایجاد کنید. اگر به مشکلی برخوردید یا سوالی داشتید، خوشحال می‌شوم کمک کنم!

ادامه مطلب
  • دوشنبه, 04 مهر 1401
  • آموزش برنامه نویسی وردپرس

تشخیص صفحه اول در وردپرس

گاهی برای شما لازم می شود تا کد خاصی را فقط در صفحه خانه وردپرس لود کنید برای تشخیص صفحه اصلی از کد زیر استفاده کنید: if ( is_front_page() ) : get_header( 'front' ); else : get_header(); endif; is_front_page() /* is_front_page() returns true if the user is on the page or page of posts that is set to the front page on Settings->Reading->Your homepage displays. */ is_home() /* is_home() return true when on the posts list page, This is usually the page that shows the latest 10 posts. */ is_home()

ادامه مطلب
  • دوشنبه, 04 مهر 1401
  • آموزش برنامه نویسی وردپرس

تشخیص وجود تصویر شاخص کوچک در وردپرس

برای تشخیص وجود تصویر شاخص کوچک در وردپرس از روش زیر استفاده کنید: <?php if ( has_post_thumbnail() ) { the_post_thumbnail(); } else { ?> <img src="/<?php bloginfo('template_directory'); ?>/images/default-image.jpg" alt="<?php the_title(); ?>" /> <?php } ?>

ادامه مطلب
  • دوشنبه, 04 مهر 1401
  • آموزش برنامه نویسی وردپرس

تشخیص مدیر بودن یک کاربر در وردپرس

برای تشخیص مدیر بودن یک کاربر در وردپرس باید از روش زیر استفاده کنید: <?php if(current_user_can('editor')) { ?> <!-- Stuff here for editors --> <?php } ?> <?php if(current_user_can('administrator')) { ?> <!-- Stuff here for administrators --> <?php } ?>

ادامه مطلب
  • دوشنبه, 04 مهر 1401
  • آموزش برنامه نویسی وردپرس

بدست آورد کلاس html در وردپرس

برای این کار می توانید کد زیر را در هدر سایت بگذارید: <body <?php body_class(); ?>> <!-- This adds the wordpress body classes markup that you can use for CSS configuration -->

ادامه مطلب
  • دوشنبه, 04 مهر 1401
  • آموزش برنامه نویسی وردپرس

چگونه فایل functions.php را بشکنیم و سبک تر کنیم در وردپرس

شما می توانید یک پوشه درست کرده و هر بخش از فایل functions.php را درون آن قرار دهید و در فایل functions.php آنها را صدا بزنید: <?php /* * functions.php * */ require_once( __DIR__ . '/includes/null-meta-compare.php'); require_once( __DIR__ . '/includes/older-examples.php'); require_once( __DIR__ . '/includes/wp-admin-menu-classes.php'); require_once( __DIR__ . '/includes/admin-menu-function-examples.php'); // WA: Adding a Taxonomy Filter to Admin List for a Custom Post Type? // http://wordpress.stackexchange.com/questions/578/ require_once( __DIR__ . '/includes/cpt-filtering-in-admin.php'); require_once( __DIR__ . '/includes/category-fields.php'); require_once( __DIR__ . '/includes/post-list-shortcode.php'); require_once( __DIR__ . '/includes/car-type-urls.php'); require_once( __DIR__ . '/includes/buffer-all.php'); require_once( __DIR__ . '/includes/get-page-selector.php'); // http://wordpress.stackexchange.com/questions/907/ require_once( __DIR__ . '/includes/top-5-posts-per-category.php'); // http://wordpress.stackexchange.com/questions/951/ require_once( __DIR__ . '/includes/alternate-category-metabox.php'); // http://lists.automattic.com/pipermail/wp-hackers/2010-August/034384.html require_once( __DIR__ . '/includes/remove-status.php'); // http://wordpress.stackexchange.com/questions/1027/removing-the-your-backup-folder-might-be-visible-to-the-public-message-generate require_once( __DIR__ . '/includes/301-redirects.php');

ادامه مطلب
  • دوشنبه, 04 مهر 1401
  • آموزش برنامه نویسی وردپرس

نحوه نمایش مسیر سایت در تم یا قالب به صورت برنامه ریزی شده در وردپرس

برای   نمایش مسیر سایت در تم یا قالب به صورت برنامه ریزی شده در وردپرس از روش زیر استفاده کنید: add_filter( 'the_content', function( $content ) { if( function_exists( 'rank_math_get_breadcrumbs' ) ) { $content = rank_math_get_breadcrumbs() . $content; } return $content; });

ادامه مطلب
  • دوشنبه, 04 مهر 1401
  • آموزش برنامه نویسی وردپرس

بدست آوردن تاریخ امروز در وردپرس

برای بدست آوردن تاریخ امروز در وردپرس از روش زیر استفاده کنید: <?php echo get_the_date( 'l F j, Y' ); ?>

ادامه مطلب
  • دوشنبه, 04 مهر 1401
  • آموزش برنامه نویسی وردپرس

بدست آوردن نام کاربری یک کاربر در وردپرس

برای بدست آوردن نام کاربری یک کاربر در وردپرس از روش زیر استفاده کنید: $current_user = wp_get_current_user(); echo($current_user->user_login); $current_user_id = get_current_user_id(); $current_user = wp_get_current_user();

ادامه مطلب
  • دوشنبه, 04 مهر 1401
  • آموزش برنامه نویسی وردپرس

بدست آوردن ادرس اواتار یک کاربر در وردپرس

برای پیدا کردن مسیر تصویر اواتار یک کارب می توانید از کد زیر استفاده کنید: get_avatar_url($user_id);

ادامه مطلب
  • دوشنبه, 04 مهر 1401
  • آموزش برنامه نویسی وردپرس

بدست اوردن اطلاعات یک کاربر از روی ایمیل در وردپرس

شما می توانید از روی ایمیل یک کاربر اطلاعات او را بدست آوردید برای این کار می توانید از روش زیر اقدام کنید: global $current_user; get_currentuserinfo(); echo $current_user->user_email; $user_obj = get_user_by('id', 1); $user = get_user_by( 'email', 'user@example.com' ); $userId = $user->ID;

ادامه مطلب
  • دوشنبه, 04 مهر 1401
  • آموزش برنامه نویسی وردپرس

بدست آوردن اطلاعات یک کاربر در وردپرس براساس شناسه کاربری

برای بدست آوردن اطلاعات یک کاربر در وردپرس براساس شناسه کاربری از روش زیر می توانید استفاده کنید: <?php $user_id = get_current_user_id(); ?> $current_user = wp_get_current_user(); echo($current_user->user_login); echo get_the_ID(); function get_the_ID() { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid $post = get_post(); return ! empty( $post ) ? $post->ID : false; } $user_obj = get_user_by('id', 1); $user = get_user_by( 'email', 'user@example.com' ); $userId = $user->ID;

ادامه مطلب
  • دوشنبه, 04 مهر 1401
  • آموزش برنامه نویسی وردپرس

افزودن آدرس پوشه قالب به یک تصویر

برای اینکه یک تصویر در قالب نمایش داده شود باید ادرس پوشه قالب قبل از ادرس تصویر صدا زده شود: // Get template directory example: <img src="/<?php echo get_template_directory_uri(); ?>/images/logo.png" /> // If you use child theme you will have to use another function: <img src="/<?php echo get_stylesheet_directory_uri(); ?>/images/logo.png" /> <img src="/<?php echo get_template_directory_uri(); ?>/images/logo.png"> include( get_template_directory_uri() . '/includes/my_file.php' ); add_action('wp_enqueue_scripts', 'wpdocs_scripts_method'); /* * Enqueue a script with the correct path. */ function wpdocs_scripts_method() { wp_enqueue_script( 'custom_script', get_template_directory_uri() . '/js/custom_script.js', array('jquery') ); }

ادامه مطلب
  • دوشنبه, 04 مهر 1401
  • آموزش برنامه نویسی وردپرس

وردپرس پیوند ثابت کوتاه را دریافت کنید

برای بدست اوردن لینک کوتاه یک مطلب از دستور های زیر استفاده کنید: // Get post permalink (you can use it inside a wp_query loop) <?php the_permalink(); ?> // or <?php $link = get_the_permalink(); ?> // outside the loop: <?php echo get_permalink( $post->ID ); ?> // Get shortlink (short permalink) <?php echo wp_get_shortlink(); ?>

ادامه مطلب
  • دوشنبه, 04 مهر 1401
  • آموزش برنامه نویسی وردپرس

وردپرس آدرس اصلی را دریافت کنید

برای بدست اوردن ادرس اصلی سایت در وردپرس از این کد php استفاده کنید. <?php echo get_site_url(); ?> کاربرد این دستور در صدا زدن لینک هایی است که به صفحه اصلی سایت مربوط می شود مثل لینک بر روی تصویر لوگو

ادامه مطلب