Changeset 3397005
- Timestamp:
- 11/17/2025 09:07:49 AM (5 months ago)
- Location:
- aicontify
- Files:
-
- 30 added
- 11 edited
-
tags/4.0.0 (added)
-
tags/4.0.0/aicontify.php (added)
-
tags/4.0.0/contentPosts.php (added)
-
tags/4.0.0/css (added)
-
tags/4.0.0/css/style.css (added)
-
tags/4.0.0/dashboard.php (added)
-
tags/4.0.0/faqPosts.php (added)
-
tags/4.0.0/img (added)
-
tags/4.0.0/img/logo-aicontify.png (added)
-
tags/4.0.0/js (added)
-
tags/4.0.0/js/tabsPosts.js (added)
-
tags/4.0.0/languages (added)
-
tags/4.0.0/languages/aicontify-fa_IR.mo (added)
-
tags/4.0.0/languages/aicontify-fa_IR.po (added)
-
tags/4.0.0/languages/aicontify.pot (added)
-
tags/4.0.0/readme.txt (added)
-
tags/4.0.0/seoDescription.php (added)
-
tags/4.0.0/seoTitle.php (added)
-
tags/4.0.0/settings (added)
-
tags/4.0.0/settings.php (added)
-
tags/4.0.0/settings/tab-content.php (added)
-
tags/4.0.0/settings/tab-faq.php (added)
-
tags/4.0.0/settings/tab-main.php (added)
-
tags/4.0.0/settings/tab-seo-meta.php (added)
-
tags/4.0.0/settings/tab-seo-title.php (added)
-
tags/4.0.0/tabsPosts.php (added)
-
tags/4.0.0/test (added)
-
tags/4.0.0/test/test-aicontify.php (added)
-
trunk/aicontify.php (modified) (1 diff)
-
trunk/contentPosts.php (modified) (5 diffs)
-
trunk/faqPosts.php (modified) (2 diffs)
-
trunk/js/tabsPosts.js (modified) (11 diffs)
-
trunk/languages/aicontify-fa_IR.mo (modified) (previous)
-
trunk/languages/aicontify-fa_IR.po (modified) (10 diffs)
-
trunk/languages/aicontify.pot (modified) (17 diffs)
-
trunk/readme.txt (modified) (2 diffs)
-
trunk/seoDescription.php (modified) (2 diffs)
-
trunk/seoTitle.php (modified) (2 diffs)
-
trunk/tabsPosts.php (modified) (5 diffs)
-
trunk/test (added)
-
trunk/test/test-aicontify.php (added)
Legend:
- Unmodified
- Added
- Removed
-
aicontify/trunk/aicontify.php
r3396224 r3397005 4 4 Plugin URI: https://aicontify.com/ 5 5 Description: Free AI article content generator for WordPress sites. No license. No upsells. 100% WordPress.org compliant. 6 Version: 3.8.06 Version: 4.0.0 7 7 Author: Hassan Solgi 8 8 Author URI: https://t.me/hassansolgi -
aicontify/trunk/contentPosts.php
r3395101 r3397005 4 4 // -------------------- REST API: Content Posts Generating (Client) -------------------- 5 5 add_action('rest_api_init', function() { 6 register_rest_route('aicont/v1', '/generate_contentPosts ', [6 register_rest_route('aicont/v1', '/generate_contentPostss', [ 7 7 'methods' => 'POST', 8 8 'callback' => 'aicont_generate_content_posts_api', … … 16 16 'site_language' => ['required' => false, 'type' => 'string', 'sanitize_callback' => 'sanitize_text_field'], 17 17 'site_title' => ['required' => false, 'type' => 'string', 'sanitize_callback' => 'sanitize_text_field'], 18 ' prompt'=> ['required' => false, 'type' => 'string', 'sanitize_callback' => 'sanitize_textarea_field'],18 'custom_prompt' => ['required' => false, 'type' => 'string', 'sanitize_callback' => 'sanitize_textarea_field'], 19 19 ] 20 20 ]); … … 29 29 $site_language = $request->get_param('site_language') ?: $aicont_site_language; 30 30 $site_title = $request->get_param('site_title') ?: $aicont_site_title; 31 $ prompt = $request->get_param('prompt');31 $custom_prompt = $request->get_param('custom_prompt'); 32 32 33 33 if (empty($keyword)) return new WP_REST_Response(['success' => false, 'error_code' => 'err_keyword_empty'], 400); … … 37 37 if (!$post) return new WP_REST_Response(['success' => false, 'error_code' => 'err_post_not_found'], 404); 38 38 39 // Priority: custom_prompt from AJAX > post meta > global option 40 if (empty($custom_prompt)) { 41 $custom_prompt = get_post_meta($post_id, 'aicont_singlepost_content_prompt_custom', true); 42 } 43 if (empty($custom_prompt)) { 44 $custom_prompt = get_option('aicont_plugin_content_prompt_custom', ''); 45 } 46 39 47 $client_site_url = home_url('', 'https'); 40 48 if (empty($client_site_url)) return new WP_REST_Response(['success' => false, 'error_code' => 'err_site_url'], 500); 41 49 42 $server_url = 'https://webtinus.com/wp-json/aicont/v1/generate_contentPosts ';50 $server_url = 'https://webtinus.com/wp-json/aicont/v1/generate_contentPostss'; 43 51 44 52 $body = wp_json_encode([ 45 53 'keyword' => $keyword, 46 54 'post_id' => $post_id, 47 'prompt' => $ prompt,55 'prompt' => $custom_prompt, 48 56 'api_key' => $api_key, 49 57 'client_site_url' => $client_site_url, … … 82 90 ], 200); 83 91 } 92 ?> -
aicontify/trunk/faqPosts.php
r3396224 r3397005 4 4 // -------------------- REST API: FAQ Generator (Client) -------------------- 5 5 add_action('rest_api_init', function() { 6 register_rest_route('aicont/v1', '/generate_faq ', [6 register_rest_route('aicont/v1', '/generate_faqq', [ 7 7 'methods' => 'POST', 8 8 'callback' => 'aicont_generate_faq_api', … … 41 41 if (!$post) return new WP_REST_Response(['success' => false, 'error_code' => 'err_post_not_found'], 404); 42 42 43 // Priority: custom_prompt from request > post meta > global option 44 if (empty($prompt)) { 45 $prompt = get_post_meta($post_id, 'aicont_singlepost_faq_prompt_custom', true); 46 } 47 if (empty($prompt)) { 48 $prompt = get_option('aicont_plugin_faq_prompt_custom', ''); 49 } 50 43 51 $client_site_url = home_url('', 'https'); 44 52 if (empty($client_site_url)) return new WP_REST_Response(['success' => false, 'error_code' => 'err_site_url'], 500); 45 53 46 $server_url = 'https://webtinus.com/wp-json/aicont/v1/generate_faq ';54 $server_url = 'https://webtinus.com/wp-json/aicont/v1/generate_faqq'; 47 55 $body = wp_json_encode([ 48 56 'keyword' => $keyword, -
aicontify/trunk/js/tabsPosts.js
r3396224 r3397005 194 194 } 195 195 196 // Content Generation Handler 197 if (contentBtn) { 198 contentBtn.addEventListener("click", async function () { 199 const postId = this.getAttribute("data-postid"); 200 const keyword = keywordInput?.value?.trim(); 201 202 if (!postId || isNaN(postId)) { 203 contentResultBox.innerHTML = `<p class="aicont-error">${getContentMessage( 204 "err_post_id_invalid" 205 )}</p>`; 206 return; 207 } 208 209 if (!keyword || keyword.length === 0) { 210 contentResultBox.innerHTML = `<p class="aicont-error">${getContentMessage( 211 "err_keyword_empty" 212 )}</p>`; 213 return; 214 } 215 216 contentLoadingBox.style.display = "block"; 217 contentResultBox.innerHTML = ""; 218 219 try { 220 const singlePostPrompt = 221 document 222 .getElementById("aicont_singlepost_content_prompt_custom") 223 ?.value?.trim() || ""; 224 const globalPrompt = aicont?.contentPrompt || ""; 225 226 const customPrompt = singlePostPrompt || globalPrompt || ""; 227 228 const response = await fetch(aicont.ajaxUrl, { 229 method: "POST", 230 headers: { 231 "Content-Type": "application/x-www-form-urlencoded", 232 }, 233 body: new URLSearchParams({ 234 action: "aicont_generate_content", 235 nonce: aicont.nonce, 236 post_id: postId, 237 keyword: keyword, 238 custom_prompt: customPrompt, 239 }).toString(), 240 }); 241 242 const data = await response.json(); 243 244 if (!data.success) { 245 throw new Error(data.data?.message || "err_server_error"); 246 } 247 248 if (!data.data?.content || data.data.content.trim().length === 0) { 249 throw new Error("err_content_empty"); 250 } 251 252 const isInserted = insertContent(data.data.content); 253 if (!isInserted) { 254 throw new Error("err_invalid_response"); 255 } 256 257 contentResultBox.innerHTML = `<p class="aicont-success">${getContentMessage( 258 "success_content_generated" 259 )}</p>`; 260 261 await savePost(); 262 263 contentResultBox.innerHTML = `<p class="aicont-success">${getContentMessage( 264 "success_content_saved" 265 )}</p>`; 266 contentLoadingBox.style.display = "none"; 267 } catch (error) { 268 contentLoadingBox.style.display = "none"; 269 const errorCode = 270 error.message === "err_save_timeout" || 271 error.message === "err_save_failed" || 272 error.message === "err_invalid_response" || 273 error.message === "err_content_empty" || 274 error.message === "err_keyword_empty" || 275 error.message === "err_post_id_invalid" 276 ? error.message 277 : "err_server_error"; 278 279 contentResultBox.innerHTML = `<p class="aicont-error">${getContentMessage( 280 errorCode 281 )}</p>`; 282 283 console.error("AiContify Content Generation Error:", error); 284 } 285 }); 286 } 287 196 288 // --- Content Generator --- 197 289 if (contentBtn) { … … 240 332 241 333 const response = await fetch( 242 aicontApiSettings.root + "aicont/v1/generate_contentPosts ",334 aicontApiSettings.root + "aicont/v1/generate_contentPostss", 243 335 { 244 336 method: "POST", … … 423 515 if (!postTitle) throw new Error("err_post_title_missing"); 424 516 517 const singlePostPrompt = 518 document 519 .getElementById("aicont_singlepost_faq_prompt_custom") 520 ?.value?.trim() || ""; 521 const globalPrompt = aicontApiSettings.faq_prompt_custom || ""; 522 523 const customPrompt = singlePostPrompt || globalPrompt || ""; 524 425 525 const requestData = { 426 526 keyword, … … 430 530 site_language: aicontApiSettings.site_language, 431 531 site_title: aicontApiSettings.site_title, 432 prompt: aicontApiSettings.faq_prompt_custom || "",532 prompt: customPrompt, 433 533 }; 434 534 435 535 const response = await fetch( 436 aicontApiSettings.root + "aicont/v1/generate_faq ",536 aicontApiSettings.root + "aicont/v1/generate_faqq", 437 537 { 438 538 method: "POST", … … 459 559 if (data.success && data.faq_content) { 460 560 faqResultBox.innerHTML = ` 461 <span class='success'>${getFaqMessage(462 "success_faq_generated"463 )}</span><br>464 <span style='color: #0073aa;'>${wp.i18n.__(465 "Page is refreshing to display changes...",466 "aicontify"467 )}</span>468 `;561 <span class='success'>${getFaqMessage( 562 "success_faq_generated" 563 )}</span><br> 564 <span style='color: #0073aa;'>${wp.i18n.__( 565 "Page is refreshing to display changes...", 566 "aicontify" 567 )}</span> 568 `; 469 569 setTimeout(() => location.reload(), 1500); 470 570 } else { … … 614 714 } 615 715 716 const singlePostPrompt = 717 document 718 .getElementById("aicont_singlepost_seo_title_prompt_custom") 719 ?.value?.trim() || ""; 720 const globalPrompt = aicontApiSettings.seo_title_prompt_custom || ""; 721 722 const customPrompt = singlePostPrompt || globalPrompt || ""; 723 616 724 const requestData = { 617 725 keyword, … … 621 729 site_language: aicontApiSettings.site_language, 622 730 site_title: aicontApiSettings.site_title, 623 prompt: aicontApiSettings.seo_title_prompt_custom || "",731 prompt: customPrompt, 624 732 }; 625 733 626 734 const response = await fetch( 627 aicontApiSettings.root + "aicont/v1/generate_seo_title ",735 aicontApiSettings.root + "aicont/v1/generate_seo_titlee", 628 736 { 629 737 method: "POST", … … 645 753 if (data.success && data.seo_title) { 646 754 seoTitleResultBox.innerHTML = ` 647 <span class='success'>${getSeoTitleMessage(648 "success_seo_title_generated"649 )}: <strong>${data.seo_title}</strong></span><br>650 <span style='color: #0073aa;'>${wp.i18n.__(651 "Page is refreshing to display changes...",652 "aicontify"653 )}</span>654 `;755 <span class='success'>${getSeoTitleMessage( 756 "success_seo_title_generated" 757 )}: <strong>${data.seo_title}</strong></span><br> 758 <span style='color: #0073aa;'>${wp.i18n.__( 759 "Page is refreshing to display changes...", 760 "aicontify" 761 )}</span> 762 `; 655 763 setTimeout(() => location.reload(), 1500); 656 764 } else { … … 796 904 if (!postTitle) throw new Error("err_post_title_missing"); 797 905 906 const singlePostPrompt = 907 document 908 .getElementById("aicont_singlepost_seo_description_prompt_custom") 909 ?.value?.trim() || ""; 910 const globalPrompt = aicontApiSettings.seo_meta_prompt_custom || ""; 911 912 const customPrompt = singlePostPrompt || globalPrompt || ""; 913 798 914 const requestData = { 799 915 keyword, … … 803 919 site_language: aicontApiSettings.site_language, 804 920 site_title: aicontApiSettings.site_title, 805 prompt: aicontApiSettings.seo_meta_prompt_custom || "",921 prompt: customPrompt, 806 922 }; 807 923 808 924 const response = await fetch( 809 aicontApiSettings.root + "aicont/v1/generate_meta_description ",925 aicontApiSettings.root + "aicont/v1/generate_meta_descriptionn", 810 926 { 811 927 method: "POST", … … 827 943 if (data.success && data.meta_description) { 828 944 metaDescResultBox.innerHTML = ` 829 <span class='success'>${getMetaDescMessage(830 "success_meta_generated"831 )}: <strong>${data.meta_description}</strong></span><br>832 <span style='color: #0073aa;'>${wp.i18n.__(833 "Page is refreshing to display changes...",834 "aicontify"835 )}</span>836 `;945 <span class='success'>${getMetaDescMessage( 946 "success_meta_generated" 947 )}: <strong>${data.meta_description}</strong></span><br> 948 <span style='color: #0073aa;'>${wp.i18n.__( 949 "Page is refreshing to display changes...", 950 "aicontify" 951 )}</span> 952 `; 837 953 setTimeout(() => location.reload(), 1500); 838 954 } else { -
aicontify/trunk/languages/aicontify-fa_IR.po
r3396224 r3397005 3 3 "Plural-Forms: nplurals=2; plural=(n==0 || n==1);\n" 4 4 "Project-Id-Version: AiContify\n" 5 "POT-Creation-Date: 2025-11-1 3 17:43+0330\n"6 "PO-Revision-Date: 2025-11-1 3 17:48+0330\n"5 "POT-Creation-Date: 2025-11-17 12:25+0330\n" 6 "PO-Revision-Date: 2025-11-17 12:34+0330\n" 7 7 "Language-Team: \n" 8 8 "MIME-Version: 1.0\n" … … 14 14 "X-Poedit-WPHeader: aicontify.php\n" 15 15 "X-Poedit-SourceCharset: UTF-8\n" 16 "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;" 17 "_n_noop:1,2;_nx_noop:3c,1,2;__ngettext_noop:1,2\n" 16 "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;_nx_noop:3c,1,2;__ngettext_noop:1,2\n" 18 17 "Last-Translator: \n" 19 18 "Language: fa_IR\n" … … 26 25 27 26 #. Plugin Name of the plugin/theme 28 #: aicontify.php:1 36 aicontify.php:137dashboard.php:7 tabsPosts.php:1127 #: aicontify.php:150 aicontify.php:151 dashboard.php:7 tabsPosts.php:11 29 28 msgid "AiContify" 30 29 msgstr "کانتی فای" 31 30 32 #: aicontify.php:1 47 aicontify.php:14831 #: aicontify.php:161 aicontify.php:162 33 32 msgid "Settings" 34 33 msgstr "تنظیمات" 35 34 36 #: aicontify.php:1 56 aicontify.php:15735 #: aicontify.php:170 aicontify.php:171 37 36 msgid "Premium" 38 37 msgstr "پریمیوم" 39 38 40 #: aicontify.php:1 7239 #: aicontify.php:186 41 40 msgid "Supercharge Your Content with AiContify Premium" 42 41 msgstr "محتوای خود را با کانتی فای پریمیوم قدرتمند کنید" 43 42 44 #: aicontify.php:1 7443 #: aicontify.php:188 45 44 msgid "Unlock advanced AI models, faster content creation, and exclusive tools designed to elevate your WooCommerce content." 46 45 msgstr "به مدلهای پیشرفته هوش مصنوعی، تولید سریعتر محتوا و ابزارهای اختصاصی برای ارتقای محتوای ووکامرس خود دسترسی پیدا کنید." 47 46 48 #: aicontify.php:1 78 aicontify.php:21747 #: aicontify.php:192 aicontify.php:231 49 48 msgid "Ready to Boost Your Content?" 50 49 msgstr "برای تقویت محتوای خود آمادهاید؟" 51 50 52 #: aicontify.php:1 79 aicontify.php:21851 #: aicontify.php:193 aicontify.php:232 53 52 msgid "Join thousands of creators and businesses using AiContify Premium to supercharge their WooCommerce content." 54 53 msgstr "به هزاران سازنده و کسبوکار بپیوندید که از کانتی فای پریمیوم برای تقویت محتوای ووکامرس خود استفاده میکنند." 55 54 56 #: aicontify.php:1 81 aicontify.php:22055 #: aicontify.php:195 aicontify.php:234 57 56 msgid "Upgrade to Premium" 58 57 msgstr "ارتقا به پریمیوم" 59 58 60 #: aicontify.php:1 8559 #: aicontify.php:199 61 60 msgid "Why Go Premium?" 62 61 msgstr "چرا پریمیوم؟" 63 62 64 #: aicontify.php: 18963 #: aicontify.php:203 65 64 msgid "Advanced AI Models" 66 65 msgstr "مدلهای پیشرفته هوش مصنوعی" 67 66 68 #: aicontify.php: 19067 #: aicontify.php:204 69 68 msgid "Access premium AI models for smarter, higher-quality content generation." 70 69 msgstr "به مدلهای پریمیوم هوش مصنوعی برای تولید محتوای هوشمندتر و باکیفیتتر دسترسی داشته باشید." 71 70 72 #: aicontify.php: 19471 #: aicontify.php:208 73 72 msgid "Faster Generation" 74 73 msgstr "تولید سریعتر" 75 74 76 #: aicontify.php: 19575 #: aicontify.php:209 77 76 msgid "Generate content up to 3x faster than the free version." 78 77 msgstr "تا ۳ برابر سریعتر از نسخه رایگان محتوا تولید کنید." 79 78 80 #: aicontify.php: 19979 #: aicontify.php:213 81 80 msgid "WooCommerce Product Content" 82 81 msgstr "محتوای محصول ووکامرس" 83 82 84 #: aicontify.php:201 85 msgid "" 86 "With a valid premium license, you can generate complete content for WooCommerce products including short and long descriptions. Fully SEO " 87 "optimized and ready to publish." 88 msgstr "" 89 "با لایسنس پریمیوم معتبر، میتوانید محتوای کامل برای محصولات ووکامرس شامل توضیحات کوتاه و بلند تولید کنید. کاملاً بهینهشده برای سئو و آماده انتشار." 90 91 #: aicontify.php:206 83 #: aicontify.php:215 84 msgid "With a valid premium license, you can generate complete content for WooCommerce products including short and long descriptions. Fully SEO optimized and ready to publish." 85 msgstr "با لایسنس پریمیوم معتبر، میتوانید محتوای کامل برای محصولات ووکامرس شامل توضیحات کوتاه و بلند تولید کنید. کاملاً بهینهشده برای سئو و آماده انتشار." 86 87 #: aicontify.php:220 92 88 msgid "Pro Version Features" 93 89 msgstr "ویژگیهای نسخه حرفهای" 94 90 95 #: aicontify.php:2 0891 #: aicontify.php:222 96 92 msgid "Includes all features from the free version." 97 93 msgstr "شامل تمام ویژگیهای نسخه رایگان." 98 94 99 #: aicontify.php:2 0995 #: aicontify.php:223 100 96 msgid "Full support for Pages and WooCommerce products." 101 97 msgstr "پشتیبانی کامل از صفحات و محصولات ووکامرس." 102 98 103 #: aicontify.php:2 1099 #: aicontify.php:224 104 100 msgid "Faster processing and higher accuracy using advanced AI." 105 101 msgstr "پردازش سریعتر و دقت بالاتر با استفاده از هوش مصنوعی پیشرفته." 106 102 107 #: aicontify.php:2 11dashboard.php:42103 #: aicontify.php:225 dashboard.php:42 108 104 msgid "Separate custom prompt configuration for each section: main article, FAQ, SEO title, meta description, WooCommerce product description." 109 105 msgstr "پیکربندی پرامپت سفارشی جداگانه برای هر بخش: مقاله اصلی، پرسشوپاسخ، عنوان سئو، توضیحات متا، توضیحات محصول ووکامرس." 110 106 111 #: aicontify.php:2 12dashboard.php:43107 #: aicontify.php:226 dashboard.php:43 112 108 msgid "Easy activation through a premium license." 113 109 msgstr "فعالسازی آسان از طریق لایسنس پریمیوم." 114 110 115 #: aicontify.php:2 13111 #: aicontify.php:227 116 112 msgid "Designed for professional users who need precise, customizable AI-generated content for websites and online stores." 117 113 msgstr "طراحیشده برای کاربران حرفهای که به محتوای تولیدشده توسط هوش مصنوعی دقیق و قابل سفارشیسازی برای وبسایتها و فروشگاههای آنلاین نیاز دارند." 118 114 119 #: aicontify.php:2 25115 #: aicontify.php:239 120 116 msgid "Need Help?" 121 117 msgstr "کمک میخواهید؟" 122 118 123 #: aicontify.php:2 26119 #: aicontify.php:240 124 120 msgid "Our support team is available for setup, guidance, and technical questions." 125 121 msgstr "تیم پشتیبانی ما برای راهاندازی، راهنمایی و سوالات فنی در دسترس است." 126 122 127 #: aicontify.php:2 28123 #: aicontify.php:242 128 124 msgid "Telegram:" 129 125 msgstr "تلگرام:" 130 126 131 #: aicontify.php:2 30127 #: aicontify.php:244 132 128 msgid "Email:" 133 129 msgstr "ایمیل:" … … 138 134 139 135 #: dashboard.php:14 140 msgid "" 141 "AiContify is a free AI-powered plugin for generating high-quality content directly in the WordPress editor. It allows you to create complete " 142 "articles, FAQs, and SEO-ready elements instantly, without any license or payment." 143 msgstr "" 144 "کانتی فای یک افزونه رایگان مبتنی بر هوش مصنوعی برای تولید محتوای باکیفیت مستقیماً در ویرایشگر وردپرس است. این افزونه به شما امکان میدهد مقالات " 145 "کامل، پرسشوپاسخ و عناصر آماده سئو را فوراً ایجاد کنید، بدون نیاز به لایسنس یا پرداخت." 136 msgid "AiContify is a free AI-powered plugin for generating high-quality content directly in the WordPress editor. It allows you to create complete articles, FAQs, and SEO-ready elements instantly, without any license or payment." 137 msgstr "کانتی فای یک افزونه رایگان مبتنی بر هوش مصنوعی برای تولید محتوای باکیفیت مستقیماً در ویرایشگر وردپرس است. این افزونه به شما امکان میدهد مقالات کامل، پرسشوپاسخ و عناصر آماده سئو را فوراً ایجاد کنید، بدون نیاز به لایسنس یا پرداخت." 146 138 147 139 #: dashboard.php:20 … … 166 158 167 159 #: dashboard.php:26 168 msgid "" 169 "Support for 13 languages including Persian, English, Spanish, French, German, Chinese, Japanese, Russian, Arabic, Hindi, Portuguese, Italian, and " 170 "Korean." 160 msgid "Support for 13 languages including Persian, English, Spanish, French, German, Chinese, Japanese, Russian, Arabic, Hindi, Portuguese, Italian, and Korean." 171 161 msgstr "پشتیبانی از ۱۳ زبان شامل فارسی، انگلیسی، اسپانیایی، فرانسوی، آلمانی، چینی، ژاپنی، روسی، عربی، هندی، پرتغالی، ایتالیایی و کرهای." 172 162 … … 244 234 245 235 #: dashboard.php:80 246 msgid "License Settings"247 msgstr "تنظیمات لایسنس"248 249 #: dashboard.php:83250 236 msgid "Plugin Settings" 251 237 msgstr "تنظیمات افزونه" 252 238 253 #: dashboard.php:8 9239 #: dashboard.php:86 254 240 msgid "Professional Content, Just One Click Away!" 255 241 msgstr "محتوای حرفهای، فقط با یک کلیک!" 256 242 257 #: faqPosts.php: 96 faqPosts.php:108243 #: faqPosts.php:102 faqPosts.php:114 258 244 msgid "Frequently Asked Questions" 259 245 msgstr "سوالات متداول" … … 263 249 msgstr "شما دسترسی لازم برای مشاهده این صفحه را ندارید." 264 250 265 #: settings.php:8 4251 #: settings.php:82 266 252 msgid "AiContify Settings" 267 253 msgstr "تنظیمات کانتی فای" 268 254 269 #: settings.php:26 6255 #: settings.php:264 270 256 msgid "Main Settings" 271 257 msgstr "تنظیمات اصلی" 272 258 273 #: settings.php:26 9259 #: settings.php:267 274 260 msgid "Content Prompt" 275 261 msgstr "پرامپت محتوا" 276 262 277 #: settings.php:27 2settings/tab-faq.php:14263 #: settings.php:270 settings/tab-faq.php:14 278 264 msgid "FAQ Prompt" 279 265 msgstr "پرامپت پرسشوپاسخ" 280 266 281 #: settings.php:27 5267 #: settings.php:273 282 268 msgid "SEO Title Prompt" 283 269 msgstr "پرامپت عنوان سئو" 284 270 285 #: settings.php:27 8271 #: settings.php:276 286 272 msgid "SEO Meta Prompt" 287 273 msgstr "پرامپت متای سئو" 288 274 289 #: settings.php:30 3275 #: settings.php:301 290 276 msgid "Save Settings" 291 277 msgstr "ذخیره تنظیمات" 292 278 293 #: settings.php:3 21279 #: settings.php:319 294 280 msgid "This field must include {keyword} if not empty." 295 281 msgstr "اگر این فیلد خالی نیست، باید شامل {keyword} باشد." 296 282 297 #: settings.php:33 5283 #: settings.php:333 298 284 msgid "Brand title cannot be empty." 299 285 msgstr "عنوان برند نمیتواند خالی باشد." 300 286 301 #: settings.php:3 60287 #: settings.php:358 302 288 msgid "Max 300 characters." 303 289 msgstr "حداکثر ۳۰۰ کاراکتر." … … 331 317 msgstr "تنظیمات نوشته" 332 318 333 #: settings/tab-content.php:42 settings/tab-content.php:70 settings/tab-content.php:97 settings/tab-faq.php:42 settings/tab-faq.php:125 334 #: settings/tab-seo-meta.php:42 settings/tab-seo-meta.php:72 settings/tab-seo-title.php:42 settings/tab-seo-title.php:70 319 #: settings/tab-content.php:42 settings/tab-content.php:71 settings/tab-content.php:98 settings/tab-faq.php:42 settings/tab-faq.php:125 settings/tab-seo-meta.php:42 settings/tab-seo-meta.php:72 settings/tab-seo-title.php:42 settings/tab-seo-title.php:70 335 320 msgid "Custom Prompt (Optional)" 336 321 msgstr "پرامپت سفارشی (اختیاری)" 337 322 338 #: settings/tab-content.php:53 settings/tab-content.php:81 settings/tab-content.php:108 settings/tab-faq.php:53 settings/tab-faq.php:136 339 #: settings/tab-seo-meta.php:53 settings/tab-seo-meta.php:83 settings/tab-seo-title.php:53 settings/tab-seo-title.php:81 323 #: settings/tab-content.php:53 settings/tab-content.php:82 settings/tab-content.php:109 settings/tab-faq.php:53 settings/tab-faq.php:136 settings/tab-seo-meta.php:53 settings/tab-seo-meta.php:83 settings/tab-seo-title.php:53 settings/tab-seo-title.php:81 340 324 msgid "Leave empty to use default." 341 325 msgstr "برای استفاده از پیشفرض خالی بگذارید." 342 326 343 327 #. translators: %s: {keyword} placeholder 344 #: settings/tab-content.php:56 settings/tab-content.php:84 settings/tab-faq.php:56 settings/tab-faq.php:139 settings/tab-seo-meta.php:57 345 #: settings/tab-seo-meta.php:87 settings/tab-seo-title.php:56 settings/tab-seo-title.php:84 328 #: settings/tab-content.php:56 settings/tab-content.php:85 settings/tab-faq.php:56 settings/tab-faq.php:139 settings/tab-seo-meta.php:57 settings/tab-seo-meta.php:87 settings/tab-seo-title.php:56 settings/tab-seo-title.php:84 346 329 #, php-format 347 330 msgid "If filled, must include %s." 348 331 msgstr "اگر پر شده باشد، باید شامل %s باشد." 349 332 350 #: settings/tab-content.php:6 5settings/tab-faq.php:120 settings/tab-seo-meta.php:67 settings/tab-seo-title.php:65333 #: settings/tab-content.php:66 settings/tab-faq.php:120 settings/tab-seo-meta.php:67 settings/tab-seo-title.php:65 351 334 msgid "Product Settings" 352 335 msgstr "تنظیمات محصول" 353 336 354 #: settings/tab-content.php:9 2337 #: settings/tab-content.php:93 355 338 msgid "Short Description" 356 339 msgstr "توضیح کوتاه" 357 340 358 341 #. translators: %s: {keyword} placeholder 359 #: settings/tab-content.php:11 1342 #: settings/tab-content.php:112 360 343 #, php-format 361 344 msgid "If filled, must include %s. Max 300 chars." … … 536 519 msgstr "تولید محتوای اصلی" 537 520 538 #: tabsPosts.php:87 tabsPosts.php:1 13 tabsPosts.php:154 tabsPosts.php:210521 #: tabsPosts.php:87 tabsPosts.php:146 tabsPosts.php:220 tabsPosts.php:309 539 522 msgid "Please do not refresh the page until the operation is complete." 540 523 msgstr "لطفاً تا پایان عملیات صفحه را رفرش نکنید." 541 524 525 #: tabsPosts.php:96 tabsPosts.php:155 tabsPosts.php:229 tabsPosts.php:318 526 msgid "Custom Prompt Settings" 527 msgstr "تنظیمات پرامپت سفارشی" 528 529 #: tabsPosts.php:102 530 msgid "Custom Prompt for Content Generation" 531 msgstr "پرامپت سفارشی برای تولید محتوا" 532 533 #: tabsPosts.php:114 534 msgid "Customize the AI prompt for generating content for this specific post." 535 msgstr "پرامپت هوش مصنوعی را برای تولید محتوای این نوشته خاص سفارشی کنید." 536 537 #: tabsPosts.php:115 tabsPosts.php:174 tabsPosts.php:248 tabsPosts.php:337 538 msgid "Leave empty to use the default prompt." 539 msgstr "برای استفاده از پرامپت پیشفرض خالی بگذارید." 540 541 #. translators: %s: {keyword} placeholder 542 #: tabsPosts.php:118 tabsPosts.php:177 tabsPosts.php:251 tabsPosts.php:340 543 #, php-format 544 msgid "If filled, must include %s placeholder." 545 msgstr "اگر پر شود، حتماً باید شامل %s باشد." 546 542 547 #. translators: %1$s: opening <strong> tag, %2$s: closing </strong> tag 543 #: tabsPosts.php:1 01548 #: tabsPosts.php:134 544 549 #, php-format 545 550 msgid "Click the button below to automatically generate FAQs for the post. %1$sDo not refresh the page during the process.%2$s" 546 551 msgstr "برای تولید خودکار پرسشوپاسخ نوشته روی دکمه زیر کلیک کنید. %1$sدر طول فرآیند صفحه را رفرش نکنید.%2$s" 547 552 548 #: tabsPosts.php:1 08553 #: tabsPosts.php:141 549 554 msgid "Generate FAQs" 550 555 msgstr "تولید پرسشوپاسخ" 551 556 552 #: tabsPosts.php:142 557 #: tabsPosts.php:161 558 msgid "Custom Prompt for FAQ Generation" 559 msgstr "پرامپت سفارشی برای تولید پرسشوپاسخ" 560 561 #: tabsPosts.php:173 562 msgid "Customize the AI prompt for generating FAQs for this specific post." 563 msgstr "پرامپت هوش مصنوعی را برای تولید پرسشوپاسخ این نوشته خاص سفارشی کنید." 564 565 #: tabsPosts.php:208 553 566 #, php-format 554 567 msgid "Click the button below to automatically generate the SEO title for the post. %1$sDo not refresh the page during the process.%2$s" 555 568 msgstr "برای تولید خودکار عنوان سئو نوشته روی دکمه زیر کلیک کنید. %1$sدر طول فرآیند صفحه را رفرش نکنید.%2$s" 556 569 557 #: tabsPosts.php: 149570 #: tabsPosts.php:215 558 571 msgid "Generate SEO Title" 559 572 msgstr "تولید عنوان سئو" 560 573 561 #: tabsPosts.php:165 tabsPosts.php:221 574 #: tabsPosts.php:235 575 msgid "Custom Prompt for SEO Title Generation" 576 msgstr "پرامپت سفارشی برای تولید عنوان سئو" 577 578 #: tabsPosts.php:247 579 msgid "Customize the AI prompt for generating SEO title for this specific post." 580 msgstr "پرامپت هوش مصنوعی را برای تولید عنوان سئو این نوشته خاص سفارشی کنید." 581 582 #: tabsPosts.php:264 tabsPosts.php:353 562 583 msgid "Yoast SEO Plugin Required" 563 584 msgstr "افزونه Yoast SEO لازم است" 564 585 565 #: tabsPosts.php: 168 tabsPosts.php:224586 #: tabsPosts.php:267 tabsPosts.php:356 566 587 msgid "This feature requires the Yoast SEO plugin to be installed and activated." 567 588 msgstr "این ویژگی نیاز دارد افزونه Yoast SEO نصب و فعال باشد." 568 589 569 #: tabsPosts.php: 171 tabsPosts.php:227590 #: tabsPosts.php:270 tabsPosts.php:359 570 591 msgid "After activation, refresh the page." 571 592 msgstr "پس از فعالسازی، صفحه را رفرش کنید." 572 593 573 #: tabsPosts.php: 198594 #: tabsPosts.php:297 574 595 #, php-format 575 596 msgid "Click the button below to automatically generate the meta description for the post. %1$sDo not refresh the page during the process.%2$s" 576 597 msgstr "برای تولید خودکار توضیحات متا نوشته روی دکمه زیر کلیک کنید. %1$sدر طول فرآیند صفحه را رفرش نکنید.%2$s" 577 598 578 #: tabsPosts.php: 205599 #: tabsPosts.php:304 579 600 msgid "Generate Meta Description" 580 601 msgstr "تولید توضیحات متا" 602 603 #: tabsPosts.php:324 604 msgid "Custom Prompt for Meta Description Generation" 605 msgstr "پرامپت سفارشی برای تولید توضیحات متا" 606 607 #: tabsPosts.php:336 608 msgid "Customize the AI prompt for generating meta description for this specific post." 609 msgstr "پرامپت هوش مصنوعی را برای تولید توضیحات متا این نوشته خاص سفارشی کنید." 581 610 582 611 #. Plugin URI of the plugin/theme … … 586 615 #. Description of the plugin/theme 587 616 msgid "Free AI article content generator for WordPress sites. No license. No upsells. 100% WordPress.org compliant." 588 msgstr "" 589 "تولیدکننده رایگان محتوای مقاله با هوش مصنوعی برای سایتهای وردپرس. بدون لایسنس. بدون فروش افزونههای اضافه. کاملاً مطابق استاندارد WordPress.org." 617 msgstr "تولیدکننده رایگان محتوای مقاله با هوش مصنوعی برای سایتهای وردپرس. بدون لایسنس. بدون فروش افزونههای اضافه. کاملاً مطابق استاندارد WordPress.org." 590 618 591 619 #. Author of the plugin/theme -
aicontify/trunk/languages/aicontify.pot
r3396224 r3397005 4 4 "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" 5 5 "Project-Id-Version: AiContify\n" 6 "POT-Creation-Date: 2025-11-1 3 17:43+0330\n"7 "PO-Revision-Date: 2025-11-1 3 17:43+0330\n"6 "POT-Creation-Date: 2025-11-17 12:25+0330\n" 7 "PO-Revision-Date: 2025-11-17 12:24+0330\n" 8 8 "Last-Translator: \n" 9 9 "Language-Team: \n" … … 27 27 28 28 #. Plugin Name of the plugin/theme 29 #: aicontify.php:1 36 aicontify.php:137dashboard.php:7 tabsPosts.php:1129 #: aicontify.php:150 aicontify.php:151 dashboard.php:7 tabsPosts.php:11 30 30 msgid "AiContify" 31 31 msgstr "" 32 32 33 #: aicontify.php:1 47 aicontify.php:14833 #: aicontify.php:161 aicontify.php:162 34 34 msgid "Settings" 35 35 msgstr "" 36 36 37 #: aicontify.php:1 56 aicontify.php:15737 #: aicontify.php:170 aicontify.php:171 38 38 msgid "Premium" 39 39 msgstr "" 40 40 41 #: aicontify.php:1 7241 #: aicontify.php:186 42 42 msgid "Supercharge Your Content with AiContify Premium" 43 43 msgstr "" 44 44 45 #: aicontify.php:1 7445 #: aicontify.php:188 46 46 msgid "" 47 47 "Unlock advanced AI models, faster content creation, and exclusive tools " … … 49 49 msgstr "" 50 50 51 #: aicontify.php:1 78 aicontify.php:21751 #: aicontify.php:192 aicontify.php:231 52 52 msgid "Ready to Boost Your Content?" 53 53 msgstr "" 54 54 55 #: aicontify.php:1 79 aicontify.php:21855 #: aicontify.php:193 aicontify.php:232 56 56 msgid "" 57 57 "Join thousands of creators and businesses using AiContify Premium to " … … 59 59 msgstr "" 60 60 61 #: aicontify.php:1 81 aicontify.php:22061 #: aicontify.php:195 aicontify.php:234 62 62 msgid "Upgrade to Premium" 63 63 msgstr "" 64 64 65 #: aicontify.php:1 8565 #: aicontify.php:199 66 66 msgid "Why Go Premium?" 67 67 msgstr "" 68 68 69 #: aicontify.php: 18969 #: aicontify.php:203 70 70 msgid "Advanced AI Models" 71 71 msgstr "" 72 72 73 #: aicontify.php: 19073 #: aicontify.php:204 74 74 msgid "" 75 75 "Access premium AI models for smarter, higher-quality content generation." 76 76 msgstr "" 77 77 78 #: aicontify.php: 19478 #: aicontify.php:208 79 79 msgid "Faster Generation" 80 80 msgstr "" 81 81 82 #: aicontify.php: 19582 #: aicontify.php:209 83 83 msgid "Generate content up to 3x faster than the free version." 84 84 msgstr "" 85 85 86 #: aicontify.php: 19986 #: aicontify.php:213 87 87 msgid "WooCommerce Product Content" 88 88 msgstr "" 89 89 90 #: aicontify.php:2 0190 #: aicontify.php:215 91 91 msgid "" 92 92 "With a valid premium license, you can generate complete content for " … … 95 95 msgstr "" 96 96 97 #: aicontify.php:2 0697 #: aicontify.php:220 98 98 msgid "Pro Version Features" 99 99 msgstr "" 100 100 101 #: aicontify.php:2 08101 #: aicontify.php:222 102 102 msgid "Includes all features from the free version." 103 103 msgstr "" 104 104 105 #: aicontify.php:2 09105 #: aicontify.php:223 106 106 msgid "Full support for Pages and WooCommerce products." 107 107 msgstr "" 108 108 109 #: aicontify.php:2 10109 #: aicontify.php:224 110 110 msgid "Faster processing and higher accuracy using advanced AI." 111 111 msgstr "" 112 112 113 #: aicontify.php:2 11dashboard.php:42113 #: aicontify.php:225 dashboard.php:42 114 114 msgid "" 115 115 "Separate custom prompt configuration for each section: main article, FAQ, " … … 117 117 msgstr "" 118 118 119 #: aicontify.php:2 12dashboard.php:43119 #: aicontify.php:226 dashboard.php:43 120 120 msgid "Easy activation through a premium license." 121 121 msgstr "" 122 122 123 #: aicontify.php:2 13123 #: aicontify.php:227 124 124 msgid "" 125 125 "Designed for professional users who need precise, customizable AI-generated " … … 127 127 msgstr "" 128 128 129 #: aicontify.php:2 25129 #: aicontify.php:239 130 130 msgid "Need Help?" 131 131 msgstr "" 132 132 133 #: aicontify.php:2 26133 #: aicontify.php:240 134 134 msgid "" 135 135 "Our support team is available for setup, guidance, and technical questions." 136 136 msgstr "" 137 137 138 #: aicontify.php:2 28138 #: aicontify.php:242 139 139 msgid "Telegram:" 140 140 msgstr "" 141 141 142 #: aicontify.php:2 30142 #: aicontify.php:244 143 143 msgid "Email:" 144 144 msgstr "" … … 258 258 259 259 #: dashboard.php:80 260 msgid "License Settings"261 msgstr ""262 263 #: dashboard.php:83264 260 msgid "Plugin Settings" 265 261 msgstr "" 266 262 267 #: dashboard.php:8 9263 #: dashboard.php:86 268 264 msgid "Professional Content, Just One Click Away!" 269 265 msgstr "" 270 266 271 #: faqPosts.php: 96 faqPosts.php:108267 #: faqPosts.php:102 faqPosts.php:114 272 268 msgid "Frequently Asked Questions" 273 269 msgstr "" … … 277 273 msgstr "" 278 274 279 #: settings.php:8 4275 #: settings.php:82 280 276 msgid "AiContify Settings" 281 277 msgstr "" 282 278 283 #: settings.php:26 6279 #: settings.php:264 284 280 msgid "Main Settings" 285 281 msgstr "" 286 282 287 #: settings.php:26 9283 #: settings.php:267 288 284 msgid "Content Prompt" 289 285 msgstr "" 290 286 291 #: settings.php:27 2settings/tab-faq.php:14287 #: settings.php:270 settings/tab-faq.php:14 292 288 msgid "FAQ Prompt" 293 289 msgstr "" 294 290 295 #: settings.php:27 5291 #: settings.php:273 296 292 msgid "SEO Title Prompt" 297 293 msgstr "" 298 294 299 #: settings.php:27 8295 #: settings.php:276 300 296 msgid "SEO Meta Prompt" 301 297 msgstr "" 302 298 303 #: settings.php:30 3299 #: settings.php:301 304 300 msgid "Save Settings" 305 301 msgstr "" 306 302 307 #: settings.php:3 21303 #: settings.php:319 308 304 msgid "This field must include {keyword} if not empty." 309 305 msgstr "" 310 306 311 #: settings.php:33 5307 #: settings.php:333 312 308 msgid "Brand title cannot be empty." 313 309 msgstr "" 314 310 315 #: settings.php:3 60311 #: settings.php:358 316 312 msgid "Max 300 characters." 317 313 msgstr "" … … 355 351 msgstr "" 356 352 357 #: settings/tab-content.php:42 settings/tab-content.php:7 0358 #: settings/tab-content.php:9 7settings/tab-faq.php:42 settings/tab-faq.php:125353 #: settings/tab-content.php:42 settings/tab-content.php:71 354 #: settings/tab-content.php:98 settings/tab-faq.php:42 settings/tab-faq.php:125 359 355 #: settings/tab-seo-meta.php:42 settings/tab-seo-meta.php:72 360 356 #: settings/tab-seo-title.php:42 settings/tab-seo-title.php:70 … … 362 358 msgstr "" 363 359 364 #: settings/tab-content.php:53 settings/tab-content.php:8 1365 #: settings/tab-content.php:10 8settings/tab-faq.php:53360 #: settings/tab-content.php:53 settings/tab-content.php:82 361 #: settings/tab-content.php:109 settings/tab-faq.php:53 366 362 #: settings/tab-faq.php:136 settings/tab-seo-meta.php:53 367 363 #: settings/tab-seo-meta.php:83 settings/tab-seo-title.php:53 … … 371 367 372 368 #. translators: %s: {keyword} placeholder 373 #: settings/tab-content.php:56 settings/tab-content.php:8 4369 #: settings/tab-content.php:56 settings/tab-content.php:85 374 370 #: settings/tab-faq.php:56 settings/tab-faq.php:139 375 371 #: settings/tab-seo-meta.php:57 settings/tab-seo-meta.php:87 … … 379 375 msgstr "" 380 376 381 #: settings/tab-content.php:6 5settings/tab-faq.php:120377 #: settings/tab-content.php:66 settings/tab-faq.php:120 382 378 #: settings/tab-seo-meta.php:67 settings/tab-seo-title.php:65 383 379 msgid "Product Settings" 384 380 msgstr "" 385 381 386 #: settings/tab-content.php:9 2382 #: settings/tab-content.php:93 387 383 msgid "Short Description" 388 384 msgstr "" 389 385 390 386 #. translators: %s: {keyword} placeholder 391 #: settings/tab-content.php:11 1387 #: settings/tab-content.php:112 392 388 #, php-format 393 389 msgid "If filled, must include %s. Max 300 chars." … … 572 568 msgstr "" 573 569 574 #: tabsPosts.php:87 tabsPosts.php:1 13 tabsPosts.php:154 tabsPosts.php:210570 #: tabsPosts.php:87 tabsPosts.php:146 tabsPosts.php:220 tabsPosts.php:309 575 571 msgid "Please do not refresh the page until the operation is complete." 576 572 msgstr "" 577 573 574 #: tabsPosts.php:96 tabsPosts.php:155 tabsPosts.php:229 tabsPosts.php:318 575 msgid "Custom Prompt Settings" 576 msgstr "" 577 578 #: tabsPosts.php:102 579 msgid "Custom Prompt for Content Generation" 580 msgstr "" 581 582 #: tabsPosts.php:114 583 msgid "Customize the AI prompt for generating content for this specific post." 584 msgstr "" 585 586 #: tabsPosts.php:115 tabsPosts.php:174 tabsPosts.php:248 tabsPosts.php:337 587 msgid "Leave empty to use the default prompt." 588 msgstr "" 589 590 #. translators: %s: {keyword} placeholder 591 #: tabsPosts.php:118 tabsPosts.php:177 tabsPosts.php:251 tabsPosts.php:340 592 #, php-format 593 msgid "If filled, must include %s placeholder." 594 msgstr "" 595 578 596 #. translators: %1$s: opening <strong> tag, %2$s: closing </strong> tag 579 #: tabsPosts.php:1 01597 #: tabsPosts.php:134 580 598 #, php-format 581 599 msgid "" … … 584 602 msgstr "" 585 603 586 #: tabsPosts.php:1 08604 #: tabsPosts.php:141 587 605 msgid "Generate FAQs" 588 606 msgstr "" 589 607 590 #: tabsPosts.php:142 608 #: tabsPosts.php:161 609 msgid "Custom Prompt for FAQ Generation" 610 msgstr "" 611 612 #: tabsPosts.php:173 613 msgid "Customize the AI prompt for generating FAQs for this specific post." 614 msgstr "" 615 616 #: tabsPosts.php:208 591 617 #, php-format 592 618 msgid "" … … 595 621 msgstr "" 596 622 597 #: tabsPosts.php: 149623 #: tabsPosts.php:215 598 624 msgid "Generate SEO Title" 599 625 msgstr "" 600 626 601 #: tabsPosts.php:165 tabsPosts.php:221 627 #: tabsPosts.php:235 628 msgid "Custom Prompt for SEO Title Generation" 629 msgstr "" 630 631 #: tabsPosts.php:247 632 msgid "" 633 "Customize the AI prompt for generating SEO title for this specific post." 634 msgstr "" 635 636 #: tabsPosts.php:264 tabsPosts.php:353 602 637 msgid "Yoast SEO Plugin Required" 603 638 msgstr "" 604 639 605 #: tabsPosts.php: 168 tabsPosts.php:224640 #: tabsPosts.php:267 tabsPosts.php:356 606 641 msgid "" 607 642 "This feature requires the Yoast SEO plugin to be installed and activated." 608 643 msgstr "" 609 644 610 #: tabsPosts.php: 171 tabsPosts.php:227645 #: tabsPosts.php:270 tabsPosts.php:359 611 646 msgid "After activation, refresh the page." 612 647 msgstr "" 613 648 614 #: tabsPosts.php: 198649 #: tabsPosts.php:297 615 650 #, php-format 616 651 msgid "" … … 619 654 msgstr "" 620 655 621 #: tabsPosts.php: 205656 #: tabsPosts.php:304 622 657 msgid "Generate Meta Description" 658 msgstr "" 659 660 #: tabsPosts.php:324 661 msgid "Custom Prompt for Meta Description Generation" 662 msgstr "" 663 664 #: tabsPosts.php:336 665 msgid "" 666 "Customize the AI prompt for generating meta description for this specific " 667 "post." 623 668 msgstr "" 624 669 -
aicontify/trunk/readme.txt
r3396224 r3397005 4 4 Requires at least: 5.0 5 5 Tested up to: 6.8 6 Stable tag: 3.8.06 Stable tag: 4.0.0 7 7 Requires PHP: 7.4 8 8 License: GPLv2 or later … … 121 121 == Changelog == 122 122 123 = 4.0.0 = November 17, 2025 124 Added a custom prompt field inside post editor for more flexible content generation 125 Optimized REST API endpoints for faster and more reliable responses 126 123 127 = 3.8.0 = November 15, 2025 124 128 Fixed several issues in the settings page to improve stability and usability -
aicontify/trunk/seoDescription.php
r3395101 r3397005 4 4 // -------------------- REST API: Meta Description Generator (Client) -------------------- 5 5 add_action('rest_api_init', function() { 6 register_rest_route('aicont/v1', '/generate_meta_description ', [6 register_rest_route('aicont/v1', '/generate_meta_descriptionn', [ 7 7 'methods' => 'POST', 8 8 'callback' => 'aicont_generate_meta_description_api_callback', … … 40 40 if (!$post) return new WP_REST_Response(['success' => false, 'error_code' => 'err_post_not_found'], 404); 41 41 42 // Priority: custom_prompt from request > post meta > global option 43 if (empty($prompt)) { 44 $prompt = get_post_meta($post_id, 'aicont_singlepost_seo_description_prompt_custom', true); 45 } 46 if (empty($prompt)) { 47 $prompt = get_option('aicont_plugin_seo_description_prompt_custom', ''); 48 } 49 42 50 $client_site_url = home_url('', 'https'); 43 51 if (empty($client_site_url)) return new WP_REST_Response(['success' => false, 'error_code' => 'err_site_url'], 500); 44 52 45 $server_url = 'https://webtinus.com/wp-json/aicont/v1/generate_meta_description ';53 $server_url = 'https://webtinus.com/wp-json/aicont/v1/generate_meta_descriptionn'; 46 54 $body = wp_json_encode([ 47 55 'keyword' => $keyword, -
aicontify/trunk/seoTitle.php
r3395101 r3397005 4 4 // -------------------- REST API: SEO Title Generator (Client) -------------------- 5 5 add_action('rest_api_init', function() { 6 register_rest_route('aicont/v1', '/generate_seo_title ', [6 register_rest_route('aicont/v1', '/generate_seo_titlee', [ 7 7 'methods' => 'POST', 8 8 'callback' => 'aicont_generate_seo_title_api_callback', … … 43 43 if (!$post) return new WP_REST_Response(['success' => false, 'error_code' => 'err_post_not_found'], 404); 44 44 45 // Priority: custom_prompt from request > post meta > global option 46 if (empty($prompt)) { 47 $prompt = get_post_meta($post_id, 'aicont_singlepost_seo_title_prompt_custom', true); 48 } 49 if (empty($prompt)) { 50 $prompt = get_option('aicont_plugin_seo_title_prompt_custom', ''); 51 } 52 45 53 $client_site_url = home_url('', 'https'); 46 54 if (empty($client_site_url)) return new WP_REST_Response(['success' => false, 'error_code' => 'err_site_url'], 500); 47 55 48 56 // Send request to central server 49 $server_url = 'https://webtinus.com/wp-json/aicont/v1/generate_seo_title ';57 $server_url = 'https://webtinus.com/wp-json/aicont/v1/generate_seo_titlee'; 50 58 $body = wp_json_encode([ 51 59 'keyword' => $keyword, -
aicontify/trunk/tabsPosts.php
r3393764 r3397005 91 91 </div> 92 92 </div> 93 94 <!-- Custom Prompt Section --> 95 <div class="aicont-custom-prompt-section" style="margin-top: 30px; padding-top: 20px; border-top: 1px solid #ddd;"> 96 <h3><?php esc_html_e('Custom Prompt Settings', 'aicontify'); ?></h3> 97 98 <table class="form-table"> 99 <tr> 100 <th scope="row"> 101 <label for="aicont_singlepost_content_prompt_custom"> 102 <?php esc_html_e('Custom Prompt for Content Generation', 'aicontify'); ?> 103 </label> 104 </th> 105 <td> 106 <textarea 107 id="aicont_singlepost_content_prompt_custom" 108 name="aicont_singlepost_content_prompt_custom" 109 rows="6" 110 class="widefat" 111 ><?php echo isset($post->ID) ? esc_textarea(get_post_meta($post->ID, 'aicont_singlepost_content_prompt_custom', true)) : ''; ?></textarea> 112 113 <p class="description"> 114 <?php esc_html_e('Customize the AI prompt for generating content for this specific post.', 'aicontify'); ?><br> 115 <?php esc_html_e('Leave empty to use the default prompt.', 'aicontify'); ?><br> 116 <?php printf( 117 /* translators: %s: {keyword} placeholder */ 118 esc_html__('If filled, must include %s placeholder.', 'aicontify'), 119 '<code>{keyword}</code>' 120 ); ?> 121 </p> 122 </td> 123 </tr> 124 </table> 125 </div> 93 126 </div> 94 127 … … 117 150 </div> 118 151 </div> 152 153 <!-- Custom Prompt Section --> 154 <div class="aicont-custom-prompt-section" style="margin-top: 30px; padding-top: 20px; border-top: 1px solid #ddd;"> 155 <h3><?php esc_html_e('Custom Prompt Settings', 'aicontify'); ?></h3> 156 157 <table class="form-table"> 158 <tr> 159 <th scope="row"> 160 <label for="aicont_singlepost_faq_prompt_custom"> 161 <?php esc_html_e('Custom Prompt for FAQ Generation', 'aicontify'); ?> 162 </label> 163 </th> 164 <td> 165 <textarea 166 id="aicont_singlepost_faq_prompt_custom" 167 name="aicont_singlepost_faq_prompt_custom" 168 rows="6" 169 class="widefat" 170 ><?php echo isset($post->ID) ? esc_textarea(get_post_meta($post->ID, 'aicont_singlepost_faq_prompt_custom', true)) : ''; ?></textarea> 171 172 <p class="description"> 173 <?php esc_html_e('Customize the AI prompt for generating FAQs for this specific post.', 'aicontify'); ?><br> 174 <?php esc_html_e('Leave empty to use the default prompt.', 'aicontify'); ?><br> 175 <?php printf( 176 /* translators: %s: {keyword} placeholder */ 177 esc_html__('If filled, must include %s placeholder.', 'aicontify'), 178 '<code>{keyword}</code>' 179 ); ?> 180 </p> 181 </td> 182 </tr> 183 </table> 184 </div> 119 185 </div> 120 186 … … 159 225 </div> 160 226 227 <!-- Custom Prompt Section --> 228 <div class="aicont-custom-prompt-section" style="margin-top: 30px; padding-top: 20px; border-top: 1px solid #ddd;"> 229 <h3><?php esc_html_e('Custom Prompt Settings', 'aicontify'); ?></h3> 230 231 <table class="form-table"> 232 <tr> 233 <th scope="row"> 234 <label for="aicont_singlepost_seo_title_prompt_custom"> 235 <?php esc_html_e('Custom Prompt for SEO Title Generation', 'aicontify'); ?> 236 </label> 237 </th> 238 <td> 239 <textarea 240 id="aicont_singlepost_seo_title_prompt_custom" 241 name="aicont_singlepost_seo_title_prompt_custom" 242 rows="6" 243 class="widefat" 244 ><?php echo isset($post->ID) ? esc_textarea(get_post_meta($post->ID, 'aicont_singlepost_seo_title_prompt_custom', true)) : ''; ?></textarea> 245 246 <p class="description"> 247 <?php esc_html_e('Customize the AI prompt for generating SEO title for this specific post.', 'aicontify'); ?><br> 248 <?php esc_html_e('Leave empty to use the default prompt.', 'aicontify'); ?><br> 249 <?php printf( 250 /* translators: %s: {keyword} placeholder */ 251 esc_html__('If filled, must include %s placeholder.', 'aicontify'), 252 '<code>{keyword}</code>' 253 ); ?> 254 </p> 255 </td> 256 </tr> 257 </table> 258 </div> 259 161 260 <?php else: ?> 162 261 <!-- Yoast Not Active - English Error --> … … 215 314 </div> 216 315 316 <!-- Custom Prompt Section --> 317 <div class="aicont-custom-prompt-section" style="margin-top: 30px; padding-top: 20px; border-top: 1px solid #ddd;"> 318 <h3><?php esc_html_e('Custom Prompt Settings', 'aicontify'); ?></h3> 319 320 <table class="form-table"> 321 <tr> 322 <th scope="row"> 323 <label for="aicont_singlepost_seo_description_prompt_custom"> 324 <?php esc_html_e('Custom Prompt for Meta Description Generation', 'aicontify'); ?> 325 </label> 326 </th> 327 <td> 328 <textarea 329 id="aicont_singlepost_seo_description_prompt_custom" 330 name="aicont_singlepost_seo_description_prompt_custom" 331 rows="6" 332 class="widefat" 333 ><?php echo isset($post->ID) ? esc_textarea(get_post_meta($post->ID, 'aicont_singlepost_seo_description_prompt_custom', true)) : ''; ?></textarea> 334 335 <p class="description"> 336 <?php esc_html_e('Customize the AI prompt for generating meta description for this specific post.', 'aicontify'); ?><br> 337 <?php esc_html_e('Leave empty to use the default prompt.', 'aicontify'); ?><br> 338 <?php printf( 339 /* translators: %s: {keyword} placeholder */ 340 esc_html__('If filled, must include %s placeholder.', 'aicontify'), 341 '<code>{keyword}</code>' 342 ); ?> 343 </p> 344 </td> 345 </tr> 346 </table> 347 </div> 348 217 349 <?php else: ?> 218 350 <!-- Yoast Not Active - English Error --> … … 264 396 } else { 265 397 delete_post_meta($post_id, '_aicont_keyword'); 398 } 399 } 400 401 // Save custom prompts 402 $prompts = [ 403 'aicont_singlepost_content_prompt_custom', 404 'aicont_singlepost_faq_prompt_custom', 405 'aicont_singlepost_seo_title_prompt_custom', 406 'aicont_singlepost_seo_description_prompt_custom' 407 ]; 408 409 foreach ($prompts as $prompt_key) { 410 if (isset($_POST[$prompt_key])) { 411 $prompt_value = sanitize_textarea_field(wp_unslash($_POST[$prompt_key])); 412 if (!empty($prompt_value)) { 413 update_post_meta($post_id, $prompt_key, $prompt_value); 414 } else { 415 delete_post_meta($post_id, $prompt_key); 416 } 266 417 } 267 418 }
Note: See TracChangeset
for help on using the changeset viewer.