Plugin Directory

Changeset 3428884


Ignore:
Timestamp:
12/29/2025 07:59:11 AM (3 months ago)
Author:
webtinus
Message:

Add Suggested Title
Full support for RankMeth plugin

Location:
aicontify
Files:
29 added
15 edited

Legend:

Unmodified
Added
Removed
  • aicontify/trunk/aicontify.php

    r3412045 r3428884  
    44Plugin URI: https://aicontify.com/
    55Description: Your Smart Content Assistant – One Click, Full Content
    6 Version: 6.0.0
     6Version: 7.0.0
    77Author: Hassan Solgi
    88Author URI: https://t.me/hassansolgi
     
    1414Requires PHP: 7.4
    1515Tested up to: 6.8
    16 */ 
     16*/
    1717
    1818if (!defined('ABSPATH')) {
  • aicontify/trunk/css/style.css

    r3402261 r3428884  
    11/* Posts */
    22#aicont_custom_tabs,
     3#aicont_custom_tabs_pages,
    34#aicont_custom_tabs_product {
    45  margin-bottom: 20px;
     
    67
    78#aicont_custom_tabs .nav-tab-wrapper,
     9#aicont_custom_tabs_pages .nav-tab-wrapper,
    810#aicont_custom_tabs_product .nav-tab-wrapper {
    911  border-bottom: 1px solid #c3c4c7;
     
    1315
    1416#aicont_custom_tabs .nav-tab,
     17#aicont_custom_tabs_pages .nav-tab,
    1518#aicont_custom_tabs_product .nav-tab {
    1619  margin: 0 5px -1px 0;
     
    2831
    2932#aicont_custom_tabs .nav-tab:hover,
     33#aicont_custom_tabs_pages .nav-tab:hover,
    3034#aicont_custom_tabs_product .nav-tab:hover {
    3135  background: #ffffff;
     
    3438
    3539#aicont_custom_tabs .nav-tab.nav-tab-active,
     40#aicont_custom_tabs_pages .nav-tab.nav-tab-active,
    3641#aicont_custom_tabs_product .nav-tab.nav-tab-active {
    3742  background: #ffffff;
     
    4247
    4348#aicont_custom_tabs .tab-content,
     49#aicont_custom_tabs_pages .tab-content,
    4450#aicont_custom_tabs_product .tab-content {
    4551  padding: 15px;
     
    5157
    5258#aicont_custom_tabs .tab-content.active,
     59#aicont_custom_tabs_pages .tab-content.active,
    5360#aicont_custom_tabs_product .tab-content.active {
    5461  display: block !important;
     
    5764/* BTN*/
    5865#aicont_custom_tabs .button-primary,
     66#aicont_custom_tabs_pages .button-primary,
    5967#aicont_custom_tabs_product .button-primary {
    6068  background: #2271b1 !important;
     
    6876
    6977#aicont_custom_tabs .button-primary:hover,
     78#aicont_custom_tabs_pages .button-primary:hover,
    7079#aicont_custom_tabs_product .button-primary:hover {
    7180  background: #135e96 !important;
     
    109118}
    110119
     120#aicont-title-suggestion-result .success,
     121#aicont-title-suggestion-pages-result .success,
     122#aicont-product-title-suggestion-result .success,
    111123#aicont-faq-result .success,
     124#aicont-faq-pages-result .success,
    112125#aicont-contentPosts-result .success,
     126#aicont-contentPages-pages-result .success,
    113127#aicont-editContent-result .success,
     128#aicont-editContent-pages-result .success,
    114129#aicont-seo-title-result .success,
     130#aicont-seo-title-pages-result .success,
    115131#aicont-meta-description-result .success,
     132#aicont-meta-description-pages-result .success,
    116133#aicont-content-products-result .success,
    117134#aicont-content-products-edit-result .success,
     
    131148}
    132149
     150#aicont-title-suggestion-result .error,
     151#aicont-title-suggestion-pages-result .error,
     152#aicont-product-title-suggestion-result .error,
    133153#aicont-faq-result .error,
     154#aicont-faq-pages-result .error,
    134155#aicont-contentPosts-result .error,
     156#aicont-contentPages-pages-result .error,
    135157#aicont-editContent-result .error,
     158#aicont-editContent-pages-result .error,
    136159#aicont-seo-title-result .error,
     160#aicont-seo-title-pages-result .error,
    137161#aicont-meta-description-result .error,
     162#aicont-meta-description-pages-result .error,
    138163#aicont-content-products-result .error,
    139164#aicont-content-products-edit-result .error,
     
    906931  margin: 16px 0 0;
    907932}
     933
     934/* ============================================================================
     935   AiContify - Title Suggestion Items Styles
     936   ============================================================================ */
     937
     938.aicont-title-item {
     939  padding: 12px;
     940  margin-bottom: 8px;
     941  background-color: #f5f5f5;
     942  border-left: 4px solid #0073aa;
     943  border-radius: 3px;
     944  cursor: pointer;
     945  transition: background-color 0.2s ease;
     946}
     947
     948.aicont-title-item:active {
     949  background-color: #d4ebf5;
     950}
     951#aicont-title-suggestion-result {
     952  margin-top: 15px;
     953}
     954
     955.aicont-title-item {
     956  position: relative;
     957  padding: 10px 12px;
     958  margin-bottom: 8px;
     959  background: #f7f7f7;
     960  border-radius: 6px;
     961  cursor: pointer;
     962  transition: background 0.2s ease;
     963}
     964
     965.aicont-title-item:hover {
     966  background: #ececec;
     967}
     968
     969.aicont-copy-msg {
     970  position: absolute;
     971  top: -28px;
     972  right: 10px;
     973  background: #28a745;
     974  color: #fff;
     975  font-size: 12px;
     976  padding: 4px 8px;
     977  border-radius: 4px;
     978  opacity: 0;
     979  transform: translateY(5px);
     980  pointer-events: none;
     981  transition: all 0.3s ease;
     982  white-space: nowrap;
     983}
     984
     985.aicont-copy-msg.show {
     986  opacity: 1;
     987  transform: translateY(0);
     988}
     989
     990/* ============================================================================
     991   AiContify - Product Title Suggestion Items Styles
     992   ============================================================================ */
     993
     994.aicont-product-title-item {
     995  padding: 12px;
     996  margin-bottom: 8px;
     997  background-color: #f5f5f5;
     998  border-left: 4px solid #0073aa;
     999  border-radius: 3px;
     1000  cursor: pointer;
     1001  transition: background-color 0.2s ease;
     1002}
     1003
     1004.aicont-product-title-item:active {
     1005  background-color: #d4ebf5;
     1006}
     1007
     1008#aicont-product-title-suggestion-result {
     1009  margin-top: 15px;
     1010}
     1011
     1012.aicont-product-title-item {
     1013  position: relative;
     1014  padding: 10px 12px;
     1015  margin-bottom: 8px;
     1016  background: #f7f7f7;
     1017  border-radius: 6px;
     1018  cursor: pointer;
     1019  transition: background 0.2s ease;
     1020}
     1021
     1022.aicont-product-title-item:hover {
     1023  background: #ececec;
     1024}
     1025
     1026.aicont-product-copy-msg {
     1027  position: absolute;
     1028  top: -28px;
     1029  right: 10px;
     1030  background: #28a745;
     1031  color: #fff;
     1032  font-size: 12px;
     1033  padding: 4px 8px;
     1034  border-radius: 4px;
     1035  opacity: 0;
     1036  transform: translateY(5px);
     1037  pointer-events: none;
     1038  transition: all 0.3s ease;
     1039  white-space: nowrap;
     1040}
     1041
     1042.aicont-product-copy-msg.show {
     1043  opacity: 1;
     1044  transform: translateY(0);
     1045}
  • aicontify/trunk/js/tabsPosts.js

    r3402261 r3428884  
    99  );
    1010
    11   let activeTab = tabInput?.value?.trim() || "main-content";
    12   const validTabs = ["main-content", "faq", "seo-title", "seo-description"];
     11  let activeTab = tabInput?.value?.trim() || "title-suggestion";
     12  const validTabs = [
     13    "title-suggestion",
     14    "main-content",
     15    "faq",
     16    "seo-title",
     17    "seo-description",
     18  ];
    1319  if (!validTabs.includes(activeTab)) {
    14     activeTab = "main-content";
     20    activeTab = "title-suggestion";
    1521  }
    1622
     
    5965  const keywordInput = document.getElementById("aicont_keyword");
    6066  const { __ } = wp.i18n;
     67
     68  /**
     69   * AiContify - Title Suggestion Generator
     70   */
     71  const generateTitleSuggestionBtn = document.getElementById(
     72    "aicont-generate-title-suggestion-btn"
     73  );
     74  const titleSuggestionResultBox = document.getElementById(
     75    "aicont-title-suggestion-result"
     76  );
     77  const titleSuggestionLoadingBox = document.getElementById(
     78    "aicont-title-suggestion-loading-box"
     79  );
     80
     81  if (
     82    !generateTitleSuggestionBtn ||
     83    !titleSuggestionResultBox ||
     84    !titleSuggestionLoadingBox ||
     85    !keywordInput
     86  ) {
     87    console.warn(
     88      "AiContify: Required elements for title suggestions not found."
     89    );
     90    return;
     91  }
     92
     93  // Reorder: Move loading box after result box in DOM
     94  if (titleSuggestionResultBox.parentNode) {
     95    const parent = titleSuggestionResultBox.parentNode;
     96    titleSuggestionResultBox.parentNode.insertBefore(
     97      titleSuggestionLoadingBox,
     98      titleSuggestionResultBox.nextSibling
     99    );
     100  }
     101
     102  function toggleGenerateTitleSuggestionButton() {
     103    const hasKeyword = keywordInput.value.trim().length > 0;
     104    generateTitleSuggestionBtn.disabled = !hasKeyword;
     105    generateTitleSuggestionBtn.style.opacity = hasKeyword ? "1" : "0.5";
     106    generateTitleSuggestionBtn.style.cursor = hasKeyword
     107      ? "pointer"
     108      : "not-allowed";
     109  }
     110
     111  keywordInput.addEventListener("input", toggleGenerateTitleSuggestionButton);
     112  keywordInput.addEventListener("paste", () =>
     113    setTimeout(toggleGenerateTitleSuggestionButton, 100)
     114  );
     115  toggleGenerateTitleSuggestionButton();
     116
     117  function getTitleSuggestionMessage(key) {
     118    const messages = {
     119      generating: __(
     120        "Generating suggested titles, please wait...",
     121        "aicontify"
     122      ),
     123      success_generated: __(
     124        "Suggested titles generated successfully!",
     125        "aicontify"
     126      ),
     127      err_keyword_empty: __(
     128        "Please enter a keyword before generating titles.",
     129        "aicontify"
     130      ),
     131      err_connection_failed: __(
     132        "Connection failed. Please check your internet connection.",
     133        "aicontify"
     134      ),
     135      err_server_error: __("An unexpected server error occurred.", "aicontify"),
     136      err_titles_empty: __("Generated titles are empty.", "aicontify"),
     137      err_daily_limit_exceeded: __(
     138        "Daily AI generation limit reached. Try again tomorrow or upgrade.",
     139        "aicontify"
     140      ),
     141    };
     142
     143    return messages[key] || key;
     144  }
     145
     146  generateTitleSuggestionBtn.addEventListener("click", async function (e) {
     147    e.preventDefault();
     148
     149    const postId = generateTitleSuggestionBtn.getAttribute("data-postid");
     150    const keyword = keywordInput.value.trim();
     151
     152    titleSuggestionResultBox.innerHTML = "";
     153    titleSuggestionLoadingBox.style.display = "block";
     154    titleSuggestionResultBox.innerHTML = `<span style='color: #0073aa;'>${getTitleSuggestionMessage(
     155      "generating"
     156    )}</span>`;
     157
     158    if (!keyword) {
     159      titleSuggestionResultBox.innerHTML = `<span class='error'>${getTitleSuggestionMessage(
     160        "err_keyword_empty"
     161      )}</span>`;
     162      titleSuggestionLoadingBox.style.display = "none";
     163      return;
     164    }
     165
     166    try {
     167      const formData = new URLSearchParams();
     168      formData.append("action", "aicont_generate_title_suggestion");
     169      formData.append("nonce", aicontify_ajax.nonce);
     170      formData.append("post_id", postId);
     171      formData.append("keyword", keyword);
     172
     173      const response = await fetch(aicontify_ajax.ajax_url, {
     174        method: "POST",
     175        credentials: "same-origin",
     176        headers: {
     177          "Content-Type": "application/x-www-form-urlencoded",
     178        },
     179        body: formData,
     180      });
     181
     182      const data = await response.json();
     183
     184      if (!response.ok || !data.success) {
     185        const code = data.data?.code || "err_server_error";
     186        throw new Error(code);
     187      }
     188
     189      titleSuggestionLoadingBox.style.display = "none";
     190
     191      titleSuggestionResultBox.innerHTML = `<span style='color: green;'>${getTitleSuggestionMessage(
     192        "success_generated"
     193      )}</span>`;
     194
     195      const titles = data.data.titles || [];
     196
     197      if (Array.isArray(titles) && titles.length > 0) {
     198        let titlesHtml = `
     199        <div class="aicont-titles-list" style="margin-top: 15px;">
     200          <p style="font-weight: bold; margin-bottom: 10px;">Suggested Titles:</p>
     201      `;
     202
     203        titles.forEach((title, index) => {
     204          titlesHtml += `
     205          <div class="aicont-title-item">
     206            <span style="color: #333;">${title}</span>
     207          </div>
     208        `;
     209        });
     210
     211        titlesHtml += `</div>`;
     212        titleSuggestionResultBox.innerHTML += titlesHtml;
     213      }
     214    } catch (error) {
     215      console.error("AiContify Title Suggestion Error:", error);
     216
     217      const errorCode = error.message;
     218      const errorMessages = {
     219        err_keyword_empty: "err_keyword_empty",
     220        err_connection_failed: "err_connection_failed",
     221        err_server_error: "err_server_error",
     222        err_titles_empty: "err_titles_empty",
     223        err_daily_limit_exceeded: "err_daily_limit_exceeded",
     224      };
     225
     226      const msgKey = errorMessages[errorCode] || "err_server_error";
     227      titleSuggestionResultBox.innerHTML = `<span class='error'>${getTitleSuggestionMessage(
     228        msgKey
     229      )}</span>`;
     230      titleSuggestionLoadingBox.style.display = "none";
     231    }
     232  });
    61233
    62234  /**
     
    765937  }
    766938});
     939
     940// copy to clipboard for title suggestions
     941document.addEventListener("DOMContentLoaded", function () {
     942  const container = document.getElementById("aicont-title-suggestion-result");
     943  if (!container) return;
     944
     945  container.addEventListener("click", function (e) {
     946    const item = e.target.closest(".aicont-title-item");
     947    if (!item) return;
     948
     949    const text = item.querySelector("span")?.innerText;
     950    if (!text) return;
     951
     952    navigator.clipboard.writeText(text).then(() => {
     953      showCopyMessage(item, "✅ Copy to clipboard");
     954    });
     955  });
     956
     957  function showCopyMessage(target, message) {
     958    let msg = target.querySelector(".aicont-copy-msg");
     959
     960    if (!msg) {
     961      msg = document.createElement("div");
     962      msg.className = "aicont-copy-msg";
     963      target.appendChild(msg);
     964    }
     965
     966    msg.innerText = message;
     967    msg.classList.add("show");
     968
     969    setTimeout(() => {
     970      msg.classList.remove("show");
     971    }, 1500);
     972  }
     973});
  • aicontify/trunk/languages/aicontify-fa_IR.po

    r3402369 r3428884  
    33"Plural-Forms: nplurals=2; plural=(n==0 || n==1);\n"
    44"Project-Id-Version: AiContify\n"
    5 "POT-Creation-Date: 2025-11-25 13:13+0330\n"
    6 "PO-Revision-Date: 2025-11-25 13:19+0330\n"
     5"POT-Creation-Date: 2025-12-29 11:22+0330\n"
     6"PO-Revision-Date: 2025-12-29 11:26+0330\n"
    77"Language-Team: \n"
    88"MIME-Version: 1.0\n"
     
    2121
    2222#. Plugin Name of the plugin/theme
    23 #: aicontify.php:131 aicontify.php:132 dashboard.php:7 tabsPosts.php:11
     23#: aicontify.php:129 aicontify.php:130 dashboard.php:7 tabsPosts.php:11
    2424msgid "AiContify"
    2525msgstr "کانتی فای"
    2626
    27 #: aicontify.php:142 aicontify.php:143
     27#: aicontify.php:140 aicontify.php:141
    2828msgid "Settings"
    2929msgstr "تنظیمات"
    3030
    31 #: aicontify.php:151 aicontify.php:152
     31#: aicontify.php:149 aicontify.php:150
    3232msgid "Premium"
    3333msgstr "پریمیوم"
    3434
    35 #: aicontify.php:167
     35#: aicontify.php:165
    3636msgid "Supercharge Your Content with AiContify Premium"
    3737msgstr "محتوای خود را با کانتی فای پریمیوم قدرتمند کنید"
    3838
    39 #: aicontify.php:169
     39#: aicontify.php:167
    4040msgid "Unlock advanced AI models, faster content creation, and exclusive tools designed to elevate your WooCommerce content."
    4141msgstr "به مدل‌های پیشرفته هوش مصنوعی، تولید محتوای سریع‌تر و ابزارهای اختصاصی برای ارتقای محتوای ووکامرس خود دسترسی پیدا کنید."
    4242
    43 #: aicontify.php:173 aicontify.php:212
     43#: aicontify.php:171 aicontify.php:210
    4444msgid "Ready to Boost Your Content?"
    4545msgstr "برای تقویت محتوای خود آماده‌اید؟"
    4646
    47 #: aicontify.php:174 aicontify.php:213
     47#: aicontify.php:172 aicontify.php:211
    4848msgid "Join thousands of creators and businesses using AiContify Premium to supercharge their WooCommerce content."
    4949msgstr "به هزاران تولیدکننده محتوا و کسب‌وکار بپیوندید که از کانتی فای پریمیوم برای تقویت محتوای ووکامرس خود استفاده می‌کنند."
    5050
    51 #: aicontify.php:176 aicontify.php:215
     51#: aicontify.php:174 aicontify.php:213
    5252msgid "Upgrade to Premium"
    5353msgstr "ارتقا به پریمیوم"
    5454
    55 #: aicontify.php:180
     55#: aicontify.php:178
    5656msgid "Why Go Premium?"
    5757msgstr "چرا پریمیوم؟"
    5858
    59 #: aicontify.php:184
     59#: aicontify.php:182
    6060msgid "Advanced AI Models"
    6161msgstr "مدل‌های پیشرفته هوش مصنوعی"
    6262
    63 #: aicontify.php:185
     63#: aicontify.php:183
    6464msgid "Access premium AI models for smarter, higher-quality content generation."
    6565msgstr "به مدل‌های پریمیوم هوش مصنوعی برای تولید محتوای هوشمندتر و باکیفیت‌تر دسترسی داشته باشید."
    6666
    67 #: aicontify.php:189
     67#: aicontify.php:187
    6868msgid "Faster Generation"
    6969msgstr "تولید سریع‌تر"
    7070
    71 #: aicontify.php:190
     71#: aicontify.php:188
    7272msgid "Generate content up to 3x faster than the free version."
    7373msgstr "محتوا را تا ۳ برابر سریع‌تر از نسخه رایگان تولید کنید."
    7474
    75 #: aicontify.php:194
     75#: aicontify.php:192
    7676msgid "WooCommerce Product Content"
    7777msgstr "محتوای محصول ووکامرس"
    7878
    79 #: aicontify.php:196
     79#: aicontify.php:194
    8080msgid "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."
    8181msgstr "با داشتن لایسنس معتبر پریمیوم می‌توانید محتوای کامل برای محصولات ووکامرس شامل توضیحات کوتاه و بلند تولید کنید. کاملاً بهینه‌شده برای سئو و آماده انتشار."
    8282
    83 #: aicontify.php:201
     83#: aicontify.php:199
    8484msgid "Pro Version Features"
    8585msgstr "ویژگی‌های نسخه حرفه‌ای"
    8686
    87 #: aicontify.php:203
     87#: aicontify.php:201
    8888msgid "Includes all features from the free version."
    8989msgstr "شامل تمام ویژگی‌های نسخه رایگان."
    9090
    91 #: aicontify.php:204
     91#: aicontify.php:202
    9292msgid "Full support for Pages and WooCommerce products."
    9393msgstr "پشتیبانی کامل از صفحات و محصولات ووکامرس."
    9494
    95 #: aicontify.php:205
     95#: aicontify.php:203
    9696msgid "Faster processing and higher accuracy using advanced AI."
    9797msgstr "پردازش سریع‌تر و دقت بالاتر با استفاده از هوش مصنوعی پیشرفته."
    9898
    99 #: aicontify.php:206 dashboard.php:42
     99#: aicontify.php:204 dashboard.php:42
    100100msgid "Separate custom prompt configuration for each section: main article, FAQ, SEO title, meta description, WooCommerce product description."
    101101msgstr "پیکربندی پرامپت سفارشی جداگانه برای هر بخش: مقاله اصلی، پرسش و پاسخ، عنوان سئو، توضیح متا، توضیحات محصول ووکامرس."
    102102
    103 #: aicontify.php:207 dashboard.php:43
     103#: aicontify.php:205 dashboard.php:43
    104104msgid "Easy activation through a premium license."
    105105msgstr "فعال‌سازی آسان از طریق لایسنس پریمیوم."
    106106
    107 #: aicontify.php:208
     107#: aicontify.php:206
    108108msgid "Designed for professional users who need precise, customizable AI-generated content for websites and online stores."
    109109msgstr "طراحی‌شده برای کاربران حرفه‌ای که به محتوای تولیدشده توسط هوش مصنوعی دقیق و قابل سفارشی‌سازی برای وب‌سایت‌ها و فروشگاه‌های آنلاین نیاز دارند."
    110110
    111 #: aicontify.php:220
     111#: aicontify.php:218
    112112msgid "Need Help?"
    113113msgstr "کمک می‌خواهید؟"
    114114
    115 #: aicontify.php:221
     115#: aicontify.php:219
    116116msgid "Our support team is available for setup, guidance, and technical questions."
    117117msgstr "تیم پشتیبانی ما برای راه‌اندازی، راهنمایی و سوالات فنی در دسترس است."
    118118
    119 #: aicontify.php:223
     119#: aicontify.php:221
    120120msgid "Telegram:"
    121121msgstr "تلگرام:"
    122122
    123 #: aicontify.php:225
     123#: aicontify.php:223
    124124msgid "Email:"
    125125msgstr "ایمیل:"
     
    134134
    135135#: dashboard.php:20
    136 msgid "Free Version Features"
    137 msgstr "ویژگی‌های نسخه رایگان"
     136msgid "🆓 Free Version Features"
     137msgstr "🆓 ویژگی‌های نسخه رایگان"
    138138
    139139#: dashboard.php:22
     
    166166
    167167#: dashboard.php:34
    168 msgid "Pro Version, More Power!"
    169 msgstr "نسخه حرفه‌ای، قدرت بیشتر!"
     168msgid "🚀 Pro Version, More Power!"
     169msgstr "🚀 نسخه حرفه‌ای، قدرت بیشتر!"
    170170
    171171#: dashboard.php:36
     
    245245msgstr "شما دسترسی لازم برای مشاهده این صفحه را ندارید."
    246246
    247 #: settings.php:82
     247#: settings.php:96
    248248msgid "AiContify Settings"
    249249msgstr "تنظیمات کانتی فای"
    250250
    251 #: settings.php:264
     251#: settings.php:285
    252252msgid "Main Settings"
    253253msgstr "تنظیمات اصلی"
    254254
    255 #: settings.php:267
     255#: settings.php:288
    256256msgid "Content Prompt"
    257257msgstr "پرامپت محتوا"
    258258
    259 #: settings.php:270 settings/tab-faq.php:14
     259#: settings.php:291 settings/tab-faq.php:14
    260260msgid "FAQ Prompt"
    261261msgstr "پرامپت پرسش و پاسخ"
    262262
    263 #: settings.php:273
     263#: settings.php:294
    264264msgid "SEO Title Prompt"
    265265msgstr "پرامپت عنوان سئو"
    266266
    267 #: settings.php:276
     267#: settings.php:297
    268268msgid "SEO Meta Prompt"
    269269msgstr "پرامپت توضیح متا"
    270270
    271 #: settings.php:301
     271#: settings.php:322
    272272msgid "Save Settings"
    273273msgstr "ذخیره تنظیمات"
    274274
    275 #: settings.php:319
     275#: settings.php:340
    276276msgid "This field must include {keyword} if not empty."
    277277msgstr "اگر این فیلد خالی نیست، باید شامل {keyword} باشد."
    278278
    279 #: settings.php:333
     279#: settings.php:354
    280280msgid "Brand title cannot be empty."
    281281msgstr "عنوان برند نمی‌تواند خالی باشد."
    282282
    283 #: settings.php:358
     283#: settings.php:383
    284284msgid "Max 300 characters."
    285285msgstr "حداکثر ۳۰۰ کاراکتر."
     
    313313msgstr "تنظیمات نوشته"
    314314
    315 #: 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
     315#: settings/tab-content.php:42 settings/tab-content.php:72 settings/tab-content.php:99 settings/tab-content.php:126 settings/tab-faq.php:42 settings/tab-faq.php:126 settings/tab-faq.php:205 settings/tab-seo-meta.php:42
     316#: settings/tab-seo-meta.php:73 settings/tab-seo-meta.php:102 settings/tab-seo-title.php:42 settings/tab-seo-title.php:71 settings/tab-seo-title.php:98
    316317msgid "Custom Prompt (Optional)"
    317318msgstr "پرامپت سفارشی (اختیاری)"
    318319
    319 #: 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
     320#: settings/tab-content.php:53 settings/tab-content.php:83 settings/tab-content.php:110 settings/tab-content.php:137 settings/tab-faq.php:53 settings/tab-faq.php:137 settings/tab-faq.php:216 settings/tab-seo-meta.php:53
     321#: settings/tab-seo-meta.php:84 settings/tab-seo-meta.php:113 settings/tab-seo-title.php:53 settings/tab-seo-title.php:82 settings/tab-seo-title.php:109
    320322msgid "Leave empty to use default."
    321323msgstr "برای استفاده از پیش‌فرض خالی بگذارید."
    322324
    323325#. translators: %s: {keyword} placeholder
    324 #: 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
     326#: settings/tab-content.php:56 settings/tab-content.php:86 settings/tab-content.php:113 settings/tab-faq.php:56 settings/tab-faq.php:140 settings/tab-faq.php:219 settings/tab-seo-meta.php:57 settings/tab-seo-meta.php:88
     327#: settings/tab-seo-meta.php:117 settings/tab-seo-title.php:56 settings/tab-seo-title.php:85 settings/tab-seo-title.php:112
    325328#, php-format
    326329msgid "If filled, must include %s."
    327330msgstr "اگر پر شده باشد، باید شامل %s باشد."
    328331
    329 #: settings/tab-content.php:66 settings/tab-faq.php:120 settings/tab-seo-meta.php:67 settings/tab-seo-title.php:65
     332#: settings/tab-content.php:67 settings/tab-faq.php:121 settings/tab-seo-meta.php:68 settings/tab-seo-title.php:66
     333msgid "Page Settings"
     334msgstr "تنظیمات صفحه"
     335
     336#: settings/tab-content.php:94 settings/tab-faq.php:200 settings/tab-seo-meta.php:97 settings/tab-seo-title.php:93
    330337msgid "Product Settings"
    331338msgstr "تنظیمات محصول"
    332339
    333 #: settings/tab-content.php:93
    334 msgid "Short Description"
    335 msgstr "توضیح کوتاه"
     340#: settings/tab-content.php:121
     341msgid "Short Description product"
     342msgstr "توضیح کوتاه محصول"
    336343
    337344#. translators: %s: {keyword} placeholder
    338 #: settings/tab-content.php:112
     345#: settings/tab-content.php:140
    339346#, php-format
    340347msgid "If filled, must include %s. Max 300 chars."
     
    365372msgstr "آی‌دی فیلد ACF برای پاسخ."
    366373
    367 #: settings/tab-faq.php:149
    368 msgid "Product Article ID"
    369 msgstr "آی‌دی مقاله محصول"
    370 
    371 #: settings/tab-faq.php:160
     374#: settings/tab-faq.php:150
     375msgid "Page ID"
     376msgstr "آی‌دی صفحه"
     377
     378#: settings/tab-faq.php:161
     379msgid "ACF repeater field ID for page."
     380msgstr "آی‌دی فیلد تکرارشونده ACF برای صفحه."
     381
     382#: settings/tab-faq.php:167
     383msgid "Page Question ID"
     384msgstr "آی‌دی سوال صفحه"
     385
     386#: settings/tab-faq.php:178
     387msgid "ACF field ID for page question."
     388msgstr "آی‌دی فیلد ACF برای سوال صفحه."
     389
     390#: settings/tab-faq.php:184
     391msgid "Page Answer ID"
     392msgstr "آی‌دی پاسخ صفحه"
     393
     394#: settings/tab-faq.php:195
     395msgid "ACF field ID for page answer."
     396msgstr "آی‌دی فیلد ACF برای پاسخ صفحه."
     397
     398#: settings/tab-faq.php:229
     399msgid "Product ID"
     400msgstr "آی‌دی محصول"
     401
     402#: settings/tab-faq.php:240
    372403msgid "ACF field ID for product."
    373404msgstr "آی‌دی فیلد ACF برای محصول."
    374405
    375 #: settings/tab-faq.php:166
     406#: settings/tab-faq.php:246
    376407msgid "Product Question ID"
    377408msgstr "آی‌دی سوال محصول"
    378409
    379 #: settings/tab-faq.php:177
     410#: settings/tab-faq.php:257
    380411msgid "ACF field ID for product question."
    381412msgstr "آی‌دی فیلد ACF برای سوال محصول."
    382413
    383 #: settings/tab-faq.php:183
     414#: settings/tab-faq.php:263
    384415msgid "Product Answer ID"
    385416msgstr "آی‌دی پاسخ محصول"
    386417
    387 #: settings/tab-faq.php:194
     418#: settings/tab-faq.php:274
    388419msgid "ACF field ID for product answer."
    389420msgstr "آی‌دی فیلد ACF برای پاسخ محصول."
     
    490521
    491522#: tabsPosts.php:51
     523msgid "Title Suggestion Generation"
     524msgstr "تولید پیشنهاد عنوان"
     525
     526#: tabsPosts.php:54
    492527msgid "Main Content Generation"
    493528msgstr "تولید محتوای اصلی"
    494529
    495 #: tabsPosts.php:54 tabsPosts.php:170
     530#: tabsPosts.php:57 tabsPosts.php:214
    496531msgid "Edit Main Content"
    497532msgstr "ویرایش محتوای اصلی"
    498533
    499 #: tabsPosts.php:57
     534#: tabsPosts.php:60
    500535msgid "FAQ Generation"
    501536msgstr "تولید پرسش و پاسخ"
    502537
    503 #: tabsPosts.php:60
     538#: tabsPosts.php:63
    504539msgid "SEO Title Generation"
    505540msgstr "تولید عنوان سئو"
    506541
    507 #: tabsPosts.php:63
     542#: tabsPosts.php:66
    508543msgid "SEO Description Generation"
    509544msgstr "تولید توضیح متا"
    510545
    511 #: tabsPosts.php:71
     546#: tabsPosts.php:74
     547msgid "How to Generate Title Suggestions with One Click"
     548msgstr "چگونه پیشنهادهای عنوان را با یک کلیک تولید کنیم"
     549
     550#: tabsPosts.php:78 tabsPosts.php:269 tabsPosts.php:365 tabsPosts.php:505
     551msgid "Enter the post title at the top of the page."
     552msgstr "عنوان نوشته را در بالای صفحه وارد کنید."
     553
     554#: tabsPosts.php:81
     555msgid "Fill in the \"Keyword / Topic\" field with your main keyword or topic."
     556msgstr "فیلد «کلمه کلیدی / موضوع» را با کلمه کلیدی اصلی یا موضوع خود پر کنید."
     557
     558#: tabsPosts.php:84 tabsPosts.php:275
     559msgid "Click \"Save Draft\" to save your changes."
     560msgstr "روی «ذخیره پیش‌نویس» کلیک کنید تا تغییرات ذخیره شود."
     561
     562#: tabsPosts.php:87
     563msgid "Finally, click the blue button \"Generate Title Suggestions\"."
     564msgstr "در نهایت روی دکمه آبی «تولید پیشنهاد عنوان» کلیک کنید."
     565
     566#: tabsPosts.php:92
     567msgid "You will receive several title suggestions - choose the best one and update your post title!"
     568msgstr "چند پیشنهاد عنوان دریافت خواهید کرد - بهترین را انتخاب کنید و عنوان نوشته خود را به‌روزرسانی کنید!"
     569
     570#: tabsPosts.php:97
     571msgid "Generate Title Suggestions"
     572msgstr "تولید پیشنهاد عنوان"
     573
     574#: tabsPosts.php:102 tabsPosts.php:146 tabsPosts.php:219 tabsPosts.php:292 tabsPosts.php:405 tabsPosts.php:544
     575msgid "Please do not refresh the page until the operation is complete."
     576msgstr "لطفاً تا پایان عملیات صفحه را رفرش نکنید."
     577
     578#: tabsPosts.php:115
    512579msgid "How to Generate Main Post Content with One Click?"
    513580msgstr "چگونه محتوای اصلی نوشته را با یک کلیک تولید کنیم؟"
    514581
    515 #: tabsPosts.php:76
     582#: tabsPosts.php:120
    516583msgid "First, enter the post title at the top of the page."
    517584msgstr "ابتدا عنوان نوشته را در بالای صفحه وارد کنید."
    518585
    519 #: tabsPosts.php:80
     586#: tabsPosts.php:124
    520587msgid "Fill in the \"Keyword / Topic\" field with your main keywords or post topic (e.g., Samsung Galaxy A54, sunscreen cream, etc.)."
    521588msgstr "فیلد «کلمه کلیدی / موضوع» را با کلمه کلیدی اصلی یا موضوع نوشته پر کنید (مثلاً: سامسونگ گلکسی A54، کرم ضدآفتاب و غیره)."
    522589
    523 #: tabsPosts.php:84
     590#: tabsPosts.php:128
    524591msgid "Click the \"Save Draft\" button to save your changes."
    525 msgstr "روی دکمه «ذخیره پیش‌نویس» کلیک کنید."
    526 
    527 #: tabsPosts.php:88
     592msgstr "روی دکمه «ذخیره پیش‌نویس» کلیک کنید تا تغییرات ذخیره شود."
     593
     594#: tabsPosts.php:132
    528595msgid "Finally, click the blue \"Generate Main Content\" button."
    529596msgstr "در نهایت روی دکمه آبی «تولید محتوای اصلی» کلیک کنید."
    530597
    531 #: tabsPosts.php:93 tabsPosts.php:239 tabsPosts.php:328 tabsPosts.php:431
     598#: tabsPosts.php:137 tabsPosts.php:283 tabsPosts.php:379 tabsPosts.php:518
    532599msgid "After completion, the full SEO-optimized content will automatically appear in the editor — you can edit it or publish directly!"
    533600msgstr "پس از اتمام، محتوای کامل بهینه‌شده برای سئو به‌صورت خودکار در ویرایشگر ظاهر می‌شود — می‌توانید آن را ویرایش یا مستقیماً منتشر کنید!"
    534601
    535 #: tabsPosts.php:97
     602#: tabsPosts.php:141
    536603msgid "Generate Main Content"
    537604msgstr "تولید محتوای اصلی"
    538605
    539 #: tabsPosts.php:102 tabsPosts.php:175 tabsPosts.php:248 tabsPosts.php:337 tabsPosts.php:440
    540 msgid "Please do not refresh the page until the operation is complete."
    541 msgstr "لطفاً تا پایان عملیات صفحه را رفرش نکنید."
    542 
    543 #: tabsPosts.php:111 tabsPosts.php:184 tabsPosts.php:257 tabsPosts.php:346 tabsPosts.php:449
     606#: tabsPosts.php:155 tabsPosts.php:228 tabsPosts.php:301 tabsPosts.php:414 tabsPosts.php:553
    544607msgid "Custom Prompt Settings"
    545608msgstr "تنظیمات پرامپت سفارشی"
    546609
    547 #: tabsPosts.php:117
     610#: tabsPosts.php:161
    548611msgid "Custom Prompt for Content Generation"
    549612msgstr "پرامپت سفارشی برای تولید محتوا"
    550613
    551 #: tabsPosts.php:130 tabsPosts.php:203 tabsPosts.php:276 tabsPosts.php:365 tabsPosts.php:468
     614#: tabsPosts.php:174 tabsPosts.php:247 tabsPosts.php:320 tabsPosts.php:433 tabsPosts.php:572
    552615msgid "You can leave this field empty → the plugin will use the smart default prompt and give you excellent results."
    553616msgstr "می‌توانید این فیلد را خالی بگذارید → افزونه از پرامپت هوشمند پیش‌فرض استفاده می‌کند و نتیجه عالی به شما می‌دهد."
    554617
    555 #: tabsPosts.php:133 tabsPosts.php:206 tabsPosts.php:279 tabsPosts.php:368 tabsPosts.php:471
     618#: tabsPosts.php:177 tabsPosts.php:250 tabsPosts.php:323 tabsPosts.php:436 tabsPosts.php:575
    556619msgid "Want even better and more customized results? Write your own instruction here."
    557620msgstr "می‌خواهید نتیجه بهتر و سفارشی‌تری بگیرید؟ دستورالعمل خود را اینجا بنویسید."
    558621
    559 #: tabsPosts.php:136 tabsPosts.php:209 tabsPosts.php:282 tabsPosts.php:371 tabsPosts.php:474
     622#: tabsPosts.php:180 tabsPosts.php:253 tabsPosts.php:326 tabsPosts.php:439 tabsPosts.php:578
    560623msgid "The clearer and more precise your prompt, the better and more accurate the result will be!"
    561624msgstr "هرچه پرامپت شما واضح‌تر و دقیق‌تر باشد، نتیجه بهتر و دقیق‌تری خواهید گرفت!"
    562625
    563 #: tabsPosts.php:148
     626#: tabsPosts.php:192
    564627msgid "How to Edit the Generated Main Content"
    565628msgstr "چگونه محتوای تولیدشده اصلی را ویرایش کنیم"
    566629
    567 #: tabsPosts.php:153
     630#: tabsPosts.php:197
    568631msgid "First make sure you have generated the content in the \"Generate Main Content\" tab."
    569632msgstr "ابتدا مطمئن شوید که محتوا را در تب «تولید محتوای اصلی» تولید کرده‌اید."
    570633
    571 #: tabsPosts.php:157
     634#: tabsPosts.php:201
    572635msgid "If you want to change anything (make it longer/shorter, add details, change tone, fix something, etc.), write your exact request in the box below."
    573636msgstr "اگر می‌خواهید چیزی را تغییر دهید (طولانی‌تر/کوتاه‌تر کنید، جزئیات اضافه کنید، لحن را تغییر دهید، چیزی را اصلاح کنید و غیره)، درخواست دقیق خود را در کادر زیر بنویسید."
    574637
    575 #: tabsPosts.php:161
     638#: tabsPosts.php:205
    576639msgid "Then click the \"Edit Main Content\" button."
    577640msgstr "سپس روی دکمه «ویرایش محتوای اصلی» کلیک کنید."
    578641
    579 #: tabsPosts.php:166
     642#: tabsPosts.php:210
    580643msgid "You can edit as many times as you like until the text is exactly the way you want!"
    581644msgstr "می‌توانید هر چند بار که خواستید ویرایش کنید تا متن دقیقاً همان چیزی شود که می‌خواهید!"
    582645
    583 #: tabsPosts.php:190
     646#: tabsPosts.php:234
    584647msgid "Custom Prompt for Edit Content"
    585648msgstr "پرامپت سفارشی برای ویرایش محتوا"
    586649
    587 #: tabsPosts.php:221
     650#: tabsPosts.php:265
    588651msgid "How to Generate FAQ (Frequently Asked Questions) with One Click"
    589652msgstr "چگونه پرسش و پاسخ (سوالات متداول) را با یک کلیک تولید کنیم"
    590653
    591 #: tabsPosts.php:225 tabsPosts.php:314 tabsPosts.php:418
    592 msgid "Enter the post title at the top of the page."
    593 msgstr "عنوان نوشته را در بالای صفحه وارد کنید."
    594 
    595 #: tabsPosts.php:228
     654#: tabsPosts.php:272
    596655msgid "Fill in the \"Keyword / Topic\" field with the post name or main keywords."
    597656msgstr "فیلد «کلمه کلیدی / موضوع» را با نام نوشته یا کلمه کلیدی اصلی پر کنید."
    598657
    599 #: tabsPosts.php:231
    600 msgid "Click \"Save Draft\" to save your changes."
    601 msgstr "روی «ذخیره پیش‌نویس» کلیک کنید."
    602 
    603 #: tabsPosts.php:234
     658#: tabsPosts.php:278
    604659msgid "Finally, click the blue button \"Generate FAQ\"."
    605660msgstr "در نهایت روی دکمه آبی «تولید پرسش و پاسخ» کلیک کنید."
    606661
    607 #: tabsPosts.php:243
     662#: tabsPosts.php:287
    608663msgid "Generate FAQs"
    609664msgstr "تولید پرسش و پاسخ"
    610665
    611 #: tabsPosts.php:263
     666#: tabsPosts.php:307
    612667msgid "Custom Prompt for FAQ Generation"
    613668msgstr "پرامپت سفارشی برای تولید پرسش و پاسخ"
    614669
    615 #: tabsPosts.php:310
     670#: tabsPosts.php:361
    616671msgid "How to Generate SEO Title & Meta Description with One Click"
    617672msgstr "چگونه عنوان سئو و توضیح متا را با یک کلیک تولید کنیم"
    618673
    619 #: tabsPosts.php:317
     674#: tabsPosts.php:368
    620675msgid "Fill in the \"Keyword / Topic\" field with your main focus keyword."
    621676msgstr "فیلد «کلمه کلیدی / موضوع» را با کلمه کلیدی اصلی خود پر کنید."
    622677
    623 #: tabsPosts.php:320 tabsPosts.php:424
     678#: tabsPosts.php:371 tabsPosts.php:511
    624679msgid "Click \"Save Draft\" to save the post."
    625 msgstr "روی «ذخیره پیش‌نویس» کلیک کنید."
    626 
    627 #: tabsPosts.php:323
     680msgstr "روی «ذخیره پیش‌نویس» کلیک کنید تا نوشته ذخیره شود."
     681
     682#: tabsPosts.php:374
    628683msgid "Click the blue button \"Generate SEO Title & Meta\"."
    629684msgstr "روی دکمه آبی «تولید عنوان سئو و توضیح متا» کلیک کنید."
    630685
    631 #: tabsPosts.php:332
     686#: tabsPosts.php:384 tabsPosts.php:523
     687msgid "Both plugins detected!"
     688msgstr "هر دو افزونه شناسایی شدند!"
     689
     690#: tabsPosts.php:385 tabsPosts.php:524
     691msgid "Priority: Yoast SEO will be used. If Yoast is disabled, Rank Math will be used."
     692msgstr "اولویت: از Yoast SEO استفاده خواهد شد. اگر Yoast غیرفعال باشد، از Rank Math استفاده می‌شود."
     693
     694#: tabsPosts.php:389 tabsPosts.php:528
     695msgid "Rank Math SEO detected!"
     696msgstr "افزونه Rank Math SEO شناسایی شد!"
     697
     698#: tabsPosts.php:390
     699msgid "Your SEO titles will be saved in Rank Math."
     700msgstr "عنوان‌های سئو شما در Rank Math ذخیره خواهند شد."
     701
     702#: tabsPosts.php:394 tabsPosts.php:533
     703msgid "Yoast SEO detected!"
     704msgstr "افزونه Yoast SEO شناسایی شد!"
     705
     706#: tabsPosts.php:395
     707msgid "Your SEO titles will be saved in Yoast."
     708msgstr "عنوان‌های سئو شما در Yoast ذخیره خواهند شد."
     709
     710#: tabsPosts.php:400
    632711msgid "Generate SEO Title"
    633712msgstr "تولید عنوان سئو"
    634713
    635 #: tabsPosts.php:352
     714#: tabsPosts.php:420
    636715msgid "Custom Prompt for SEO Title Generation"
    637716msgstr "پرامپت سفارشی برای تولید عنوان سئو"
    638717
    639 #: tabsPosts.php:383 tabsPosts.php:486
    640 msgid "Yoast SEO Plugin Required"
    641 msgstr "افزونه Yoast SEO لازم است"
    642 
    643 #: tabsPosts.php:386 tabsPosts.php:489
    644 msgid "This feature requires the Yoast SEO plugin to be installed and activated."
    645 msgstr "این ویژگی نیاز دارد افزونه Yoast SEO نصب و فعال باشد."
    646 
    647 #: tabsPosts.php:389 tabsPosts.php:492
    648 msgid "After activation, refresh the page."
    649 msgstr "پس از فعال‌سازی، صفحه را رفرش کنید."
    650 
    651 #: tabsPosts.php:414
     718#: tabsPosts.php:451 tabsPosts.php:590
     719msgid "Warning:"
     720msgstr "هشدار:"
     721
     722#: tabsPosts.php:451 tabsPosts.php:590
     723msgid "SEO Plugin Required"
     724msgstr "افزونه سئو لازم است"
     725
     726#: tabsPosts.php:454 tabsPosts.php:593
     727msgid "This feature requires either Yoast SEO or Rank Math to be installed and activated."
     728msgstr "این ویژگی نیاز دارد یکی از افزونه‌های Yoast SEO یا Rank Math نصب و فعال باشد."
     729
     730#: tabsPosts.php:457 tabsPosts.php:596
     731msgid "Supported SEO Plugins:"
     732msgstr "افزونه‌های سئو پشتیبانی‌شده:"
     733
     734#: tabsPosts.php:460 tabsPosts.php:463 tabsPosts.php:599 tabsPosts.php:602
     735msgid "Free & Premium versions supported"
     736msgstr "نسخه‌های رایگان و پریمیوم پشتیبانی می‌شوند"
     737
     738#: tabsPosts.php:469 tabsPosts.php:608
     739msgid "Install and activate one of the above plugins, then refresh this page."
     740msgstr "یکی از افزونه‌های بالا را نصب و فعال کنید، سپس این صفحه را رفرش کنید."
     741
     742#: tabsPosts.php:501
    652743msgid "How to Generate Meta Description with One Click"
    653744msgstr "چگونه توضیح متا را با یک کلیک تولید کنیم"
    654745
    655 #: tabsPosts.php:421
     746#: tabsPosts.php:508
    656747msgid "Fill in the \"Keyword / Topic\" field with your focus keyword."
    657748msgstr "فیلد «کلمه کلیدی / موضوع» را با کلمه کلیدی اصلی پر کنید."
    658749
    659 #: tabsPosts.php:427
     750#: tabsPosts.php:514
    660751msgid "Click the blue button \"Generate Meta Description\"."
    661752msgstr "روی دکمه آبی «تولید توضیح متا» کلیک کنید."
    662753
    663 #: tabsPosts.php:435
     754#: tabsPosts.php:529
     755msgid "Your meta descriptions will be saved in Rank Math."
     756msgstr "توضیحات متا شما در Rank Math ذخیره خواهند شد."
     757
     758#: tabsPosts.php:534
     759msgid "Your meta descriptions will be saved in Yoast."
     760msgstr "توضیحات متا شما در Yoast ذخیره خواهند شد."
     761
     762#: tabsPosts.php:539
    664763msgid "Generate Meta Description"
    665764msgstr "تولید توضیح متا"
    666765
    667 #: tabsPosts.php:455
     766#: tabsPosts.php:559
    668767msgid "Custom Prompt for Meta Description Generation"
    669768msgstr "پرامپت سفارشی برای تولید توضیح متا"
  • aicontify/trunk/languages/aicontify.pot

    r3402369 r3428884  
    44"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
    55"Project-Id-Version: AiContify\n"
    6 "POT-Creation-Date: 2025-11-25 13:13+0330\n"
    7 "PO-Revision-Date: 2025-11-25 13:12+0330\n"
     6"POT-Creation-Date: 2025-12-29 11:22+0330\n"
     7"PO-Revision-Date: 2025-12-29 11:13+0330\n"
    88"Last-Translator: \n"
    99"Language-Team: \n"
     
    2323
    2424#. Plugin Name of the plugin/theme
    25 #: aicontify.php:131 aicontify.php:132 dashboard.php:7 tabsPosts.php:11
     25#: aicontify.php:129 aicontify.php:130 dashboard.php:7 tabsPosts.php:11
    2626msgid "AiContify"
    2727msgstr ""
    2828
    29 #: aicontify.php:142 aicontify.php:143
     29#: aicontify.php:140 aicontify.php:141
    3030msgid "Settings"
    3131msgstr ""
    3232
    33 #: aicontify.php:151 aicontify.php:152
     33#: aicontify.php:149 aicontify.php:150
    3434msgid "Premium"
    3535msgstr ""
    3636
     37#: aicontify.php:165
     38msgid "Supercharge Your Content with AiContify Premium"
     39msgstr ""
     40
    3741#: aicontify.php:167
    38 msgid "Supercharge Your Content with AiContify Premium"
    39 msgstr ""
    40 
    41 #: aicontify.php:169
    4242msgid ""
    4343"Unlock advanced AI models, faster content creation, and exclusive tools "
     
    4545msgstr ""
    4646
    47 #: aicontify.php:173 aicontify.php:212
     47#: aicontify.php:171 aicontify.php:210
    4848msgid "Ready to Boost Your Content?"
    4949msgstr ""
    5050
    51 #: aicontify.php:174 aicontify.php:213
     51#: aicontify.php:172 aicontify.php:211
    5252msgid ""
    5353"Join thousands of creators and businesses using AiContify Premium to "
     
    5555msgstr ""
    5656
    57 #: aicontify.php:176 aicontify.php:215
     57#: aicontify.php:174 aicontify.php:213
    5858msgid "Upgrade to Premium"
    5959msgstr ""
    6060
    61 #: aicontify.php:180
     61#: aicontify.php:178
    6262msgid "Why Go Premium?"
    6363msgstr ""
    6464
    65 #: aicontify.php:184
     65#: aicontify.php:182
    6666msgid "Advanced AI Models"
    6767msgstr ""
    6868
    69 #: aicontify.php:185
     69#: aicontify.php:183
    7070msgid ""
    7171"Access premium AI models for smarter, higher-quality content generation."
    7272msgstr ""
    7373
    74 #: aicontify.php:189
     74#: aicontify.php:187
    7575msgid "Faster Generation"
    7676msgstr ""
    7777
    78 #: aicontify.php:190
     78#: aicontify.php:188
    7979msgid "Generate content up to 3x faster than the free version."
    8080msgstr ""
    8181
     82#: aicontify.php:192
     83msgid "WooCommerce Product Content"
     84msgstr ""
     85
    8286#: aicontify.php:194
    83 msgid "WooCommerce Product Content"
    84 msgstr ""
    85 
    86 #: aicontify.php:196
    8787msgid ""
    8888"With a valid premium license, you can generate complete content for "
     
    9191msgstr ""
    9292
     93#: aicontify.php:199
     94msgid "Pro Version Features"
     95msgstr ""
     96
    9397#: aicontify.php:201
    94 msgid "Pro Version Features"
     98msgid "Includes all features from the free version."
     99msgstr ""
     100
     101#: aicontify.php:202
     102msgid "Full support for Pages and WooCommerce products."
    95103msgstr ""
    96104
    97105#: aicontify.php:203
    98 msgid "Includes all features from the free version."
    99 msgstr ""
    100 
    101 #: aicontify.php:204
    102 msgid "Full support for Pages and WooCommerce products."
    103 msgstr ""
    104 
    105 #: aicontify.php:205
    106106msgid "Faster processing and higher accuracy using advanced AI."
    107107msgstr ""
    108108
    109 #: aicontify.php:206 dashboard.php:42
     109#: aicontify.php:204 dashboard.php:42
    110110msgid ""
    111111"Separate custom prompt configuration for each section: main article, FAQ, "
     
    113113msgstr ""
    114114
    115 #: aicontify.php:207 dashboard.php:43
     115#: aicontify.php:205 dashboard.php:43
    116116msgid "Easy activation through a premium license."
    117117msgstr ""
    118118
    119 #: aicontify.php:208
     119#: aicontify.php:206
    120120msgid ""
    121121"Designed for professional users who need precise, customizable AI-generated "
     
    123123msgstr ""
    124124
    125 #: aicontify.php:220
     125#: aicontify.php:218
    126126msgid "Need Help?"
    127127msgstr ""
    128128
     129#: aicontify.php:219
     130msgid ""
     131"Our support team is available for setup, guidance, and technical questions."
     132msgstr ""
     133
    129134#: aicontify.php:221
    130 msgid ""
    131 "Our support team is available for setup, guidance, and technical questions."
     135msgid "Telegram:"
    132136msgstr ""
    133137
    134138#: aicontify.php:223
    135 msgid "Telegram:"
    136 msgstr ""
    137 
    138 #: aicontify.php:225
    139139msgid "Email:"
    140140msgstr ""
     
    269269msgstr ""
    270270
    271 #: settings.php:82
     271#: settings.php:96
    272272msgid "AiContify Settings"
    273273msgstr ""
    274274
    275 #: settings.php:264
     275#: settings.php:285
    276276msgid "Main Settings"
    277277msgstr ""
    278278
    279 #: settings.php:267
     279#: settings.php:288
    280280msgid "Content Prompt"
    281281msgstr ""
    282282
    283 #: settings.php:270 settings/tab-faq.php:14
     283#: settings.php:291 settings/tab-faq.php:14
    284284msgid "FAQ Prompt"
    285285msgstr ""
    286286
    287 #: settings.php:273
     287#: settings.php:294
    288288msgid "SEO Title Prompt"
    289289msgstr ""
    290290
    291 #: settings.php:276
     291#: settings.php:297
    292292msgid "SEO Meta Prompt"
    293293msgstr ""
    294294
    295 #: settings.php:301
     295#: settings.php:322
    296296msgid "Save Settings"
    297297msgstr ""
    298298
    299 #: settings.php:319
     299#: settings.php:340
    300300msgid "This field must include {keyword} if not empty."
    301301msgstr ""
    302302
    303 #: settings.php:333
     303#: settings.php:354
    304304msgid "Brand title cannot be empty."
    305305msgstr ""
    306306
    307 #: settings.php:358
     307#: settings.php:383
    308308msgid "Max 300 characters."
    309309msgstr ""
     
    347347msgstr ""
    348348
    349 #: settings/tab-content.php:42 settings/tab-content.php:71
    350 #: settings/tab-content.php:98 settings/tab-faq.php:42 settings/tab-faq.php:125
    351 #: settings/tab-seo-meta.php:42 settings/tab-seo-meta.php:72
    352 #: settings/tab-seo-title.php:42 settings/tab-seo-title.php:70
     349#: settings/tab-content.php:42 settings/tab-content.php:72
     350#: settings/tab-content.php:99 settings/tab-content.php:126
     351#: settings/tab-faq.php:42 settings/tab-faq.php:126 settings/tab-faq.php:205
     352#: settings/tab-seo-meta.php:42 settings/tab-seo-meta.php:73
     353#: settings/tab-seo-meta.php:102 settings/tab-seo-title.php:42
     354#: settings/tab-seo-title.php:71 settings/tab-seo-title.php:98
    353355msgid "Custom Prompt (Optional)"
    354356msgstr ""
    355357
    356 #: settings/tab-content.php:53 settings/tab-content.php:82
    357 #: settings/tab-content.php:109 settings/tab-faq.php:53
    358 #: settings/tab-faq.php:136 settings/tab-seo-meta.php:53
    359 #: settings/tab-seo-meta.php:83 settings/tab-seo-title.php:53
    360 #: settings/tab-seo-title.php:81
     358#: settings/tab-content.php:53 settings/tab-content.php:83
     359#: settings/tab-content.php:110 settings/tab-content.php:137
     360#: settings/tab-faq.php:53 settings/tab-faq.php:137 settings/tab-faq.php:216
     361#: settings/tab-seo-meta.php:53 settings/tab-seo-meta.php:84
     362#: settings/tab-seo-meta.php:113 settings/tab-seo-title.php:53
     363#: settings/tab-seo-title.php:82 settings/tab-seo-title.php:109
    361364msgid "Leave empty to use default."
    362365msgstr ""
    363366
    364367#. translators: %s: {keyword} placeholder
    365 #: settings/tab-content.php:56 settings/tab-content.php:85
    366 #: settings/tab-faq.php:56 settings/tab-faq.php:139
    367 #: settings/tab-seo-meta.php:57 settings/tab-seo-meta.php:87
    368 #: settings/tab-seo-title.php:56 settings/tab-seo-title.php:84
     368#: settings/tab-content.php:56 settings/tab-content.php:86
     369#: settings/tab-content.php:113 settings/tab-faq.php:56
     370#: settings/tab-faq.php:140 settings/tab-faq.php:219
     371#: settings/tab-seo-meta.php:57 settings/tab-seo-meta.php:88
     372#: settings/tab-seo-meta.php:117 settings/tab-seo-title.php:56
     373#: settings/tab-seo-title.php:85 settings/tab-seo-title.php:112
    369374#, php-format
    370375msgid "If filled, must include %s."
    371376msgstr ""
    372377
    373 #: settings/tab-content.php:66 settings/tab-faq.php:120
    374 #: settings/tab-seo-meta.php:67 settings/tab-seo-title.php:65
     378#: settings/tab-content.php:67 settings/tab-faq.php:121
     379#: settings/tab-seo-meta.php:68 settings/tab-seo-title.php:66
     380msgid "Page Settings"
     381msgstr ""
     382
     383#: settings/tab-content.php:94 settings/tab-faq.php:200
     384#: settings/tab-seo-meta.php:97 settings/tab-seo-title.php:93
    375385msgid "Product Settings"
    376386msgstr ""
    377387
    378 #: settings/tab-content.php:93
    379 msgid "Short Description"
     388#: settings/tab-content.php:121
     389msgid "Short Description product"
    380390msgstr ""
    381391
    382392#. translators: %s: {keyword} placeholder
    383 #: settings/tab-content.php:112
     393#: settings/tab-content.php:140
    384394#, php-format
    385395msgid "If filled, must include %s. Max 300 chars."
     
    410420msgstr ""
    411421
    412 #: settings/tab-faq.php:149
    413 msgid "Product Article ID"
    414 msgstr ""
    415 
    416 #: settings/tab-faq.php:160
     422#: settings/tab-faq.php:150
     423msgid "Page  ID"
     424msgstr ""
     425
     426#: settings/tab-faq.php:161
     427msgid "ACF repeater field ID for page."
     428msgstr ""
     429
     430#: settings/tab-faq.php:167
     431msgid "Page Question ID"
     432msgstr ""
     433
     434#: settings/tab-faq.php:178
     435msgid "ACF field ID for page question."
     436msgstr ""
     437
     438#: settings/tab-faq.php:184
     439msgid "Page Answer ID"
     440msgstr ""
     441
     442#: settings/tab-faq.php:195
     443msgid "ACF field ID for page answer."
     444msgstr ""
     445
     446#: settings/tab-faq.php:229
     447msgid "Product ID"
     448msgstr ""
     449
     450#: settings/tab-faq.php:240
    417451msgid "ACF field ID for product."
    418452msgstr ""
    419453
    420 #: settings/tab-faq.php:166
     454#: settings/tab-faq.php:246
    421455msgid "Product Question ID"
    422456msgstr ""
    423457
    424 #: settings/tab-faq.php:177
     458#: settings/tab-faq.php:257
    425459msgid "ACF field ID for product question."
    426460msgstr ""
    427461
    428 #: settings/tab-faq.php:183
     462#: settings/tab-faq.php:263
    429463msgid "Product Answer ID"
    430464msgstr ""
    431465
    432 #: settings/tab-faq.php:194
     466#: settings/tab-faq.php:274
    433467msgid "ACF field ID for product answer."
    434468msgstr ""
     
    537571
    538572#: tabsPosts.php:51
     573msgid "Title Suggestion Generation"
     574msgstr ""
     575
     576#: tabsPosts.php:54
    539577msgid "Main Content Generation"
    540578msgstr ""
    541579
    542 #: tabsPosts.php:54 tabsPosts.php:170
     580#: tabsPosts.php:57 tabsPosts.php:214
    543581msgid "Edit Main Content"
    544582msgstr ""
    545583
    546 #: tabsPosts.php:57
     584#: tabsPosts.php:60
    547585msgid "FAQ Generation"
    548586msgstr ""
    549587
    550 #: tabsPosts.php:60
     588#: tabsPosts.php:63
    551589msgid "SEO Title Generation"
    552590msgstr ""
    553591
    554 #: tabsPosts.php:63
     592#: tabsPosts.php:66
    555593msgid "SEO Description Generation"
    556594msgstr ""
    557595
    558 #: tabsPosts.php:71
     596#: tabsPosts.php:74
     597msgid "How to Generate Title Suggestions with One Click"
     598msgstr ""
     599
     600#: tabsPosts.php:78 tabsPosts.php:269 tabsPosts.php:365 tabsPosts.php:505
     601msgid "Enter the post title at the top of the page."
     602msgstr ""
     603
     604#: tabsPosts.php:81
     605msgid "Fill in the \"Keyword / Topic\" field with your main keyword or topic."
     606msgstr ""
     607
     608#: tabsPosts.php:84 tabsPosts.php:275
     609msgid "Click \"Save Draft\" to save your changes."
     610msgstr ""
     611
     612#: tabsPosts.php:87
     613msgid "Finally, click the blue button \"Generate Title Suggestions\"."
     614msgstr ""
     615
     616#: tabsPosts.php:92
     617msgid ""
     618"You will receive several title suggestions - choose the best one and update "
     619"your post title!"
     620msgstr ""
     621
     622#: tabsPosts.php:97
     623msgid "Generate Title Suggestions"
     624msgstr ""
     625
     626#: tabsPosts.php:102 tabsPosts.php:146 tabsPosts.php:219 tabsPosts.php:292
     627#: tabsPosts.php:405 tabsPosts.php:544
     628msgid "Please do not refresh the page until the operation is complete."
     629msgstr ""
     630
     631#: tabsPosts.php:115
    559632msgid "How to Generate Main Post Content with One Click?"
    560633msgstr ""
    561634
    562 #: tabsPosts.php:76
     635#: tabsPosts.php:120
    563636msgid "First, enter the post title at the top of the page."
    564637msgstr ""
    565638
    566 #: tabsPosts.php:80
     639#: tabsPosts.php:124
    567640msgid ""
    568641"Fill in the \"Keyword / Topic\" field with your main keywords or post topic "
     
    570643msgstr ""
    571644
    572 #: tabsPosts.php:84
     645#: tabsPosts.php:128
    573646msgid "Click the \"Save Draft\" button to save your changes."
    574647msgstr ""
    575648
    576 #: tabsPosts.php:88
     649#: tabsPosts.php:132
    577650msgid "Finally, click the blue \"Generate Main Content\" button."
    578651msgstr ""
    579652
    580 #: tabsPosts.php:93 tabsPosts.php:239 tabsPosts.php:328 tabsPosts.php:431
     653#: tabsPosts.php:137 tabsPosts.php:283 tabsPosts.php:379 tabsPosts.php:518
    581654msgid ""
    582655"After completion, the full SEO-optimized content will automatically appear "
     
    584657msgstr ""
    585658
    586 #: tabsPosts.php:97
     659#: tabsPosts.php:141
    587660msgid "Generate Main Content"
    588661msgstr ""
    589662
    590 #: tabsPosts.php:102 tabsPosts.php:175 tabsPosts.php:248 tabsPosts.php:337
    591 #: tabsPosts.php:440
    592 msgid "Please do not refresh the page until the operation is complete."
    593 msgstr ""
    594 
    595 #: tabsPosts.php:111 tabsPosts.php:184 tabsPosts.php:257 tabsPosts.php:346
    596 #: tabsPosts.php:449
     663#: tabsPosts.php:155 tabsPosts.php:228 tabsPosts.php:301 tabsPosts.php:414
     664#: tabsPosts.php:553
    597665msgid "Custom Prompt Settings"
    598666msgstr ""
    599667
    600 #: tabsPosts.php:117
     668#: tabsPosts.php:161
    601669msgid "Custom Prompt for Content Generation"
    602670msgstr ""
    603671
    604 #: tabsPosts.php:130 tabsPosts.php:203 tabsPosts.php:276 tabsPosts.php:365
    605 #: tabsPosts.php:468
     672#: tabsPosts.php:174 tabsPosts.php:247 tabsPosts.php:320 tabsPosts.php:433
     673#: tabsPosts.php:572
    606674msgid ""
    607675"You can leave this field empty → the plugin will use the smart default "
     
    609677msgstr ""
    610678
    611 #: tabsPosts.php:133 tabsPosts.php:206 tabsPosts.php:279 tabsPosts.php:368
    612 #: tabsPosts.php:471
     679#: tabsPosts.php:177 tabsPosts.php:250 tabsPosts.php:323 tabsPosts.php:436
     680#: tabsPosts.php:575
    613681msgid ""
    614682"Want even better and more customized results? Write your own instruction "
     
    616684msgstr ""
    617685
    618 #: tabsPosts.php:136 tabsPosts.php:209 tabsPosts.php:282 tabsPosts.php:371
    619 #: tabsPosts.php:474
     686#: tabsPosts.php:180 tabsPosts.php:253 tabsPosts.php:326 tabsPosts.php:439
     687#: tabsPosts.php:578
    620688msgid ""
    621689"The clearer and more precise your prompt, the better and more accurate the "
     
    623691msgstr ""
    624692
    625 #: tabsPosts.php:148
     693#: tabsPosts.php:192
    626694msgid "How to Edit the Generated Main Content"
    627695msgstr ""
    628696
    629 #: tabsPosts.php:153
     697#: tabsPosts.php:197
    630698msgid ""
    631699"First make sure you have generated the content in the \"Generate Main Content"
     
    633701msgstr ""
    634702
    635 #: tabsPosts.php:157
     703#: tabsPosts.php:201
    636704msgid ""
    637705"If you want to change anything (make it longer/shorter, add details, change "
     
    639707msgstr ""
    640708
    641 #: tabsPosts.php:161
     709#: tabsPosts.php:205
    642710msgid "Then click the \"Edit Main Content\" button."
    643711msgstr ""
    644712
    645 #: tabsPosts.php:166
     713#: tabsPosts.php:210
    646714msgid ""
    647715"You can edit as many times as you like until the text is exactly the way you "
     
    649717msgstr ""
    650718
    651 #: tabsPosts.php:190
     719#: tabsPosts.php:234
    652720msgid "Custom Prompt for Edit Content"
    653721msgstr ""
    654722
    655 #: tabsPosts.php:221
     723#: tabsPosts.php:265
    656724msgid "How to Generate FAQ (Frequently Asked Questions) with One Click"
    657725msgstr ""
    658726
    659 #: tabsPosts.php:225 tabsPosts.php:314 tabsPosts.php:418
    660 msgid "Enter the post title at the top of the page."
    661 msgstr ""
    662 
    663 #: tabsPosts.php:228
     727#: tabsPosts.php:272
    664728msgid ""
    665729"Fill in the \"Keyword / Topic\" field with the post name or main keywords."
    666730msgstr ""
    667731
    668 #: tabsPosts.php:231
    669 msgid "Click \"Save Draft\" to save your changes."
    670 msgstr ""
    671 
    672 #: tabsPosts.php:234
     732#: tabsPosts.php:278
    673733msgid "Finally, click the blue button \"Generate FAQ\"."
    674734msgstr ""
    675735
    676 #: tabsPosts.php:243
     736#: tabsPosts.php:287
    677737msgid "Generate FAQs"
    678738msgstr ""
    679739
    680 #: tabsPosts.php:263
     740#: tabsPosts.php:307
    681741msgid "Custom Prompt for FAQ Generation"
    682742msgstr ""
    683743
    684 #: tabsPosts.php:310
     744#: tabsPosts.php:361
    685745msgid "How to Generate SEO Title & Meta Description with One Click"
    686746msgstr ""
    687747
    688 #: tabsPosts.php:317
     748#: tabsPosts.php:368
    689749msgid "Fill in the \"Keyword / Topic\" field with your main focus keyword."
    690750msgstr ""
    691751
    692 #: tabsPosts.php:320 tabsPosts.php:424
     752#: tabsPosts.php:371 tabsPosts.php:511
    693753msgid "Click \"Save Draft\" to save the post."
    694754msgstr ""
    695755
    696 #: tabsPosts.php:323
     756#: tabsPosts.php:374
    697757msgid "Click the blue button \"Generate SEO Title & Meta\"."
    698758msgstr ""
    699759
    700 #: tabsPosts.php:332
     760#: tabsPosts.php:384 tabsPosts.php:523
     761msgid "Both plugins detected!"
     762msgstr ""
     763
     764#: tabsPosts.php:385 tabsPosts.php:524
     765msgid ""
     766"Priority: Yoast SEO will be used. If Yoast is disabled, Rank Math will be "
     767"used."
     768msgstr ""
     769
     770#: tabsPosts.php:389 tabsPosts.php:528
     771msgid "Rank Math SEO detected!"
     772msgstr ""
     773
     774#: tabsPosts.php:390
     775msgid "Your SEO titles will be saved in Rank Math."
     776msgstr ""
     777
     778#: tabsPosts.php:394 tabsPosts.php:533
     779msgid "Yoast SEO detected!"
     780msgstr ""
     781
     782#: tabsPosts.php:395
     783msgid "Your SEO titles will be saved in Yoast."
     784msgstr ""
     785
     786#: tabsPosts.php:400
    701787msgid "Generate SEO Title"
    702788msgstr ""
    703789
    704 #: tabsPosts.php:352
     790#: tabsPosts.php:420
    705791msgid "Custom Prompt for SEO Title Generation"
    706792msgstr ""
    707793
    708 #: tabsPosts.php:383 tabsPosts.php:486
    709 msgid "Yoast SEO Plugin Required"
    710 msgstr ""
    711 
    712 #: tabsPosts.php:386 tabsPosts.php:489
    713 msgid ""
    714 "This feature requires the Yoast SEO plugin to be installed and activated."
    715 msgstr ""
    716 
    717 #: tabsPosts.php:389 tabsPosts.php:492
    718 msgid "After activation, refresh the page."
    719 msgstr ""
    720 
    721 #: tabsPosts.php:414
     794#: tabsPosts.php:451 tabsPosts.php:590
     795msgid "Warning:"
     796msgstr ""
     797
     798#: tabsPosts.php:451 tabsPosts.php:590
     799msgid "SEO Plugin Required"
     800msgstr ""
     801
     802#: tabsPosts.php:454 tabsPosts.php:593
     803msgid ""
     804"This feature requires either Yoast SEO or Rank Math to be installed and "
     805"activated."
     806msgstr ""
     807
     808#: tabsPosts.php:457 tabsPosts.php:596
     809msgid "Supported SEO Plugins:"
     810msgstr ""
     811
     812#: tabsPosts.php:460 tabsPosts.php:463 tabsPosts.php:599 tabsPosts.php:602
     813msgid "Free & Premium versions supported"
     814msgstr ""
     815
     816#: tabsPosts.php:469 tabsPosts.php:608
     817msgid "Install and activate one of the above plugins, then refresh this page."
     818msgstr ""
     819
     820#: tabsPosts.php:501
    722821msgid "How to Generate Meta Description with One Click"
    723822msgstr ""
    724823
    725 #: tabsPosts.php:421
     824#: tabsPosts.php:508
    726825msgid "Fill in the \"Keyword / Topic\" field with your focus keyword."
    727826msgstr ""
    728827
    729 #: tabsPosts.php:427
     828#: tabsPosts.php:514
    730829msgid "Click the blue button \"Generate Meta Description\"."
    731830msgstr ""
    732831
    733 #: tabsPosts.php:435
     832#: tabsPosts.php:529
     833msgid "Your meta descriptions will be saved in Rank Math."
     834msgstr ""
     835
     836#: tabsPosts.php:534
     837msgid "Your meta descriptions will be saved in Yoast."
     838msgstr ""
     839
     840#: tabsPosts.php:539
    734841msgid "Generate Meta Description"
    735842msgstr ""
    736843
    737 #: tabsPosts.php:455
     844#: tabsPosts.php:559
    738845msgid "Custom Prompt for Meta Description Generation"
    739846msgstr ""
  • aicontify/trunk/readme.txt

    r3402369 r3428884  
    44Requires at least: 5.0
    55Tested up to: 6.8
    6 Stable tag: 6.0.0
     6Stable tag: 7.0.0
    77Requires PHP: 7.4
    88License: GPLv2 or later
    99License URI: https://www.gnu.org/licenses/gpl-2.0.html
     10A free AI-powered plugin for generating high-quality content directly in the WordPress editor using the AiContify AI model.
     11== Description ==
     12AiContify is a lightweight, secure, and intelligent WordPress plugin designed to generate complete content using artificial intelligence — without any license key or payment.
     13The plugin is fully compliant with WordPress.org rules and focuses on generating high-quality, SEO-optimized content directly inside the WordPress editor.
     14🆓 Free Version
     15The free version of AiContify is activated in the Posts section of WordPress and includes the following features:
    1016
    11 A free AI-powered plugin for generating high-quality content directly in the WordPress editor using the AiContify AI model.
     17Generate full article content by simply entering a keyword
     18Create content up to 4000 words in length
     19Edit main content
     20Automatically generate FAQ (Frequently Asked Questions) related to the article
     21Generate SEO Title and Meta Description compatible with SEO plugins like Yoast SEO and Rank Math
     22Generate suggested titles for posts
     23Support for 13 languages including Persian, English, Spanish, French, German, Chinese, Japanese, Russian, Arabic, Hindi, Portuguese, Italian, and Korean
     24Option to choose between the default server prompt or a custom user-defined prompt
     25Fully compatible with both pre-built and custom WordPress themes
     26Works instantly without any complex configuration
    1227
    13 == Description ==
    1428
    15 **AiContify** is a lightweight, secure, and intelligent WordPress plugin designed to generate complete content using artificial intelligence — without any license key or payment.
     29🚀 Pro Version
     30The AiContify Pro edition includes all features from the free version, plus enhanced capabilities for professional users and content creators.
     31Pro features include:
    1632
    17 The plugin is fully compliant with WordPress.org rules and focuses on generating high-quality, SEO-optimized content directly inside the WordPress editor.
     33Generate full article content for Posts by simply entering a keyword
     34Create content up to 4000 words in length for Posts
     35Edit main content for Posts
     36Automatically generate FAQ (Frequently Asked Questions) for Posts
     37Generate SEO Title and Meta Description for Posts compatible with Yoast SEO and Rank Math
     38Generate suggested titles for posts
     39Generate full article content for Pages by simply entering a keyword
     40Create content up to 4000 words in length for Pages
     41Edit main content for Pages
     42Automatically generate FAQ (Frequently Asked Questions) for Pages
     43Generate SEO Title and Meta Description for Pages compatible with Yoast SEO and Rank Math
     44Generate suggested titles for pages
     45Support for 13 languages for Pages (same as Posts)
     46Option to choose between the default server prompt or a custom user-defined prompt for Pages
     47Generate content for WooCommerce products (short and long descriptions)
     48Generate suggested titles for WooCommerce products
     49Faster processing and higher accuracy using advanced AI models
     50Separate custom prompt configuration for each section:
     51WooCommerce product Main content
     52Edit WooCommerce product Main content
     53WooCommerce product FAQ section
     54WooCommerce product SEO title
     55WooCommerce product Meta description
     56WooCommerce product Shortdescription
     57Easy activation through a premium license
    1858
    19 ---
    20 
    21 ### 🆓 Free Version
    22 
    23 The free version of AiContify is activated in the **Posts** section of WordPress and includes the following features:
    24 
    25 - Generate full article content by simply entering a keyword 
    26 - Create content up to **4000 words** in length 
    27 - Edit main content
    28 - Automatically generate **FAQ (Frequently Asked Questions)** related to the article 
    29 - Generate **SEO Title** and **Meta Description** compatible with SEO plugins like Yoast SEO 
    30 - Support for **13 languages** including Persian, English, Spanish, French, German, Chinese, Japanese, Russian, Arabic, Hindi, Portuguese, Italian, and Korean 
    31 - Option to choose between the **default server prompt** or a **custom user-defined prompt** 
    32 - Fully compatible with both pre-built and custom WordPress themes 
    33 - Works instantly without any complex configuration 
    34 
    35 ---
    36 
    37 ### 🚀 Pro Version
    38 
    39 The **AiContify Pro** edition includes all features from the free version, plus enhanced capabilities for professional users and content creators.
    40 
    41 **Pro features include:**
    42 - Generate content for **WooCommerce products** (short and long descriptions) 
    43 - Full support for **Pages** in addition to Posts 
    44 - Faster processing and higher accuracy using advanced AI models 
    45 - Separate custom prompt configuration for each section:
    46   - WooCommerce product Main content 
    47   - Edit WooCommerce product Main content 
    48   - WooCommerce product FAQ section 
    49   - WooCommerce product SEO title 
    50   - WooCommerce product Meta description 
    51   - WooCommerce product Shortdescription 
    52 - Easy activation through a **premium license** 
    53 
    54 The Pro version is designed for professional users who need faster, more precise, and deeply customizable AI-generated content for websites and online stores.
    55 
    56 ---
    5759
    5860= General Features =
    59 * One-click content generation directly inside Gutenberg 
    60 * SEO-friendly and natural language output 
    61 * Secure, sanitized, and properly enqueued assets 
    62 * No external dependencies or license validation required 
    6361
    64 > **Note:** The free version focuses on generating article content. 
    65 > Advanced features like WooCommerce or SEO automation are available in the Pro version.
     62One-click content generation directly inside Gutenberg
     63SEO-friendly and natural language output
     64Secure, sanitized, and properly enqueued assets
     65No external dependencies or license validation required
    6666
    67 ---
     67Note: The free version focuses on generating article content.
     68Advanced features like WooCommerce or SEO automation are available in the Pro version.
    6869
    6970== External services ==
    70 
    7171This plugin connects to the AiContify API at:
    72 
    73 `https://webtinus.com/`
    74 **Data sent:** Post title and optional prompt (user-provided keyword). 
    75 **Data received:** AI-generated article content. 
    76 **Purpose:** To generate original content using the AiContify AI model. 
    77 **Terms of Service:** https://aicontify.com/terms/ 
    78 **Privacy Policy:** https://aicontify.com/privacy/
    79 
     72https://webtinus.com/
     73Data sent: Post title and optional prompt (user-provided keyword).
     74Data received: AI-generated article content.
     75Purpose: To generate original content using the AiContify AI model.
     76Terms of Service: https://aicontify.com/terms/
     77Privacy Policy: https://aicontify.com/privacy/
    8078No user data, IP, or site URL is transmitted. Only the title or keyword is sent.
    81 
    82 ---
    83 
    8479== Installation ==
    8580
    86 1. Upload the `aicontify` folder to `/wp-content/plugins/`
    87 2. Activate the plugin via the WordPress “Plugins” menu
    88 3. Open any post in the Gutenberg editor
    89 4. Click the **“Generate with AiContify”** button in the toolbar
    90 5. Enter a keyword and click **Generate**
    91 6. Insert the AI-generated content with a single click
     81Upload the aicontify folder to /wp-content/plugins/
     82Activate the plugin via the WordPress “Plugins” menu
     83Open any post in the Gutenberg editor
     84Click the “Generate with AiContify” button in the toolbar
     85Enter a keyword and click Generate
     86Insert the AI-generated content with a single click
    9287
    93 ---
    9488
    9589== Frequently Asked Questions ==
    96 
    97 = Do I need an API key or license? = 
    98 **No.** The free AiContify model works immediately after activation — no setup required.
    99 
    100 = Is this plugin 100% free? = 
     90= Do I need an API key or license? =
     91No. The free AiContify model works immediately after activation — no setup required.
     92= Is this plugin 100% free? =
    10193Yes. The free version is fully functional and contains no locked features.
    102 
    103 = Can I generate FAQs or SEO titles? = 
     94= Can I generate FAQs or SEO titles? =
    10495Yes. The free version supports FAQ and SEO title generation for articles.
    105 
    106 = What’s included in the Pro version? = 
     96= What’s included in the Pro version? =
    10797The Pro version adds WooCommerce product content, page support, faster generation, and advanced prompt customization.
    108 
    109 = Is my data secure? = 
     98= Is my data secure? =
    11099Yes. Only the keyword/title is transmitted. No personal data, emails, or URLs are collected.
    111 
    112 ---
    113 
    114100== Screenshots ==
    115101
    116 1. “Generate with AiContify” button in the Gutenberg toolbar 
    117 2. Keyword input modal for content generation 
    118 3. AI-generated article ready to insert 
    119 4. Clean settings page with no license fields 
     102“Generate with AiContify” button in the Gutenberg toolbar
     103Keyword input modal for content generation
     104AI-generated article ready to insert
     105Clean settings page with no license fields
    120106
    121 ---
    122107
    123108== Changelog ==
    124 
     109= 7.0.0 = December 29, 2025
     110Add Suggested Title
     111Full support for RankMeth plugin
    125112= 6.0.0 = November 25, 2025
    126113Add main content editing feature
    127114Optimize tab descriptions
    128 
    129115= 5.1.0 = November 19, 2025
    130116Rest API optimization
    131 
    132117= 5.0.0 = November 19, 2025
    133118Rest API optimization
    134 
    135119= 4.0.0 = November 17, 2025
    136120Added a custom prompt field inside post editor for more flexible content generation
    137121Optimized REST API endpoints for faster and more reliable responses
    138 
    139122= 3.8.0 = November 15, 2025
    140123Fixed several issues in the settings page to improve stability and usability
    141 
    142124= 3.7.0 = November 13, 2025
    143125Optimized AI model for improved accuracy and speed
    144126Edited and updated translation files for broader language coverage
     127= 3.6.0 = November 12, 2025
    145128
    146 = 3.6.0 = *November 12, 2025* 
    147 * Added complete Free/Pro feature comparison 
    148 * Improved documentation for clarity and compliance 
    149 * Confirmed compatibility with WordPress.org rules 
    150 * Optimized bilingual presentation for fa.wordpress.org 
    151 
    152 = 3.2.0 = *November 03, 2025* 
    153 * WordPress.org compliance update 
    154 * Removed external links and Pro references outside documentation 
    155 * Focused exclusi
     129Added complete Free/Pro feature comparison
     130Improved documentation for clarity and compliance
     131Confirmed compatibility with WordPress.org rules
     132Optimized bilingual presentation for fa.wordpress.org
     133= 3.2.0 = November 03, 2025
     134WordPress.org compliance update
     135Removed external links and Pro references outside documentation
     136Focused exclusi
  • aicontify/trunk/seoDescription.php

    r3398370 r3428884  
    4040    ]);
    4141
    42     if (is_wp_error($result) || empty($result['meta_description'])) {
    43         wp_send_json_error(['code' => $result['error_code'] ?? 'err_meta_empty']);
     42    // بررسی اگر نتیجه wp_error باشد
     43    if (is_wp_error($result)) {
     44        wp_send_json_error(['code' => 'err_connection_failed']);
     45    }
     46
     47    // بررسی خطا در نتیجه
     48    if (!empty($result['error_code'])) {
     49        wp_send_json_error(['code' => $result['error_code']]);
     50    }
     51
     52    // بررسی اگر meta_description خالی باشد
     53    if (empty($result['meta_description'])) {
     54        wp_send_json_error(['code' => 'err_content_empty']);
    4455    }
    4556
    4657    $meta_description = sanitize_textarea_field(trim($result['meta_description']));
    4758
    48     if (!class_exists('WPSEO_Meta')) {
    49         wp_send_json_error(['code' => 'err_yoast_missing']);
     59    // بررسی اگر بعد از sanitize خالی شد
     60    if (empty($meta_description)) {
     61        wp_send_json_error(['code' => 'err_content_empty']);
    5062    }
    5163
    52     $saved = update_post_meta($post_id, '_yoast_wpseo_metadesc', $meta_description);
    53     if ($saved === false) {
    54         wp_send_json_error(['code' => 'err_save_failed']);
     64    // بررسی Yoast (اولویت اول)
     65    if (class_exists('WPSEO_Meta')) {
     66        aicont_save_yoast_meta_description($post_id, $meta_description);
     67    }
     68    // بررسی Rank Math (اولویت دوم)
     69    elseif (defined('RANK_MATH_VERSION') || class_exists('RankMath\Core')) {
     70        aicont_save_rankmath_meta_description($post_id, $meta_description);
     71    }
     72    // اگر هیچ کدام نبود
     73    else {
     74        wp_send_json_error(['code' => 'err_no_seo_plugin']);
    5575    }
    5676
     
    6787}
    6888
     89/**
     90 * ذخیره توضیح متا برای Yoast
     91 */
     92function aicont_save_yoast_meta_description($post_id, $meta_description) {
     93    update_post_meta($post_id, '_yoast_wpseo_metadesc', $meta_description);
     94   
     95    // اطمینان از ذخیره شدن
     96    $saved = get_post_meta($post_id, '_yoast_wpseo_metadesc', true);
     97    if ($saved !== $meta_description) {
     98        wp_die('Failed to save Yoast meta description');
     99    }
     100}
     101
     102/**
     103 * ذخیره توضیح متا برای Rank Math - با استفاده از روش رسمی
     104 */
     105function aicont_save_rankmath_meta_description($post_id, $meta_description) {
     106    // بررسی Rank Math
     107    if (!function_exists('rank_math')) {
     108        wp_die('Rank Math is not active');
     109    }
     110
     111    // روش 1: استفاده از RankMath\Helper::update_post_meta
     112    if (method_exists('\RankMath\Helper', 'update_post_meta')) {
     113        \RankMath\Helper::update_post_meta('rank_math_description', $meta_description, $post_id);
     114    }
     115    // روش 2: Update via post meta مستقیم
     116    else {
     117        update_post_meta($post_id, 'rank_math_description', $meta_description);
     118    }
     119
     120    // اطمینان از ذخیره شدن
     121    $saved = get_post_meta($post_id, 'rank_math_description', true);
     122    if ($saved !== $meta_description) {
     123        // اگر مستقیم کار نکرد، سعی کن با فیلتر
     124        do_action('rank_math/before_save_post', $post_id);
     125        update_post_meta($post_id, 'rank_math_description', $meta_description);
     126        do_action('rank_math/after_save_post', $post_id);
     127    }
     128}
     129
     130/**
     131 * صدا زدن سرور Webtinus برای تولید توضیح متا
     132 */
    69133function aicont_call_webtinus_meta_description($args) {
    70134    $client_site_url = home_url('', 'https');
     
    83147
    84148    $response = wp_remote_post($server_url, [
    85         'headers' => ['Content-Type' => 'application/json', 'X-Client-Site' => $client_site_url],
     149        'headers' => [
     150            'Content-Type' => 'application/json',
     151            'X-Client-Site' => $client_site_url
     152        ],
    86153        'body'    => $body,
    87154        'timeout' => 90
     
    92159    }
    93160
    94     $data = json_decode(wp_remote_retrieve_body($response), true);
     161    $http_code = wp_remote_retrieve_response_code($response);
     162   
     163    if ($http_code !== 200) {
     164        return ['error_code' => 'err_server_error'];
     165    }
    95166
    96     if (empty($data['success']) || empty($data['meta_description'])) {
    97         return ['error_code' => $data['error_code'] ?? 'err_meta_empty'];
     167    $body_response = wp_remote_retrieve_body($response);
     168   
     169    if (empty($body_response)) {
     170        return ['error_code' => 'err_content_empty'];
     171    }
     172
     173    $data = json_decode($body_response, true);
     174
     175    if (!is_array($data) || json_last_error() !== JSON_ERROR_NONE) {
     176        return ['error_code' => 'err_server_error'];
     177    }
     178
     179    if (empty($data['meta_description'])) {
     180        return ['error_code' => $data['error_code'] ?? 'err_content_empty'];
    98181    }
    99182
  • aicontify/trunk/seoTitle.php

    r3398370 r3428884  
    4040    ]);
    4141
    42     if (is_wp_error($result) || empty($result['seo_title'])) {
    43         wp_send_json_error(['code' => $result['error_code'] ?? 'err_title_empty']);
     42    if (is_wp_error($result)) {
     43        wp_send_json_error(['code' => 'err_connection_failed']);
     44    }
     45
     46    if (!empty($result['error_code'])) {
     47        wp_send_json_error(['code' => $result['error_code']]);
     48    }
     49
     50    if (empty($result['seo_title'])) {
     51        wp_send_json_error(['code' => 'err_content_empty']);
    4452    }
    4553
    4654    $seo_title = wp_strip_all_tags(sanitize_text_field($result['seo_title']));
    4755
    48     if (!class_exists('WPSEO_Meta')) {
    49         wp_send_json_error(['code' => 'err_yoast_missing']);
     56    if (empty($seo_title)) {
     57        wp_send_json_error(['code' => 'err_content_empty']);
    5058    }
    5159
    52     $saved = update_post_meta($post_id, '_yoast_wpseo_title', $seo_title);
    53     if ($saved === false) {
    54         wp_send_json_error(['code' => 'err_save_failed']);
     60    if (class_exists('WPSEO_Meta')) {
     61        aicont_save_yoast_seo_title($post_id, $seo_title);
     62    }
     63    elseif (defined('RANK_MATH_VERSION') || class_exists('RankMath\Core')) {
     64        aicont_save_rankmath_seo_title($post_id, $seo_title);
     65    }
     66    else {
     67        wp_send_json_error(['code' => 'err_no_seo_plugin']);
    5568    }
    5669
     
    6578        'seo_title' => $seo_title
    6679    ]);
     80}
     81
     82function aicont_save_yoast_seo_title($post_id, $seo_title) {
     83    update_post_meta($post_id, '_yoast_wpseo_title', $seo_title);
     84   
     85    $saved = get_post_meta($post_id, '_yoast_wpseo_title', true);
     86    if ($saved !== $seo_title) {
     87        wp_die('Failed to save Yoast SEO title');
     88    }
     89}
     90
     91function aicont_save_rankmath_seo_title($post_id, $seo_title) {
     92    if (!function_exists('rank_math')) {
     93        wp_die('Rank Math is not active');
     94    }
     95
     96    if (method_exists('\RankMath\Helper', 'update_post_meta')) {
     97        \RankMath\Helper::update_post_meta('rank_math_title', $seo_title, $post_id);
     98    }
     99    else {
     100        update_post_meta($post_id, 'rank_math_title', $seo_title);
     101    }
     102
     103    $saved = get_post_meta($post_id, 'rank_math_title', true);
     104    if ($saved !== $seo_title) {
     105        do_action('rank_math/before_save_post', $post_id);
     106        update_post_meta($post_id, 'rank_math_title', $seo_title);
     107        do_action('rank_math/after_save_post', $post_id);
     108    }
    67109}
    68110
     
    83125
    84126    $response = wp_remote_post($server_url, [
    85         'headers' => ['Content-Type' => 'application/json', 'X-Client-Site' => $client_site_url],
     127        'headers' => [
     128            'Content-Type' => 'application/json',
     129            'X-Client-Site' => $client_site_url
     130        ],
    86131        'body'    => $body,
    87132        'timeout' => 90
     
    92137    }
    93138
    94     $data = json_decode(wp_remote_retrieve_body($response), true);
     139    $http_code = wp_remote_retrieve_response_code($response);
     140   
     141    if ($http_code !== 200) {
     142        return ['error_code' => 'err_server_error'];
     143    }
    95144
    96     if (empty($data['success']) || empty($data['seo_title'])) {
    97         return ['error_code' => $data['error_code'] ?? 'err_title_empty'];
     145    $body_response = wp_remote_retrieve_body($response);
     146   
     147    if (empty($body_response)) {
     148        return ['error_code' => 'err_content_empty'];
     149    }
     150
     151    $data = json_decode($body_response, true);
     152
     153    if (!is_array($data) || json_last_error() !== JSON_ERROR_NONE) {
     154        return ['error_code' => 'err_server_error'];
     155    }
     156
     157    if (empty($data['seo_title'])) {
     158        return ['error_code' => $data['error_code'] ?? 'err_content_empty'];
    98159    }
    99160
  • aicontify/trunk/settings.php

    r3396224 r3428884  
    1313    $site_language                   = get_option('aicont_plugin_site_language', 'en_US');
    1414    $site_title                      = get_option('aicont_plugin_site_title', '');
     15
    1516    $content_prompt_custom           = get_option('aicont_plugin_content_prompt_custom', '');
     17    $content_page_prompt_custom      = get_option('aicont_plugin_content_page_prompt_custom', '');
    1618    $content_product_prompt_custom   = get_option('aicont_plugin_content_product_prompt_custom', '');
    1719    $short_description_prompt_custom = get_option('aicont_plugin_short_description_prompt_custom', '');
     20
    1821    $faq_prompt_custom               = get_option('aicont_plugin_faq_prompt_custom', '');
     22    $faq_page_prompt_custom          = get_option('aicont_plugin_faq_page_prompt_custom', '');
    1923    $faq_product_prompt_custom       = get_option('aicont_plugin_faq_product_prompt_custom', '');
     24
    2025    $seo_title_prompt_custom         = get_option('aicont_plugin_seo_title_prompt_custom', '');
    21     $seo_title_product_prompt_custom = get_option('aicont_plugin_seo_title_product_prompt_custom', '');
     26    $seo_page_title_prompt_custom    = get_option('aicont_plugin_seo_page_title_prompt_custom', '');
     27    $seo_product_title_prompt_custom = get_option('aicont_plugin_seo_product_title_prompt_custom', '');
     28
    2229    $seo_meta_prompt_custom          = get_option('aicont_plugin_seo_meta_prompt_custom', '');
     30    $seo_meta_page_prompt_custom     = get_option('aicont_plugin_seo_meta_page_prompt_custom', '');
    2331    $seo_meta_product_prompt_custom  = get_option('aicont_plugin_seo_meta_product_prompt_custom', '');
     32
    2433    $article_id                      = get_option('aicont_plugin_faq_article_id', '');
    2534    $question_id                     = get_option('aicont_plugin_faq_question_id', '');
    2635    $answer_id                       = get_option('aicont_plugin_faq_answer_id', '');
     36
     37    $page_id                         = get_option('aicont_plugin_faq_page_article_id', '');
     38    $page_question_id                = get_option('aicont_plugin_faq_page_question_id', '');
     39    $page_answer_id                  = get_option('aicont_plugin_faq_page_answer_id', '');
     40
    2741    $faq_product_article_id          = get_option('aicont_plugin_faq_product_article_id', '');
    2842    $faq_product_question_id         = get_option('aicont_plugin_faq_product_question_id', '');
     
    101115                <input type="hidden" name="aicont_plugin_site_title" value="<?php echo esc_attr($site_title); ?>">
    102116               
    103                 <!-- ✅ PRESERVE:  prompts و ACF fields -->
     117                <!-- ✅ PRESERVE: All prompts -->
    104118                <input type="hidden" name="aicont_plugin_content_prompt_custom" value="<?php echo esc_attr($content_prompt_custom); ?>">
     119                <input type="hidden" name="aicont_plugin_content_page_prompt_custom" value="<?php echo esc_attr($content_page_prompt_custom); ?>">
     120                <input type="hidden" name="aicont_plugin_content_product_prompt_custom" value="<?php echo esc_attr($content_product_prompt_custom); ?>">
     121                <input type="hidden" name="aicont_plugin_short_description_prompt_custom" value="<?php echo esc_attr($short_description_prompt_custom); ?>">
    105122                <input type="hidden" name="aicont_plugin_faq_prompt_custom" value="<?php echo esc_attr($faq_prompt_custom); ?>">
     123                <input type="hidden" name="aicont_plugin_faq_page_prompt_custom" value="<?php echo esc_attr($faq_page_prompt_custom); ?>">
     124                <input type="hidden" name="aicont_plugin_faq_product_prompt_custom" value="<?php echo esc_attr($faq_product_prompt_custom); ?>">
    106125                <input type="hidden" name="aicont_plugin_seo_title_prompt_custom" value="<?php echo esc_attr($seo_title_prompt_custom); ?>">
     126                <input type="hidden" name="aicont_plugin_seo_page_title_prompt_custom" value="<?php echo esc_attr($seo_page_title_prompt_custom); ?>">
     127                <input type="hidden" name="aicont_plugin_seo_product_title_prompt_custom" value="<?php echo esc_attr($seo_product_title_prompt_custom); ?>">
    107128                <input type="hidden" name="aicont_plugin_seo_meta_prompt_custom" value="<?php echo esc_attr($seo_meta_prompt_custom); ?>">
    108                 <?php if ($is_pro_active): ?>
    109                     <input type="hidden" name="aicont_plugin_content_product_prompt_custom" value="<?php echo esc_attr($content_product_prompt_custom); ?>">
    110                     <input type="hidden" name="aicont_plugin_short_description_prompt_custom" value="<?php echo esc_attr($short_description_prompt_custom); ?>">
    111                     <input type="hidden" name="aicont_plugin_faq_product_prompt_custom" value="<?php echo esc_attr($faq_product_prompt_custom); ?>">
    112                     <input type="hidden" name="aicont_plugin_seo_title_product_prompt_custom" value="<?php echo esc_attr($seo_title_product_prompt_custom); ?>">
    113                     <input type="hidden" name="aicont_plugin_seo_meta_product_prompt_custom" value="<?php echo esc_attr($seo_meta_product_prompt_custom); ?>">
    114                 <?php endif; ?>
     129                <input type="hidden" name="aicont_plugin_seo_meta_page_prompt_custom" value="<?php echo esc_attr($seo_meta_page_prompt_custom); ?>">
     130                <input type="hidden" name="aicont_plugin_seo_meta_product_prompt_custom" value="<?php echo esc_attr($seo_meta_product_prompt_custom); ?>">
    115131                <?php if ($template_type === 'custom'): ?>
    116132                    <input type="hidden" name="aicont_plugin_faq_article_id" value="<?php echo esc_attr($article_id); ?>">
    117133                    <input type="hidden" name="aicont_plugin_faq_question_id" value="<?php echo esc_attr($question_id); ?>">
    118134                    <input type="hidden" name="aicont_plugin_faq_answer_id" value="<?php echo esc_attr($answer_id); ?>">
    119                     <?php if ($is_pro_active): ?>
    120                         <input type="hidden" name="aicont_plugin_faq_product_article_id" value="<?php echo esc_attr($faq_product_article_id); ?>">
    121                         <input type="hidden" name="aicont_plugin_faq_product_question_id" value="<?php echo esc_attr($faq_product_question_id); ?>">
    122                         <input type="hidden" name="aicont_plugin_faq_product_answer_id" value="<?php echo esc_attr($faq_product_answer_id); ?>">
    123                     <?php endif; ?>
     135                    <input type="hidden" name="aicont_plugin_faq_page_article_id" value="<?php echo esc_attr($page_id); ?>">
     136                    <input type="hidden" name="aicont_plugin_faq_page_question_id" value="<?php echo esc_attr($page_question_id); ?>">
     137                    <input type="hidden" name="aicont_plugin_faq_page_answer_id" value="<?php echo esc_attr($page_answer_id); ?>">
     138                    <input type="hidden" name="aicont_plugin_faq_product_article_id" value="<?php echo esc_attr($faq_product_article_id); ?>">
     139                    <input type="hidden" name="aicont_plugin_faq_product_question_id" value="<?php echo esc_attr($faq_product_question_id); ?>">
     140                    <input type="hidden" name="aicont_plugin_faq_product_answer_id" value="<?php echo esc_attr($faq_product_answer_id); ?>">
    124141                <?php endif; ?>
    125142            <?php endif; ?>
    126143
    127             <!-- ✅ CONTENT TAB:  Content prompts -->
     144            <!-- ✅ CONTENT TAB: Content prompts -->
    128145            <?php if ($current_tab === 'content'): ?>
    129146                <input type="hidden" name="aicont_plugin_content_prompt_custom" value="<?php echo esc_attr($content_prompt_custom); ?>">
    130                 <?php if ($is_pro_active): ?>
    131                     <input type="hidden" name="aicont_plugin_content_product_prompt_custom" value="<?php echo esc_attr($content_product_prompt_custom); ?>">
    132                     <input type="hidden" name="aicont_plugin_short_description_prompt_custom" value="<?php echo esc_attr($short_description_prompt_custom); ?>">
    133                 <?php endif; ?>
    134                
    135                 <!-- ✅ PRESERVE:  prompts  -->
     147                <input type="hidden" name="aicont_plugin_content_page_prompt_custom" value="<?php echo esc_attr($content_page_prompt_custom); ?>">
     148                <input type="hidden" name="aicont_plugin_content_product_prompt_custom" value="<?php echo esc_attr($content_product_prompt_custom); ?>">
     149                <input type="hidden" name="aicont_plugin_short_description_prompt_custom" value="<?php echo esc_attr($short_description_prompt_custom); ?>">
     150               
     151                <!-- ✅ PRESERVE: All other prompts and settings -->
    136152                <input type="hidden" name="aicont_plugin_template_type" value="<?php echo esc_attr($template_type); ?>">
    137153                <input type="hidden" name="aicont_plugin_site_language" value="<?php echo esc_attr($site_language); ?>">
    138154                <input type="hidden" name="aicont_plugin_site_title" value="<?php echo esc_attr($site_title); ?>">
    139155                <input type="hidden" name="aicont_plugin_faq_prompt_custom" value="<?php echo esc_attr($faq_prompt_custom); ?>">
     156                <input type="hidden" name="aicont_plugin_faq_page_prompt_custom" value="<?php echo esc_attr($faq_page_prompt_custom); ?>">
     157                <input type="hidden" name="aicont_plugin_faq_product_prompt_custom" value="<?php echo esc_attr($faq_product_prompt_custom); ?>">
    140158                <input type="hidden" name="aicont_plugin_seo_title_prompt_custom" value="<?php echo esc_attr($seo_title_prompt_custom); ?>">
     159                <input type="hidden" name="aicont_plugin_seo_page_title_prompt_custom" value="<?php echo esc_attr($seo_page_title_prompt_custom); ?>">
     160                <input type="hidden" name="aicont_plugin_seo_product_title_prompt_custom" value="<?php echo esc_attr($seo_product_title_prompt_custom); ?>">
    141161                <input type="hidden" name="aicont_plugin_seo_meta_prompt_custom" value="<?php echo esc_attr($seo_meta_prompt_custom); ?>">
    142                 <?php if ($is_pro_active): ?>
    143                     <input type="hidden" name="aicont_plugin_faq_product_prompt_custom" value="<?php echo esc_attr($faq_product_prompt_custom); ?>">
    144                     <input type="hidden" name="aicont_plugin_seo_title_product_prompt_custom" value="<?php echo esc_attr($seo_title_product_prompt_custom); ?>">
    145                     <input type="hidden" name="aicont_plugin_seo_meta_product_prompt_custom" value="<?php echo esc_attr($seo_meta_product_prompt_custom); ?>">
    146                 <?php endif; ?>
    147                
    148                 <!-- ✅ PRESERVE:  ACF fields -->
     162                <input type="hidden" name="aicont_plugin_seo_meta_page_prompt_custom" value="<?php echo esc_attr($seo_meta_page_prompt_custom); ?>">
     163                <input type="hidden" name="aicont_plugin_seo_meta_product_prompt_custom" value="<?php echo esc_attr($seo_meta_product_prompt_custom); ?>">
     164               
     165                <!-- ✅ PRESERVE: ACF fields -->
    149166                <?php if ($template_type === 'custom'): ?>
    150167                    <input type="hidden" name="aicont_plugin_faq_article_id" value="<?php echo esc_attr($article_id); ?>">
    151168                    <input type="hidden" name="aicont_plugin_faq_question_id" value="<?php echo esc_attr($question_id); ?>">
    152169                    <input type="hidden" name="aicont_plugin_faq_answer_id" value="<?php echo esc_attr($answer_id); ?>">
    153                     <?php if ($is_pro_active): ?>
    154                         <input type="hidden" name="aicont_plugin_faq_product_article_id" value="<?php echo esc_attr($faq_product_article_id); ?>">
    155                         <input type="hidden" name="aicont_plugin_faq_product_question_id" value="<?php echo esc_attr($faq_product_question_id); ?>">
    156                         <input type="hidden" name="aicont_plugin_faq_product_answer_id" value="<?php echo esc_attr($faq_product_answer_id); ?>">
    157                     <?php endif; ?>
     170                    <input type="hidden" name="aicont_plugin_faq_page_article_id" value="<?php echo esc_attr($page_id); ?>">
     171                    <input type="hidden" name="aicont_plugin_faq_page_question_id" value="<?php echo esc_attr($page_question_id); ?>">
     172                    <input type="hidden" name="aicont_plugin_faq_page_answer_id" value="<?php echo esc_attr($page_answer_id); ?>">
     173                    <input type="hidden" name="aicont_plugin_faq_product_article_id" value="<?php echo esc_attr($faq_product_article_id); ?>">
     174                    <input type="hidden" name="aicont_plugin_faq_product_question_id" value="<?php echo esc_attr($faq_product_question_id); ?>">
     175                    <input type="hidden" name="aicont_plugin_faq_product_answer_id" value="<?php echo esc_attr($faq_product_answer_id); ?>">
    158176                <?php endif; ?>
    159177            <?php endif; ?>
    160178
    161             <!-- ✅ FAQ TAB:  FAQ prompts -->
     179            <!-- ✅ FAQ TAB: FAQ prompts -->
    162180            <?php if ($current_tab === 'faq'): ?>
    163181                <input type="hidden" name="aicont_plugin_faq_prompt_custom" value="<?php echo esc_attr($faq_prompt_custom); ?>">
    164                 <?php if ($is_pro_active): ?>
    165                     <input type="hidden" name="aicont_plugin_faq_product_prompt_custom" value="<?php echo esc_attr($faq_product_prompt_custom); ?>">
    166                 <?php endif; ?>
     182                <input type="hidden" name="aicont_plugin_faq_page_prompt_custom" value="<?php echo esc_attr($faq_page_prompt_custom); ?>">
     183                <input type="hidden" name="aicont_plugin_faq_product_prompt_custom" value="<?php echo esc_attr($faq_product_prompt_custom); ?>">
    167184                <?php if ($template_type === 'custom'): ?>
    168185                    <input type="hidden" name="aicont_plugin_faq_article_id" value="<?php echo esc_attr($article_id); ?>">
    169186                    <input type="hidden" name="aicont_plugin_faq_question_id" value="<?php echo esc_attr($question_id); ?>">
    170187                    <input type="hidden" name="aicont_plugin_faq_answer_id" value="<?php echo esc_attr($answer_id); ?>">
    171                     <?php if ($is_pro_active): ?>
    172                         <input type="hidden" name="aicont_plugin_faq_product_article_id" value="<?php echo esc_attr($faq_product_article_id); ?>">
    173                         <input type="hidden" name="aicont_plugin_faq_product_question_id" value="<?php echo esc_attr($faq_product_question_id); ?>">
    174                         <input type="hidden" name="aicont_plugin_faq_product_answer_id" value="<?php echo esc_attr($faq_product_answer_id); ?>">
    175                     <?php endif; ?>
     188                    <input type="hidden" name="aicont_plugin_faq_page_article_id" value="<?php echo esc_attr($page_id); ?>">
     189                    <input type="hidden" name="aicont_plugin_faq_page_question_id" value="<?php echo esc_attr($page_question_id); ?>">
     190                    <input type="hidden" name="aicont_plugin_faq_page_answer_id" value="<?php echo esc_attr($page_answer_id); ?>">
     191                    <input type="hidden" name="aicont_plugin_faq_product_article_id" value="<?php echo esc_attr($faq_product_article_id); ?>">
     192                    <input type="hidden" name="aicont_plugin_faq_product_question_id" value="<?php echo esc_attr($faq_product_question_id); ?>">
     193                    <input type="hidden" name="aicont_plugin_faq_product_answer_id" value="<?php echo esc_attr($faq_product_answer_id); ?>">
    176194                <?php endif; ?>
    177195               
    178                 <!-- ✅ PRESERVE:  prompts settings -->
     196                <!-- ✅ PRESERVE: Other prompts and settings -->
    179197                <input type="hidden" name="aicont_plugin_template_type" value="<?php echo esc_attr($template_type); ?>">
    180198                <input type="hidden" name="aicont_plugin_site_language" value="<?php echo esc_attr($site_language); ?>">
    181199                <input type="hidden" name="aicont_plugin_site_title" value="<?php echo esc_attr($site_title); ?>">
    182200                <input type="hidden" name="aicont_plugin_content_prompt_custom" value="<?php echo esc_attr($content_prompt_custom); ?>">
     201                <input type="hidden" name="aicont_plugin_content_page_prompt_custom" value="<?php echo esc_attr($content_page_prompt_custom); ?>">
     202                <input type="hidden" name="aicont_plugin_content_product_prompt_custom" value="<?php echo esc_attr($content_product_prompt_custom); ?>">
     203                <input type="hidden" name="aicont_plugin_short_description_prompt_custom" value="<?php echo esc_attr($short_description_prompt_custom); ?>">
    183204                <input type="hidden" name="aicont_plugin_seo_title_prompt_custom" value="<?php echo esc_attr($seo_title_prompt_custom); ?>">
     205                <input type="hidden" name="aicont_plugin_seo_page_title_prompt_custom" value="<?php echo esc_attr($seo_page_title_prompt_custom); ?>">
     206                <input type="hidden" name="aicont_plugin_seo_product_title_prompt_custom" value="<?php echo esc_attr($seo_product_title_prompt_custom); ?>">
    184207                <input type="hidden" name="aicont_plugin_seo_meta_prompt_custom" value="<?php echo esc_attr($seo_meta_prompt_custom); ?>">
    185                 <?php if ($is_pro_active): ?>
    186                     <input type="hidden" name="aicont_plugin_content_product_prompt_custom" value="<?php echo esc_attr($content_product_prompt_custom); ?>">
    187                     <input type="hidden" name="aicont_plugin_short_description_prompt_custom" value="<?php echo esc_attr($short_description_prompt_custom); ?>">
    188                     <input type="hidden" name="aicont_plugin_seo_title_product_prompt_custom" value="<?php echo esc_attr($seo_title_product_prompt_custom); ?>">
    189                     <input type="hidden" name="aicont_plugin_seo_meta_product_prompt_custom" value="<?php echo esc_attr($seo_meta_product_prompt_custom); ?>">
    190                 <?php endif; ?>
    191             <?php endif; ?>
    192 
    193             <!-- ✅ SEO TITLE TAB:  SEO Title prompts -->
     208                <input type="hidden" name="aicont_plugin_seo_meta_page_prompt_custom" value="<?php echo esc_attr($seo_meta_page_prompt_custom); ?>">
     209                <input type="hidden" name="aicont_plugin_seo_meta_product_prompt_custom" value="<?php echo esc_attr($seo_meta_product_prompt_custom); ?>">
     210            <?php endif; ?>
     211
     212            <!-- ✅ SEO TITLE TAB: SEO Title prompts -->
    194213            <?php if ($current_tab === 'seo-title'): ?>
    195214                <input type="hidden" name="aicont_plugin_seo_title_prompt_custom" value="<?php echo esc_attr($seo_title_prompt_custom); ?>">
    196                 <?php if ($is_pro_active): ?>
    197                     <input type="hidden" name="aicont_plugin_seo_title_product_prompt_custom" value="<?php echo esc_attr($seo_title_product_prompt_custom); ?>">
    198                 <?php endif; ?>
    199                
    200                 <!-- ✅ PRESERVE:  prompts settings  -->
     215                <input type="hidden" name="aicont_plugin_seo_page_title_prompt_custom" value="<?php echo esc_attr($seo_page_title_prompt_custom); ?>">
     216                <input type="hidden" name="aicont_plugin_seo_product_title_prompt_custom" value="<?php echo esc_attr($seo_product_title_prompt_custom); ?>">
     217               
     218                <!-- ✅ PRESERVE: Other prompts and settings -->
    201219                <input type="hidden" name="aicont_plugin_template_type" value="<?php echo esc_attr($template_type); ?>">
    202220                <input type="hidden" name="aicont_plugin_site_language" value="<?php echo esc_attr($site_language); ?>">
    203221                <input type="hidden" name="aicont_plugin_site_title" value="<?php echo esc_attr($site_title); ?>">
    204222                <input type="hidden" name="aicont_plugin_content_prompt_custom" value="<?php echo esc_attr($content_prompt_custom); ?>">
     223                <input type="hidden" name="aicont_plugin_content_page_prompt_custom" value="<?php echo esc_attr($content_page_prompt_custom); ?>">
     224                <input type="hidden" name="aicont_plugin_content_product_prompt_custom" value="<?php echo esc_attr($content_product_prompt_custom); ?>">
     225                <input type="hidden" name="aicont_plugin_short_description_prompt_custom" value="<?php echo esc_attr($short_description_prompt_custom); ?>">
    205226                <input type="hidden" name="aicont_plugin_faq_prompt_custom" value="<?php echo esc_attr($faq_prompt_custom); ?>">
     227                <input type="hidden" name="aicont_plugin_faq_page_prompt_custom" value="<?php echo esc_attr($faq_page_prompt_custom); ?>">
     228                <input type="hidden" name="aicont_plugin_faq_product_prompt_custom" value="<?php echo esc_attr($faq_product_prompt_custom); ?>">
    206229                <input type="hidden" name="aicont_plugin_seo_meta_prompt_custom" value="<?php echo esc_attr($seo_meta_prompt_custom); ?>">
    207                 <?php if ($is_pro_active): ?>
    208                     <input type="hidden" name="aicont_plugin_content_product_prompt_custom" value="<?php echo esc_attr($content_product_prompt_custom); ?>">
    209                     <input type="hidden" name="aicont_plugin_short_description_prompt_custom" value="<?php echo esc_attr($short_description_prompt_custom); ?>">
    210                     <input type="hidden" name="aicont_plugin_faq_product_prompt_custom" value="<?php echo esc_attr($faq_product_prompt_custom); ?>">
    211                     <input type="hidden" name="aicont_plugin_seo_meta_product_prompt_custom" value="<?php echo esc_attr($seo_meta_product_prompt_custom); ?>">
    212                 <?php endif; ?>
    213                
    214                 <!-- ✅ PRESERVE:  ACF fields -->
     230                <input type="hidden" name="aicont_plugin_seo_meta_page_prompt_custom" value="<?php echo esc_attr($seo_meta_page_prompt_custom); ?>">
     231                <input type="hidden" name="aicont_plugin_seo_meta_product_prompt_custom" value="<?php echo esc_attr($seo_meta_product_prompt_custom); ?>">
     232               
     233                <!-- ✅ PRESERVE: ACF fields -->
    215234                <?php if ($template_type === 'custom'): ?>
    216235                    <input type="hidden" name="aicont_plugin_faq_article_id" value="<?php echo esc_attr($article_id); ?>">
    217236                    <input type="hidden" name="aicont_plugin_faq_question_id" value="<?php echo esc_attr($question_id); ?>">
    218237                    <input type="hidden" name="aicont_plugin_faq_answer_id" value="<?php echo esc_attr($answer_id); ?>">
    219                     <?php if ($is_pro_active): ?>
    220                         <input type="hidden" name="aicont_plugin_faq_product_article_id" value="<?php echo esc_attr($faq_product_article_id); ?>">
    221                         <input type="hidden" name="aicont_plugin_faq_product_question_id" value="<?php echo esc_attr($faq_product_question_id); ?>">
    222                         <input type="hidden" name="aicont_plugin_faq_product_answer_id" value="<?php echo esc_attr($faq_product_answer_id); ?>">
    223                     <?php endif; ?>
     238                    <input type="hidden" name="aicont_plugin_faq_page_article_id" value="<?php echo esc_attr($page_id); ?>">
     239                    <input type="hidden" name="aicont_plugin_faq_page_question_id" value="<?php echo esc_attr($page_question_id); ?>">
     240                    <input type="hidden" name="aicont_plugin_faq_page_answer_id" value="<?php echo esc_attr($page_answer_id); ?>">
     241                    <input type="hidden" name="aicont_plugin_faq_product_article_id" value="<?php echo esc_attr($faq_product_article_id); ?>">
     242                    <input type="hidden" name="aicont_plugin_faq_product_question_id" value="<?php echo esc_attr($faq_product_question_id); ?>">
     243                    <input type="hidden" name="aicont_plugin_faq_product_answer_id" value="<?php echo esc_attr($faq_product_answer_id); ?>">
    224244                <?php endif; ?>
    225245            <?php endif; ?>
    226246
    227             <!-- ✅ SEO META TAB:  SEO Meta prompts -->
     247            <!-- ✅ SEO META TAB: SEO Meta prompts -->
    228248            <?php if ($current_tab === 'seo-meta'): ?>
    229249                <input type="hidden" name="aicont_plugin_seo_meta_prompt_custom" value="<?php echo esc_attr($seo_meta_prompt_custom); ?>">
    230                 <?php if ($is_pro_active): ?>
    231                     <input type="hidden" name="aicont_plugin_seo_meta_product_prompt_custom" value="<?php echo esc_attr($seo_meta_product_prompt_custom); ?>">
    232                 <?php endif; ?>
    233                
    234                 <!-- ✅ PRESERVE:  prompts settings  -->
     250                <input type="hidden" name="aicont_plugin_seo_meta_page_prompt_custom" value="<?php echo esc_attr($seo_meta_page_prompt_custom); ?>">
     251                <input type="hidden" name="aicont_plugin_seo_meta_product_prompt_custom" value="<?php echo esc_attr($seo_meta_product_prompt_custom); ?>">
     252               
     253                <!-- ✅ PRESERVE: Other prompts and settings -->
    235254                <input type="hidden" name="aicont_plugin_template_type" value="<?php echo esc_attr($template_type); ?>">
    236255                <input type="hidden" name="aicont_plugin_site_language" value="<?php echo esc_attr($site_language); ?>">
    237256                <input type="hidden" name="aicont_plugin_site_title" value="<?php echo esc_attr($site_title); ?>">
    238257                <input type="hidden" name="aicont_plugin_content_prompt_custom" value="<?php echo esc_attr($content_prompt_custom); ?>">
     258                <input type="hidden" name="aicont_plugin_content_page_prompt_custom" value="<?php echo esc_attr($content_page_prompt_custom); ?>">
     259                <input type="hidden" name="aicont_plugin_content_product_prompt_custom" value="<?php echo esc_attr($content_product_prompt_custom); ?>">
     260                <input type="hidden" name="aicont_plugin_short_description_prompt_custom" value="<?php echo esc_attr($short_description_prompt_custom); ?>">
    239261                <input type="hidden" name="aicont_plugin_faq_prompt_custom" value="<?php echo esc_attr($faq_prompt_custom); ?>">
     262                <input type="hidden" name="aicont_plugin_faq_page_prompt_custom" value="<?php echo esc_attr($faq_page_prompt_custom); ?>">
     263                <input type="hidden" name="aicont_plugin_faq_product_prompt_custom" value="<?php echo esc_attr($faq_product_prompt_custom); ?>">
    240264                <input type="hidden" name="aicont_plugin_seo_title_prompt_custom" value="<?php echo esc_attr($seo_title_prompt_custom); ?>">
    241                 <?php if ($is_pro_active): ?>
    242                     <input type="hidden" name="aicont_plugin_content_product_prompt_custom" value="<?php echo esc_attr($content_product_prompt_custom); ?>">
    243                     <input type="hidden" name="aicont_plugin_short_description_prompt_custom" value="<?php echo esc_attr($short_description_prompt_custom); ?>">
    244                     <input type="hidden" name="aicont_plugin_faq_product_prompt_custom" value="<?php echo esc_attr($faq_product_prompt_custom); ?>">
    245                     <input type="hidden" name="aicont_plugin_seo_title_product_prompt_custom" value="<?php echo esc_attr($seo_title_product_prompt_custom); ?>">
    246                 <?php endif; ?>
    247                
    248                 <!-- ✅ PRESERVE:  ACF fields -->
     265                <input type="hidden" name="aicont_plugin_seo_page_title_prompt_custom" value="<?php echo esc_attr($seo_page_title_prompt_custom); ?>">
     266                <input type="hidden" name="aicont_plugin_seo_product_title_prompt_custom" value="<?php echo esc_attr($seo_product_title_prompt_custom); ?>">
     267               
     268                <!-- ✅ PRESERVE: ACF fields -->
    249269                <?php if ($template_type === 'custom'): ?>
    250270                    <input type="hidden" name="aicont_plugin_faq_article_id" value="<?php echo esc_attr($article_id); ?>">
    251271                    <input type="hidden" name="aicont_plugin_faq_question_id" value="<?php echo esc_attr($question_id); ?>">
    252272                    <input type="hidden" name="aicont_plugin_faq_answer_id" value="<?php echo esc_attr($answer_id); ?>">
    253                     <?php if ($is_pro_active): ?>
    254                         <input type="hidden" name="aicont_plugin_faq_product_article_id" value="<?php echo esc_attr($faq_product_article_id); ?>">
    255                         <input type="hidden" name="aicont_plugin_faq_product_question_id" value="<?php echo esc_attr($faq_product_question_id); ?>">
    256                         <input type="hidden" name="aicont_plugin_faq_product_answer_id" value="<?php echo esc_attr($faq_product_answer_id); ?>">
    257                     <?php endif; ?>
     273                    <input type="hidden" name="aicont_plugin_faq_page_article_id" value="<?php echo esc_attr($page_id); ?>">
     274                    <input type="hidden" name="aicont_plugin_faq_page_question_id" value="<?php echo esc_attr($page_question_id); ?>">
     275                    <input type="hidden" name="aicont_plugin_faq_page_answer_id" value="<?php echo esc_attr($page_answer_id); ?>">
     276                    <input type="hidden" name="aicont_plugin_faq_product_article_id" value="<?php echo esc_attr($faq_product_article_id); ?>">
     277                    <input type="hidden" name="aicont_plugin_faq_product_question_id" value="<?php echo esc_attr($faq_product_question_id); ?>">
     278                    <input type="hidden" name="aicont_plugin_faq_product_answer_id" value="<?php echo esc_attr($faq_product_answer_id); ?>">
    258279                <?php endif; ?>
    259280            <?php endif; ?>
     
    341362    $prompt_fields = [
    342363        'content_prompt_custom',
     364        'content_page_prompt_custom',
    343365        'content_product_prompt_custom',
    344366        'short_description_prompt_custom',
    345367        'faq_prompt_custom',
     368        'faq_page_prompt_custom',
    346369        'faq_product_prompt_custom',
    347370        'seo_title_prompt_custom',
    348         'seo_title_product_prompt_custom',
     371        'seo_page_title_prompt_custom',
     372        'seo_product_title_prompt_custom',
    349373        'seo_meta_prompt_custom',
     374        'seo_meta_page_prompt_custom',
    350375        'seo_meta_product_prompt_custom'
    351376    ];
     
    366391    // ACF fields
    367392    $acf_fields = [
    368         'faq_article_id', 'faq_question_id', 'faq_answer_id',
    369         'faq_product_article_id', 'faq_product_question_id', 'faq_product_answer_id'
     393        'faq_article_id',
     394        'faq_question_id',
     395        'faq_answer_id',
     396        'faq_page_article_id',
     397        'faq_page_question_id',
     398        'faq_page_answer_id',
     399        'faq_product_article_id',
     400        'faq_product_question_id',
     401        'faq_product_answer_id'
    370402    ];
    371403    foreach ($acf_fields as $field) {
  • aicontify/trunk/settings/tab-content.php

    r3396224 r3428884  
    5353                    <?php esc_html_e('Leave empty to use default.', 'aicontify'); ?><br>
    5454                    <?php printf(
    55                         /* translators: %s: {keyword} placeholder */
     55                        /* translators: %s: {keyword} placeholder */
    5656                        esc_html__('If filled, must include %s.', 'aicontify'),
    5757                        '<code>' . esc_html('{keyword}') . '</code>'
     
    6464    <?php
    6565    if ($is_pro_active): ?>
     66
     67        <h3><?php esc_html_e('Page Settings', 'aicontify'); ?></h3>
     68        <table class="form-table">
     69            <tr>
     70                <th scope="row">
     71                    <label for="aicont_plugin_content_page_prompt_custom">
     72                        <?php esc_html_e('Custom Prompt (Optional)', 'aicontify'); ?>
     73                    </label>
     74                </th>
     75                <td>
     76                    <textarea
     77                        id="aicont_plugin_content_page_prompt_custom"
     78                        name="aicont_plugin_content_page_prompt_custom"
     79                        rows="5"
     80                        class="widefat"
     81                    ><?php echo esc_textarea(get_option('aicont_plugin_content_page_prompt_custom', '')); ?></textarea>
     82                    <p class="description">
     83                        <?php esc_html_e('Leave empty to use default.', 'aicontify'); ?><br>
     84                        <?php printf(
     85                            /* translators: %s: {keyword} placeholder */
     86                            esc_html__('If filled, must include %s.', 'aicontify'),
     87                            '<code>' . esc_html('{keyword}') . '</code>'
     88                        ); ?>
     89                    </p>
     90                </td>
     91            </tr>
     92        </table>
     93
    6694        <h3><?php esc_html_e('Product Settings', 'aicontify'); ?></h3>
    6795        <table class="form-table">
     
    82110                        <?php esc_html_e('Leave empty to use default.', 'aicontify'); ?><br>
    83111                        <?php printf(
    84                             /* translators: %s: {keyword} placeholder */
     112                            /* translators: %s: {keyword} placeholder */
    85113                            esc_html__('If filled, must include %s.', 'aicontify'),
    86114                            '<code>' . esc_html('{keyword}') . '</code>'
     
    91119        </table>
    92120
    93         <h3><?php esc_html_e('Short Description', 'aicontify'); ?></h3>
     121        <h3><?php esc_html_e('Short Description product', 'aicontify'); ?></h3>
    94122        <table class="form-table">
    95123            <tr>
     
    109137                        <?php esc_html_e('Leave empty to use default.', 'aicontify'); ?><br>
    110138                        <?php printf(
    111                             /* translators: %s: {keyword} placeholder */
     139                            /* translators: %s: {keyword} placeholder */
    112140                            esc_html__('If filled, must include %s. Max 300 chars.', 'aicontify'),
    113141                            '<code>' . esc_html('{keyword}') . '</code>'
  • aicontify/trunk/settings/tab-faq.php

    r3396224 r3428884  
    5353                    <?php esc_html_e('Leave empty to use default.', 'aicontify'); ?><br>
    5454                    <?php printf(
    55                         /* translators: %s: {keyword} placeholder */
     55                        /* translators: %s: {keyword} placeholder */
    5656                        esc_html__('If filled, must include %s.', 'aicontify'),
    5757                        '<code>' . esc_html('{keyword}') . '</code>'
     
    118118
    119119    <?php if ($is_pro_active): ?>
     120
     121        <h3><?php esc_html_e('Page Settings', 'aicontify'); ?></h3>
     122        <table class="form-table">
     123            <tr>
     124                <th scope="row">
     125                    <label for="aicont_plugin_faq_page_prompt_custom">
     126                        <?php esc_html_e('Custom Prompt (Optional)', 'aicontify'); ?>
     127                    </label>
     128                </th>
     129                <td>
     130                    <textarea
     131                        id="aicont_plugin_faq_page_prompt_custom"
     132                        name="aicont_plugin_faq_page_prompt_custom"
     133                        rows="5"
     134                        class="widefat"
     135                    ><?php echo esc_textarea(get_option('aicont_plugin_faq_page_prompt_custom', '')); ?></textarea>
     136                    <p class="description">
     137                        <?php esc_html_e('Leave empty to use default.', 'aicontify'); ?><br>
     138                        <?php printf(
     139                            /* translators: %s: {keyword} placeholder */
     140                            esc_html__('If filled, must include %s.', 'aicontify'),
     141                            '<code>' . esc_html('{keyword}') . '</code>'
     142                        ); ?>
     143                    </p>
     144                </td>
     145            </tr>
     146
     147            <tr class="custom-template-fields" style="display: <?php echo $show_custom ? 'table-row' : 'none'; ?>;">
     148                <th scope="row">
     149                    <label for="aicont_plugin_faq_page_article_id">
     150                        <?php esc_html_e('Page  ID', 'aicontify'); ?>
     151                    </label>
     152                </th>
     153                <td>
     154                    <input
     155                        type="text"
     156                        id="aicont_plugin_faq_page_article_id"
     157                        name="aicont_plugin_faq_page_article_id"
     158                        value="<?php echo esc_attr(get_option('aicont_plugin_faq_page_article_id', '')); ?>"
     159                        class="regular-text"
     160                    />
     161                    <p class="description"><?php esc_html_e('ACF repeater field ID for page.', 'aicontify'); ?></p>
     162                </td>
     163            </tr>
     164            <tr class="custom-template-fields" style="display: <?php echo $show_custom ? 'table-row' : 'none'; ?>;">
     165                <th scope="row">
     166                    <label for="aicont_plugin_faq_page_question_id">
     167                        <?php esc_html_e('Page Question ID', 'aicontify'); ?>
     168                    </label>
     169                </th>
     170                <td>
     171                    <input
     172                        type="text"
     173                        id="aicont_plugin_faq_page_question_id"
     174                        name="aicont_plugin_faq_page_question_id"
     175                        value="<?php echo esc_attr(get_option('aicont_plugin_faq_page_question_id', '')); ?>"
     176                        class="regular-text"
     177                    />
     178                    <p class="description"><?php esc_html_e('ACF field ID for page question.', 'aicontify'); ?></p>
     179                </td>
     180            </tr>
     181            <tr class="custom-template-fields" style="display: <?php echo $show_custom ? 'table-row' : 'none'; ?>;">
     182                <th scope="row">
     183                    <label for="aicont_plugin_faq_page_answer_id">
     184                        <?php esc_html_e('Page Answer ID', 'aicontify'); ?>
     185                    </label>
     186                </th>
     187                <td>
     188                    <input
     189                        type="text"
     190                        id="aicont_plugin_faq_page_answer_id"
     191                        name="aicont_plugin_faq_page_answer_id"
     192                        value="<?php echo esc_attr(get_option('aicont_plugin_faq_page_answer_id', '')); ?>"
     193                        class="regular-text"
     194                    />
     195                    <p class="description"><?php esc_html_e('ACF field ID for page answer.', 'aicontify'); ?></p>
     196                </td>
     197            </tr>
     198        </table>
     199
    120200        <h3><?php esc_html_e('Product Settings', 'aicontify'); ?></h3>
    121201        <table class="form-table">
     
    136216                        <?php esc_html_e('Leave empty to use default.', 'aicontify'); ?><br>
    137217                        <?php printf(
    138                             /* translators: %s: {keyword} placeholder */
     218                            /* translators: %s: {keyword} placeholder */
    139219                            esc_html__('If filled, must include %s.', 'aicontify'),
    140220                            '<code>' . esc_html('{keyword}') . '</code>'
     
    147227                <th scope="row">
    148228                    <label for="aicont_plugin_faq_product_article_id">
    149                         <?php esc_html_e('Product Article ID', 'aicontify'); ?>
     229                        <?php esc_html_e('Product ID', 'aicontify'); ?>
    150230                    </label>
    151231                </th>
  • aicontify/trunk/settings/tab-seo-meta.php

    r3396224 r3428884  
    6565
    6666    <?php if ($is_pro_active): ?>
     67
     68        <h3><?php esc_html_e('Page Settings', 'aicontify'); ?></h3>
     69        <table class="form-table">
     70            <tr>
     71                <th scope="row">
     72                    <label for="aicont_plugin_seo_meta_page_prompt_custom">
     73                        <?php esc_html_e('Custom Prompt (Optional)', 'aicontify'); ?>
     74                    </label>
     75                </th>
     76                <td>
     77                    <textarea
     78                        id="aicont_plugin_seo_meta_page_prompt_custom"
     79                        name="aicont_plugin_seo_meta_page_prompt_custom"
     80                        rows="5"
     81                        class="widefat"
     82                    ><?php echo esc_textarea(get_option('aicont_plugin_seo_meta_page_prompt_custom', '')); ?></textarea>
     83                    <p class="description">
     84                        <?php esc_html_e('Leave empty to use default.', 'aicontify'); ?><br>
     85                        <?php
     86                        printf(
     87                            /* translators: %s: {keyword} placeholder */
     88                            esc_html__('If filled, must include %s.', 'aicontify'),
     89                            '<code>' . esc_html('{keyword}') . '</code>'
     90                        );
     91                        ?>
     92                    </p>
     93                </td>
     94            </tr>
     95        </table>
     96
    6797        <h3><?php esc_html_e('Product Settings', 'aicontify'); ?></h3>
    6898        <table class="form-table">
  • aicontify/trunk/settings/tab-seo-title.php

    r3396224 r3428884  
    5353                    <?php esc_html_e('Leave empty to use default.', 'aicontify'); ?><br>
    5454                    <?php printf(
    55                         /* translators: %s: {keyword} placeholder */
     55                        /* translators: %s: {keyword} placeholder */
    5656                        esc_html__('If filled, must include %s.', 'aicontify'),
    5757                        '<code>' . esc_html('{keyword}') . '</code>'
     
    6363
    6464    <?php if ($is_pro_active): ?>
     65
     66        <h3><?php esc_html_e('Page Settings', 'aicontify'); ?></h3>
     67        <table class="form-table">
     68            <tr>
     69                <th scope="row">
     70                    <label for="aicont_plugin_seo_page_title_prompt_custom">
     71                        <?php esc_html_e('Custom Prompt (Optional)', 'aicontify'); ?>
     72                    </label>
     73                </th>
     74                <td>
     75                    <textarea
     76                        id="aicont_plugin_seo_page_title_prompt_custom"
     77                        name="aicont_plugin_seo_page_title_prompt_custom"
     78                        rows="5"
     79                        class="widefat"
     80                    ><?php echo esc_textarea(get_option('aicont_plugin_seo_page_title_prompt_custom', '')); ?></textarea>
     81                    <p class="description">
     82                        <?php esc_html_e('Leave empty to use default.', 'aicontify'); ?><br>
     83                        <?php printf(
     84                            /* translators: %s: {keyword} placeholder */
     85                            esc_html__('If filled, must include %s.', 'aicontify'),
     86                            '<code>' . esc_html('{keyword}') . '</code>'
     87                        ); ?>
     88                    </p>
     89                </td>
     90            </tr>
     91        </table>
     92
    6593        <h3><?php esc_html_e('Product Settings', 'aicontify'); ?></h3>
    6694        <table class="form-table">
     
    7199                    </label>
    72100                </th>
    73                 <td>
     101                <td> 
    74102                    <textarea
    75103                        id="aicont_plugin_seo_title_product_prompt_custom"
     
    81109                        <?php esc_html_e('Leave empty to use default.', 'aicontify'); ?><br>
    82110                        <?php printf(
    83                             /* translators: %s: {keyword} placeholder */
     111                            /* translators: %s: {keyword} placeholder */
    84112                            esc_html__('If filled, must include %s.', 'aicontify'),
    85113                            '<code>' . esc_html('{keyword}') . '</code>'
  • aicontify/trunk/tabsPosts.php

    r3402369 r3428884  
    4848        <!-- Tabs Navigation -->
    4949        <h2 class="nav-tab-wrapper aicont-tabs">
    50             <a href="#tab-main-content" data-tab="main-content" class="nav-tab nav-tab-active">
     50            <a href="#tab-title-suggestion" data-tab="title-suggestion" class="nav-tab nav-tab-active">
     51                <?php esc_html_e('Title Suggestion Generation', 'aicontify'); ?>
     52            </a>
     53            <a href="#tab-main-content" data-tab="main-content" class="nav-tab">
    5154                <?php esc_html_e('Main Content Generation', 'aicontify'); ?>
    5255            </a>
     
    6669
    6770        <div class="aicont-tabs-content">
     71            <!-- Title Suggestion -->
     72            <div id="tab-title-suggestion" class="tab-content aicont-tab-panel active" style="display: block;">
     73                <div class="aicont-main-guide">
     74                    <h4><?php esc_html_e( 'How to Generate Title Suggestions with One Click', 'aicontify' ); ?></h4>
     75                   
     76                    <ul class="aicont-steps">
     77                        <li><strong>1.</strong>
     78                            <?php esc_html_e( 'Enter the post title at the top of the page.', 'aicontify' ); ?>
     79                        </li>
     80                        <li><strong>2.</strong>
     81                            <?php esc_html_e( 'Fill in the "Keyword / Topic" field with your main keyword or topic.', 'aicontify' ); ?>
     82                        </li>
     83                        <li><strong>3.</strong>
     84                            <?php esc_html_e( 'Click "Save Draft" to save your changes.', 'aicontify' ); ?>
     85                        </li>
     86                        <li><strong>4.</strong>
     87                            <?php esc_html_e( 'Finally, click the blue button "Generate Title Suggestions".', 'aicontify' ); ?>
     88                        </li>
     89                    </ul>
     90
     91                    <p class="aicont-tip">
     92                        <?php esc_html_e( 'You will receive several title suggestions - choose the best one and update your post title!', 'aicontify' ); ?>
     93                    </p>
     94                </div>
     95
     96                <button type="button" class="button button-primary button-hero aicont-btn" id="aicont-generate-title-suggestion-btn" data-postid="<?php echo esc_attr($post->ID); ?>">
     97                    <?php esc_html_e('Generate Title Suggestions', 'aicontify'); ?>
     98                </button>
     99
     100                <div id="aicont-title-suggestion-loading-box" class="aicont-loading" style="display: none;">
     101                    <p class="notice notice-warning aicont-notice">
     102                        <?php esc_html_e('Please do not refresh the page until the operation is complete.', 'aicontify'); ?>
     103                    </p>
     104                    <div class="aicont-loader">
     105                        <span></span><span></span><span></span>
     106                    </div>
     107                </div>
     108
     109                <div id="aicont-title-suggestion-result" class="aicont-result"></div>
     110            </div>
     111
    68112            <!-- Main Content -->
    69             <div id="tab-main-content" class="tab-content aicont-tab-panel active" style="display: block;">
     113            <div id="tab-main-content" class="tab-content aicont-tab-panel" style="display: none;">
    70114                <div class="aicont-main-guide">
    71115                    <h4><?php esc_html_e( 'How to Generate Main Post Content with One Click?', 'aicontify' ); ?></h4>
     
    292336            <div id="tab-seo-title" class="tab-content aicont-tab-panel" style="display: none;">
    293337                <?php
    294                 // --- Yoast Detection ---
     338                    // --- Yoast & Rank Math Detection ---
     339                    $yoast_active = false;
     340                    $rankmath_active = false;
     341
     342                    if (!function_exists('is_plugin_active')) {
     343                        include_once ABSPATH . 'wp-admin/includes/plugin.php';
     344                    }
     345
     346                    if (is_plugin_active('wordpress-seo/wp-seo.php') || is_plugin_active('wordpress-seo-premium/wp-seo-premium.php')) {
     347                        $yoast_active = true;
     348                    } elseif (class_exists('WPSEO_Options') || class_exists('WPSEO_Admin') || defined('WPSEO_VERSION')) {
     349                        $yoast_active = true;
     350                    }
     351
     352                    if (is_plugin_active('seo-by-rank-math/rank-math.php')) {
     353                        $rankmath_active = true;
     354                    } elseif (class_exists('RankMath\Core') || defined('RANK_MATH_VERSION')) {
     355                        $rankmath_active = true;
     356                    }
     357
     358                    if ($yoast_active || $rankmath_active):
     359                    ?>
     360                        <div class="aicont-main-guide">
     361                            <h4><?php esc_html_e( 'How to Generate SEO Title & Meta Description with One Click', 'aicontify' ); ?></h4>
     362                           
     363                            <ul class="aicont-steps">
     364                                <li><strong>1.</strong>
     365                                    <?php esc_html_e( 'Enter the post title at the top of the page.', 'aicontify' ); ?>
     366                                </li>
     367                                <li><strong>2.</strong>
     368                                    <?php esc_html_e( 'Fill in the "Keyword / Topic" field with your main focus keyword.', 'aicontify' ); ?>
     369                                </li>
     370                                <li><strong>3.</strong>
     371                                    <?php esc_html_e( 'Click "Save Draft" to save the post.', 'aicontify' ); ?>
     372                                </li>
     373                                <li><strong>4.</strong>
     374                                    <?php esc_html_e( 'Click the blue button "Generate SEO Title & Meta".', 'aicontify' ); ?>
     375                                </li>
     376                            </ul>
     377
     378                            <p class="aicont-tip">
     379                                <?php esc_html_e( 'After completion, the full SEO-optimized content will automatically appear in the editor — you can edit it or publish directly!', 'aicontify' ); ?>
     380                            </p>
     381
     382                            <?php if ($yoast_active && $rankmath_active): ?>
     383                                <p class="aicont-plugin-info" style="background-color: #e7f3ff; border-left: 4px solid #0073aa; padding: 10px; margin-top: 15px; border-radius: 3px;">
     384                                    <strong><?php esc_html_e('Both plugins detected!', 'aicontify'); ?></strong><br>
     385                                    <?php esc_html_e('Priority: Yoast SEO will be used. If Yoast is disabled, Rank Math will be used.', 'aicontify'); ?>
     386                                </p>
     387                            <?php elseif ($rankmath_active): ?>
     388                                <p class="aicont-plugin-info" style="background-color: #fff8e5; border-left: 4px solid #ffb81c; padding: 10px; margin-top: 15px; border-radius: 3px;">
     389                                    <strong><?php esc_html_e('Rank Math SEO detected!', 'aicontify'); ?></strong><br>
     390                                    <?php esc_html_e('Your SEO titles will be saved in Rank Math.', 'aicontify'); ?>
     391                                </p>
     392                            <?php else: ?>
     393                                <p class="aicont-plugin-info" style="background-color: #fff8e5; border-left: 4px solid #ffb81c; padding: 10px; margin-top: 15px; border-radius: 3px;">
     394                                    <strong><?php esc_html_e('Yoast SEO detected!', 'aicontify'); ?></strong><br>
     395                                    <?php esc_html_e('Your SEO titles will be saved in Yoast.', 'aicontify'); ?>
     396                                </p>
     397                            <?php endif; ?>
     398                        </div>
     399                        <button type="button" class="button button-primary button-hero aicont-btn" id="aicont-generate-seo-title-btn" data-postid="<?php echo esc_attr($post->ID); ?>">
     400                            <?php esc_html_e('Generate SEO Title', 'aicontify'); ?>
     401                        </button>
     402                        <div id="aicont-seo-title-result" class="aicont-result"></div>
     403                        <div id="aicont-seo-title-loading-box" class="aicont-loading">
     404                            <p class="notice notice-warning aicont-notice">
     405                                <?php esc_html_e('Please do not refresh the page until the operation is complete.', 'aicontify'); ?>
     406                            </p>
     407                            <div class="aicont-loader">
     408                                <span></span><span></span><span></span>
     409                            </div>
     410                        </div>
     411
     412                        <!-- Custom Prompt Section -->
     413                        <div class="aicont-custom-prompt-section" style="margin-top: 30px; padding-top: 20px; border-top: 1px solid #ddd;">
     414                            <h3><?php esc_html_e('Custom Prompt Settings', 'aicontify'); ?></h3>
     415                           
     416                            <table class="form-table">
     417                                <tr>
     418                                    <th scope="row">
     419                                        <label for="aicont_singlepost_seo_title_prompt_custom">
     420                                            <?php esc_html_e('Custom Prompt for SEO Title Generation', 'aicontify'); ?>
     421                                        </label>
     422                                    </th>
     423                                    <td>
     424                                        <textarea
     425                                            id="aicont_singlepost_seo_title_prompt_custom"
     426                                            name="aicont_singlepost_seo_title_prompt_custom"
     427                                            rows="6"
     428                                            class="widefat"
     429                                        ><?php echo isset($post->ID) ? esc_textarea(get_post_meta($post->ID, 'aicont_singlepost_seo_title_prompt_custom', true)) : ''; ?></textarea>
     430                                       
     431                                        <div class="aicont-main-guide aicont-prompt-help">
     432                                            <p class="aicont-prompt-info">
     433                                                <?php esc_html_e( 'You can leave this field empty → the plugin will use the smart default prompt and give you excellent results.', 'aicontify' ); ?>
     434                                            </p>
     435                                            <p class="aicont-prompt-info">
     436                                                <?php esc_html_e( 'Want even better and more customized results? Write your own instruction here.', 'aicontify' ); ?>
     437                                            </p>
     438                                            <p class="aicont-prompt-footer">
     439                                                <?php esc_html_e( 'The clearer and more precise your prompt, the better and more accurate the result will be!', 'aicontify' ); ?>
     440                                            </p>
     441                                        </div>
     442                                    </td>
     443                                </tr>
     444                            </table>
     445                        </div>
     446
     447                    <?php else: ?>
     448                    <!-- No SEO Plugin Active - Error Notice -->
     449                    <div class="aicont-yoast-error-notice">
     450                        <p class="aicont-error-title">
     451                            <strong><?php esc_html_e('Warning:', 'aicontify'); ?></strong> <?php esc_html_e('SEO Plugin Required', 'aicontify'); ?>
     452                        </p>
     453                        <p class="aicont-error-desc">
     454                            <?php esc_html_e('This feature requires either Yoast SEO or Rank Math to be installed and activated.', 'aicontify'); ?>
     455                        </p>
     456                        <div class="aicont-error-plugins" style="margin-top: 15px; background-color: #f5f5f5; padding: 15px; border-radius: 4px;">
     457                            <p style="margin: 0 0 10px 0;"><strong><?php esc_html_e('Supported SEO Plugins:', 'aicontify'); ?></strong></p>
     458                            <ul style="margin: 0; padding-left: 20px;">
     459                                <li style="margin-bottom: 8px;">
     460                                    <strong>Yoast SEO</strong> - <?php esc_html_e('Free & Premium versions supported', 'aicontify'); ?>
     461                                </li>
     462                                <li style="margin-bottom: 8px;">
     463                                    <strong>Rank Math</strong> - <?php esc_html_e('Free & Premium versions supported', 'aicontify'); ?>
     464                                </li>
     465                            </ul>
     466                        </div>
     467                        <p class="aicont-error-tip" style="margin-top: 15px;">
     468                            <span class="dashicons dashicons-yes" style="color: #28a745;"></span>
     469                            <?php esc_html_e('Install and activate one of the above plugins, then refresh this page.', 'aicontify'); ?>
     470                        </p>
     471                    </div>
     472                <?php endif; ?>
     473            </div>
     474
     475            <!-- Meta Description -->
     476            <div id="tab-seo-description" class="tab-content aicont-tab-panel" style="display: none;">
     477                <?php
     478                // --- Yoast & Rank Math Detection ---
    295479                $yoast_active = false;
     480                $rankmath_active = false;
    296481
    297482                if (!function_exists('is_plugin_active')) {
     
    305490                }
    306491
    307                 if ($yoast_active):
    308                 ?>
    309                     <div class="aicont-main-guide">
    310                         <h4><?php esc_html_e( 'How to Generate SEO Title & Meta Description with One Click', 'aicontify' ); ?></h4>
    311                        
    312                         <ul class="aicont-steps">
    313                             <li><strong>1.</strong>
    314                                 <?php esc_html_e( 'Enter the post title at the top of the page.', 'aicontify' ); ?>
    315                             </li>
    316                             <li><strong>2.</strong>
    317                                 <?php esc_html_e( 'Fill in the "Keyword / Topic" field with your main focus keyword.', 'aicontify' ); ?>
    318                             </li>
    319                             <li><strong>3.</strong>
    320                                 <?php esc_html_e( 'Click "Save Draft" to save the post.', 'aicontify' ); ?>
    321                             </li>
    322                             <li><strong>4.</strong>
    323                                 <?php esc_html_e( 'Click the blue button "Generate SEO Title & Meta".', 'aicontify' ); ?>
    324                             </li>
    325                         </ul>
    326 
    327                         <p class="aicont-tip">
    328                             <?php esc_html_e( 'After completion, the full SEO-optimized content will automatically appear in the editor — you can edit it or publish directly!', 'aicontify' ); ?>
    329                         </p>
    330                     </div>
    331                     <button type="button" class="button button-primary button-hero aicont-btn" id="aicont-generate-seo-title-btn" data-postid="<?php echo esc_attr($post->ID); ?>">
    332                         <?php esc_html_e('Generate SEO Title', 'aicontify'); ?>
    333                     </button>
    334                     <div id="aicont-seo-title-result" class="aicont-result"></div>
    335                     <div id="aicont-seo-title-loading-box" class="aicont-loading">
    336                         <p class="notice notice-warning aicont-notice">
    337                             <?php esc_html_e('Please do not refresh the page until the operation is complete.', 'aicontify'); ?>
    338                         </p>
    339                         <div class="aicont-loader">
    340                             <span></span><span></span><span></span>
    341                         </div>
    342                     </div>
    343 
    344                     <!-- Custom Prompt Section -->
    345                     <div class="aicont-custom-prompt-section" style="margin-top: 30px; padding-top: 20px; border-top: 1px solid #ddd;">
    346                         <h3><?php esc_html_e('Custom Prompt Settings', 'aicontify'); ?></h3>
    347                        
    348                         <table class="form-table">
    349                             <tr>
    350                                 <th scope="row">
    351                                     <label for="aicont_singlepost_seo_title_prompt_custom">
    352                                         <?php esc_html_e('Custom Prompt for SEO Title Generation', 'aicontify'); ?>
    353                                     </label>
    354                                 </th>
    355                                 <td>
    356                                     <textarea
    357                                         id="aicont_singlepost_seo_title_prompt_custom"
    358                                         name="aicont_singlepost_seo_title_prompt_custom"
    359                                         rows="6"
    360                                         class="widefat"
    361                                     ><?php echo isset($post->ID) ? esc_textarea(get_post_meta($post->ID, 'aicont_singlepost_seo_title_prompt_custom', true)) : ''; ?></textarea>
    362                                    
    363                                     <div class="aicont-main-guide aicont-prompt-help">
    364                                         <p class="aicont-prompt-info">
    365                                             <?php esc_html_e( 'You can leave this field empty → the plugin will use the smart default prompt and give you excellent results.', 'aicontify' ); ?>
    366                                         </p>
    367                                         <p class="aicont-prompt-info">
    368                                             <?php esc_html_e( 'Want even better and more customized results? Write your own instruction here.', 'aicontify' ); ?>
    369                                         </p>
    370                                         <p class="aicont-prompt-footer">
    371                                             <?php esc_html_e( 'The clearer and more precise your prompt, the better and more accurate the result will be!', 'aicontify' ); ?>
    372                                         </p>
    373                                     </div>
    374                                 </td>
    375                             </tr>
    376                         </table>
    377                     </div>
    378 
    379                 <?php else: ?>
    380                     <!-- Yoast Not Active - English Error -->
    381                     <div class="aicont-yoast-error-notice">
    382                         <p class="aicont-error-title">
    383                             <strong>Warning:</strong> <?php esc_html_e('Yoast SEO Plugin Required', 'aicontify'); ?>
    384                         </p>
    385                         <p class="aicont-error-desc">
    386                             <?php esc_html_e('This feature requires the Yoast SEO plugin to be installed and activated.', 'aicontify'); ?>
    387                         </p>
    388                         <p class="aicont-error-tip">
    389                             <span class="dashicons dashicons-yes"></span> <?php esc_html_e('After activation, refresh the page.', 'aicontify'); ?>
    390                         </p>
    391                     </div>
    392                 <?php endif; ?>
    393             </div>
    394 
    395             <!-- Meta Description -->
    396             <div id="tab-seo-description" class="tab-content aicont-tab-panel" style="display: none;">
    397                 <?php
    398                 // --- Yoast Detection (Same as SEO Title) ---
    399                 $yoast_active = false;
    400 
    401                 if (!function_exists('is_plugin_active')) {
    402                     include_once ABSPATH . 'wp-admin/includes/plugin.php';
     492                if (is_plugin_active('seo-by-rank-math/rank-math.php')) {
     493                    $rankmath_active = true;
     494                } elseif (class_exists('RankMath\Core') || defined('RANK_MATH_VERSION')) {
     495                    $rankmath_active = true;
    403496                }
    404497
    405                 if (is_plugin_active('wordpress-seo/wp-seo.php') || is_plugin_active('wordpress-seo-premium/wp-seo-premium.php')) {
    406                     $yoast_active = true;
    407                 } elseif (class_exists('WPSEO_Options') || class_exists('WPSEO_Admin') || defined('WPSEO_VERSION')) {
    408                     $yoast_active = true;
    409                 }
    410 
    411                 if ($yoast_active):
     498                if ($yoast_active || $rankmath_active):
    412499                ?>
    413500                    <div class="aicont-main-guide">
     
    431518                            <?php esc_html_e( 'After completion, the full SEO-optimized content will automatically appear in the editor — you can edit it or publish directly!', 'aicontify' ); ?>
    432519                        </p>
     520
     521                        <?php if ($yoast_active && $rankmath_active): ?>
     522                            <p class="aicont-plugin-info" style="background-color: #e7f3ff; border-left: 4px solid #0073aa; padding: 10px; margin-top: 15px; border-radius: 3px;">
     523                                <strong><?php esc_html_e('Both plugins detected!', 'aicontify'); ?></strong><br>
     524                                <?php esc_html_e('Priority: Yoast SEO will be used. If Yoast is disabled, Rank Math will be used.', 'aicontify'); ?>
     525                            </p>
     526                        <?php elseif ($rankmath_active): ?>
     527                            <p class="aicont-plugin-info" style="background-color: #fff8e5; border-left: 4px solid #ffb81c; padding: 10px; margin-top: 15px; border-radius: 3px;">
     528                                <strong><?php esc_html_e('Rank Math SEO detected!', 'aicontify'); ?></strong><br>
     529                                <?php esc_html_e('Your meta descriptions will be saved in Rank Math.', 'aicontify'); ?>
     530                            </p>
     531                        <?php else: ?>
     532                            <p class="aicont-plugin-info" style="background-color: #fff8e5; border-left: 4px solid #ffb81c; padding: 10px; margin-top: 15px; border-radius: 3px;">
     533                                <strong><?php esc_html_e('Yoast SEO detected!', 'aicontify'); ?></strong><br>
     534                                <?php esc_html_e('Your meta descriptions will be saved in Yoast.', 'aicontify'); ?>
     535                            </p>
     536                        <?php endif; ?>
    433537                    </div>
    434538                    <button type="button" class="button button-primary button-hero aicont-btn" id="aicont-generate-meta-description-btn" data-postid="<?php echo esc_attr($post->ID); ?>">
     
    481585
    482586                <?php else: ?>
    483                     <!-- Yoast Not Active - English Error -->
     587                    <!-- No SEO Plugin Active - Error Notice -->
    484588                    <div class="aicont-yoast-error-notice">
    485589                        <p class="aicont-error-title">
    486                             <strong>Warning:</strong> <?php esc_html_e('Yoast SEO Plugin Required', 'aicontify'); ?>
     590                            <strong><?php esc_html_e('Warning:', 'aicontify'); ?></strong> <?php esc_html_e('SEO Plugin Required', 'aicontify'); ?>
    487591                        </p>
    488592                        <p class="aicont-error-desc">
    489                             <?php esc_html_e('This feature requires the Yoast SEO plugin to be installed and activated.', 'aicontify'); ?>
    490                         </p>
    491                         <p class="aicont-error-tip">
    492                             <span class="dashicons dashicons-yes"></span> <?php esc_html_e('After activation, refresh the page.', 'aicontify'); ?>
     593                            <?php esc_html_e('This feature requires either Yoast SEO or Rank Math to be installed and activated.', 'aicontify'); ?>
     594                        </p>
     595                        <div class="aicont-error-plugins" style="margin-top: 15px; background-color: #f5f5f5; padding: 15px; border-radius: 4px;">
     596                            <p style="margin: 0 0 10px 0;"><strong><?php esc_html_e('Supported SEO Plugins:', 'aicontify'); ?></strong></p>
     597                            <ul style="margin: 0; padding-left: 20px;">
     598                                <li style="margin-bottom: 8px;">
     599                                    <strong>Yoast SEO</strong> - <?php esc_html_e('Free & Premium versions supported', 'aicontify'); ?>
     600                                </li>
     601                                <li style="margin-bottom: 8px;">
     602                                    <strong>Rank Math</strong> - <?php esc_html_e('Free & Premium versions supported', 'aicontify'); ?>
     603                                </li>
     604                            </ul>
     605                        </div>
     606                        <p class="aicont-error-tip" style="margin-top: 15px;">
     607                            <span class="dashicons dashicons-yes" style="color: #28a745;"></span>
     608                            <?php esc_html_e('Install and activate one of the above plugins, then refresh this page.', 'aicontify'); ?>
    493609                        </p>
    494610                    </div>
     
    547663// Include API handlers
    548664$api_files = [
     665    'titleSuggestionPosts.php',
    549666    'contentPosts.php',
    550667    'editContentPosts.php',
Note: See TracChangeset for help on using the changeset viewer.