Changeset 3113220
- Timestamp:
- 07/05/2024 04:58:20 PM (21 months ago)
- Location:
- writetext-ai
- Files:
-
- 145 added
- 12 edited
-
tags/1.30.6 (added)
-
tags/1.30.6/CHANGELOG.md (added)
-
tags/1.30.6/assets (added)
-
tags/1.30.6/assets/css (added)
-
tags/1.30.6/assets/css/admin-common.css (added)
-
tags/1.30.6/assets/css/admin-installation.css (added)
-
tags/1.30.6/assets/css/admin-installed.css (added)
-
tags/1.30.6/assets/css/admin.css (added)
-
tags/1.30.6/assets/css/tooltipster.bundle.min.css (added)
-
tags/1.30.6/assets/images (added)
-
tags/1.30.6/assets/images/active_check.png (added)
-
tags/1.30.6/assets/images/active_check_black.svg (added)
-
tags/1.30.6/assets/images/btn-closePopup.svg (added)
-
tags/1.30.6/assets/images/bulk-check-ico.png (added)
-
tags/1.30.6/assets/images/button_next.png (added)
-
tags/1.30.6/assets/images/calendar-icon.png (added)
-
tags/1.30.6/assets/images/check_setup.png (added)
-
tags/1.30.6/assets/images/close-icon-black.svg (added)
-
tags/1.30.6/assets/images/close-icon-blue.svg (added)
-
tags/1.30.6/assets/images/close-icon.svg (added)
-
tags/1.30.6/assets/images/close-key-word.png (added)
-
tags/1.30.6/assets/images/eva_diagonal-arrow-right-up-outline.svg (added)
-
tags/1.30.6/assets/images/ic-wt-platform-menu-active.svg (added)
-
tags/1.30.6/assets/images/ic-wt-platform-menu.svg (added)
-
tags/1.30.6/assets/images/ic_add.svg (added)
-
tags/1.30.6/assets/images/ic_arrow_down_pop.svg (added)
-
tags/1.30.6/assets/images/ic_arrow_tl_default.svg (added)
-
tags/1.30.6/assets/images/ic_arrow_tl_hover.svg (added)
-
tags/1.30.6/assets/images/ic_check_purple.png (added)
-
tags/1.30.6/assets/images/ic_circle_check_blue.svg (added)
-
tags/1.30.6/assets/images/ic_country.svg (added)
-
tags/1.30.6/assets/images/ic_country_selected.svg (added)
-
tags/1.30.6/assets/images/ic_dropdown.svg (added)
-
tags/1.30.6/assets/images/ic_dropdown_blue.svg (added)
-
tags/1.30.6/assets/images/ic_fact_check.svg (added)
-
tags/1.30.6/assets/images/ic_kw-arrow.png (added)
-
tags/1.30.6/assets/images/ic_outline-close.svg (added)
-
tags/1.30.6/assets/images/ic_outline-filter-list.svg (added)
-
tags/1.30.6/assets/images/ic_popup_ongoing.svg (added)
-
tags/1.30.6/assets/images/ic_premium.svg (added)
-
tags/1.30.6/assets/images/ic_rewrite.svg (added)
-
tags/1.30.6/assets/images/ic_round-close.svg (added)
-
tags/1.30.6/assets/images/ic_substract.svg (added)
-
tags/1.30.6/assets/images/ic_thumb.png (added)
-
tags/1.30.6/assets/images/ic_transfer.svg (added)
-
tags/1.30.6/assets/images/ic_writetext_menu_wp.svg (added)
-
tags/1.30.6/assets/images/ic_writetext_platform_menu.svg (added)
-
tags/1.30.6/assets/images/icon-park-solid_check-one.svg (added)
-
tags/1.30.6/assets/images/iconamoon_trash.png (added)
-
tags/1.30.6/assets/images/iconamoon_trash_blur.png (added)
-
tags/1.30.6/assets/images/loader.gif (added)
-
tags/1.30.6/assets/images/loader_cursor.gif (added)
-
tags/1.30.6/assets/images/loader_writetext.gif (added)
-
tags/1.30.6/assets/images/logo_writetext.svg (added)
-
tags/1.30.6/assets/images/lucide_wand.svg (added)
-
tags/1.30.6/assets/images/material-symbols_history.svg (added)
-
tags/1.30.6/assets/images/mdi_external-link.svg (added)
-
tags/1.30.6/assets/images/ph_list-magnifying-glass-bold.svg (added)
-
tags/1.30.6/assets/images/ph_star-fill.svg (added)
-
tags/1.30.6/assets/images/ranked-serp-icon.png (added)
-
tags/1.30.6/assets/images/refresh.svg (added)
-
tags/1.30.6/assets/images/serp-link-ico.png (added)
-
tags/1.30.6/assets/images/solid_ranking-star.svg (added)
-
tags/1.30.6/assets/images/sort-ico-1.png (added)
-
tags/1.30.6/assets/images/sort-ico-2.png (added)
-
tags/1.30.6/assets/images/sort-ico-active.png (added)
-
tags/1.30.6/assets/images/spinner-1s-20px.gif (added)
-
tags/1.30.6/assets/images/toggle-arrow.png (added)
-
tags/1.30.6/assets/images/tooltip-arrow.svg (added)
-
tags/1.30.6/assets/images/tooltip-icon.png (added)
-
tags/1.30.6/assets/images/warning-icon.png (added)
-
tags/1.30.6/assets/images/warning-icon.svg (added)
-
tags/1.30.6/assets/images/woocommerce-placeholder-150x150.png (added)
-
tags/1.30.6/assets/images/writetext_logo.png (added)
-
tags/1.30.6/assets/images/xbutton.svg (added)
-
tags/1.30.6/assets/js (added)
-
tags/1.30.6/assets/js/admin-common.js (added)
-
tags/1.30.6/assets/js/admin-installation.js (added)
-
tags/1.30.6/assets/js/admin-installed.js (added)
-
tags/1.30.6/assets/js/admin-setting.js (added)
-
tags/1.30.6/assets/js/admin-streaming.js (added)
-
tags/1.30.6/assets/js/signalr.min.js (added)
-
tags/1.30.6/assets/js/tooltipster.bundle.min.js (added)
-
tags/1.30.6/assets/lib (added)
-
tags/1.30.6/assets/lib/images (added)
-
tags/1.30.6/assets/lib/images/ui-bg_flat_0_888888_40x100.png (added)
-
tags/1.30.6/assets/lib/images/ui-bg_flat_0_aaaaaa_40x100.png (added)
-
tags/1.30.6/assets/lib/images/ui-bg_flat_75_ffffff_40x100.png (added)
-
tags/1.30.6/assets/lib/images/ui-bg_glass_25_e1f0f5_1x400.png (added)
-
tags/1.30.6/assets/lib/images/ui-bg_glass_55_444444_1x400.png (added)
-
tags/1.30.6/assets/lib/images/ui-bg_glass_55_fbf9ee_1x400.png (added)
-
tags/1.30.6/assets/lib/images/ui-bg_glass_65_ffffff_1x400.png (added)
-
tags/1.30.6/assets/lib/images/ui-bg_glass_75_dadada_1x400.png (added)
-
tags/1.30.6/assets/lib/images/ui-bg_glass_75_e6e6e6_1x400.png (added)
-
tags/1.30.6/assets/lib/images/ui-bg_highlight-soft_75_cccccc_1x100.png (added)
-
tags/1.30.6/assets/lib/images/ui-bg_inset-soft_95_fef1ec_1x100.png (added)
-
tags/1.30.6/assets/lib/images/ui-icons_222222_256x240.png (added)
-
tags/1.30.6/assets/lib/images/ui-icons_309bbf_256x240.png (added)
-
tags/1.30.6/assets/lib/images/ui-icons_454545_256x240.png (added)
-
tags/1.30.6/assets/lib/images/ui-icons_bf3030_256x240.png (added)
-
tags/1.30.6/assets/lib/images/ui-icons_ffffff_256x240.png (added)
-
tags/1.30.6/assets/lib/jquery-ui.css (added)
-
tags/1.30.6/assets/lib/selectize.bootstrap3.min.css (added)
-
tags/1.30.6/assets/lib/selectize.default.css (added)
-
tags/1.30.6/assets/lib/selectize.min.js (added)
-
tags/1.30.6/gnu.org_licenses_gpl-3.0.txt (added)
-
tags/1.30.6/includes (added)
-
tags/1.30.6/includes/class-wtai-api-services.php (added)
-
tags/1.30.6/includes/class-wtai-global-settings.php (added)
-
tags/1.30.6/includes/class-wtai-init.php (added)
-
tags/1.30.6/includes/class-wtai-installation.php (added)
-
tags/1.30.6/includes/class-wtai-product-dashboard.php (added)
-
tags/1.30.6/includes/class-wtai-product-keyword.php (added)
-
tags/1.30.6/includes/class-wtai-product-list-table.php (added)
-
tags/1.30.6/includes/class-wtai-product-single.php (added)
-
tags/1.30.6/includes/functions.php (added)
-
tags/1.30.6/logs (added)
-
tags/1.30.6/logs/.gitignore (added)
-
tags/1.30.6/readme.txt (added)
-
tags/1.30.6/templates (added)
-
tags/1.30.6/templates/admin (added)
-
tags/1.30.6/templates/admin/dashboard.php (added)
-
tags/1.30.6/templates/admin/footer-mobile.php (added)
-
tags/1.30.6/templates/admin/footer.php (added)
-
tags/1.30.6/templates/admin/install.php (added)
-
tags/1.30.6/templates/admin/intent-tooltip.php (added)
-
tags/1.30.6/templates/admin/metabox (added)
-
tags/1.30.6/templates/admin/metabox/ads.php (added)
-
tags/1.30.6/templates/admin/metabox/filter.php (added)
-
tags/1.30.6/templates/admin/metabox/keyword.php (added)
-
tags/1.30.6/templates/admin/metabox/keywords-competitor.php (added)
-
tags/1.30.6/templates/admin/metabox/keywords-manual.php (added)
-
tags/1.30.6/templates/admin/metabox/keywords-ranked.php (added)
-
tags/1.30.6/templates/admin/metabox/keywords-selected.php (added)
-
tags/1.30.6/templates/admin/metabox/keywords-serp.php (added)
-
tags/1.30.6/templates/admin/metabox/keywords-suggested.php (added)
-
tags/1.30.6/templates/admin/metabox/popin-history.php (added)
-
tags/1.30.6/templates/admin/metabox/popin-keyword.php (added)
-
tags/1.30.6/templates/admin/metabox/premium-modal.php (added)
-
tags/1.30.6/templates/admin/metabox/premium.php (added)
-
tags/1.30.6/templates/admin/post.php (added)
-
tags/1.30.6/templates/admin/settings.php (added)
-
tags/1.30.6/templates/admin/translation-ongoing.php (added)
-
tags/1.30.6/writetext-ai.php (added)
-
tags/1.30.6/writetext-ai.pot (added)
-
trunk/CHANGELOG.md (modified) (1 diff)
-
trunk/assets/css/admin-installed.css (modified) (15 diffs)
-
trunk/assets/js/admin-installed.js (modified) (20 diffs)
-
trunk/includes/class-wtai-api-services.php (modified) (6 diffs)
-
trunk/includes/class-wtai-product-keyword.php (modified) (8 diffs)
-
trunk/includes/functions.php (modified) (1 diff)
-
trunk/readme.txt (modified) (3 diffs)
-
trunk/templates/admin/metabox/keywords-manual.php (modified) (2 diffs)
-
trunk/templates/admin/metabox/keywords-selected.php (modified) (4 diffs)
-
trunk/templates/admin/metabox/keywords-serp.php (modified) (1 diff)
-
trunk/templates/admin/metabox/popin-keyword.php (modified) (5 diffs)
-
trunk/writetext-ai.php (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
writetext-ai/trunk/CHANGELOG.md
r3111534 r3113220 9 9 The format is based on [Keep a Changelog](http://keepachangelog.com/) 10 10 and this project adheres to [Semantic Versioning](http://semver.org/). 11 12 ## [1.30.6] - 2024-07-06 13 14 ### Added 15 16 - Added Refresh data in Your own keywords section. The functionality will be the same as the Refresh data in Suggested keywords. Clicking either button will refresh data for both sections. 17 18 ### Changed 19 20 - Updated UI for Start AI-powered keyword analysis CTA to be sticky. 21 - Refresh data should only appear when there is data to refresh for "Your own keywords" and "Suggested keywords" only. Refresh data will re-appear either when a new keyword is added or selected OR when data is stale. Refresh data for selected keywords and competitor keywords will always be available because SERP data can change daily. 22 - Updated SERP overview to display 100 records instead of 5. 23 - Updated the keywords to always be passed in lowercase even if the user has typed it another way. 24 - Display no data for results without data fetched from the API for rank, intent, search volume and difficulty columns in Keywords to be included in your text and Your Own Keywords sections. 11 25 12 26 ## [1.30.5] - 2024-07-03 -
writetext-ai/trunk/assets/css/admin-installed.css
r3111534 r3113220 1135 1135 .writetext-main .top-header.header-slider { 1136 1136 width: 100%; 1137 left: 1px; 1137 1138 } 1138 1139 /*.writetext-table-list-wrapper p.search-box input[name="s"] { … … 5142 5143 gap: 30px; 5143 5144 align-items: center; 5145 position: absolute; 5146 top: 0; 5147 left: 0; 5148 width: 100%; 5149 z-index: 9999999; 5150 } 5151 5152 .wta-keyword .d-inner-wrapper{ 5153 overflow-y: hidden; 5154 padding-top: 90px 5155 } 5156 5157 .wta-keyword .wta-keyword-footer-spacer{ 5158 height: 80px; 5159 width: 100%; 5160 clear: both; 5161 z-index: -1; 5162 position: relative; 5144 5163 } 5145 5164 … … 5195 5214 } 5196 5215 .wta-keyword .wta-keyword-content { 5197 height: calc( 100% - 80px); 5198 height: 100%; 5216 height: auto; 5199 5217 width: 100%; 5200 5218 box-sizing: border-box; … … 6495 6513 .wta-keyword-tooltip.wta-keyword-cta-tooltip.tooltip .tooltiptext { 6496 6514 right: 0; 6515 z-index: 999999; 6497 6516 } 6498 6517 .wp-filter .tooltip .tooltiptext { … … 7212 7231 7213 7232 .wta-keyword .error-msg { 7214 padding: 20px 6%;7233 padding: 20px; 7215 7234 position: absolute; 7216 top: 0;7235 top: 70px; 7217 7236 left: 0; 7218 7237 width: 100%; … … 7223 7242 animation-duration: 0.5s; 7224 7243 animation-fill-mode: forwards; 7244 z-index: 99999; 7225 7245 } 7226 7246 .wta-keyword .error-msg.fadeOut { … … 11532 11552 } 11533 11553 .wtai-keyword-table.has-rank-intent-data .col-action, 11534 .wtai-keyword-table.has-rank-intent-data .col-difficulty, 11554 .wtai-keyword-table.has-rank-intent-data .col-difficulty{ 11555 width: 10% 11556 } 11557 11535 11558 .wtai-keyword-table.has-rank-intent-data .col-rank{ 11536 width: 1 0%11559 width: 12% 11537 11560 } 11538 11561 11539 11562 .wtai-keyword-table.has-rank-intent-data .col-volume{ 11540 width: 1 5%11563 width: 13% 11541 11564 } 11542 11565 … … 11557 11580 padding: 30px; 11558 11581 position: absolute; 11559 top: 1 5px;11582 top: 10px; 11560 11583 width: 80%; 11561 11584 left: 50%; … … 11597 11620 11598 11621 .wtai-keyword-serp-wrap-ranked.wtai-keyword-serp-wrap.tooltiptext{ 11599 width: 485px 11622 width: 485px; 11623 transition: none!important; 11600 11624 } 11601 11625 … … 11647 11671 .wtai-keyword-serp-wrap.tooltiptext .wtai-keyword-serp-content-wrap{ 11648 11672 padding: 0; 11673 max-height: 290px; 11674 overflow: hidden; 11675 overflow-y: auto; 11676 } 11677 .wtai-keyword-serp-wrap.tooltiptext .wtai-keyword-serp-content-wrap.has-featured-snippet{ 11678 max-height: 405px; 11649 11679 } 11650 11680 … … 11734 11764 .wta-keyword-analysis-content-bottom-section{ 11735 11765 position: relative; 11736 padding-bottom: 100px; 11766 padding-bottom: 0; 11767 overflow: scroll; 11768 height: 100%; 11769 padding-top: 5px; 11737 11770 } 11738 11771 11739 11772 .wta-keyword-analysis-content-bottom-section.add-spacer{ 11740 padding-bottom: 250px;11773 padding-bottom: 180px; 11741 11774 } 11742 11775 … … 11977 12010 } 11978 12011 11979 .wta-keyword-analysis-content-bottom-section{11980 padding-bottom: 100px;11981 }11982 11983 12012 .wta-keyword-analysis-content-bottom-section.add-spacer{ 11984 12013 padding-bottom: 470px; … … 12063 12092 .wtai-keyword-table .col-keyword{ 12064 12093 width: 60% 12065 }12066 12067 .wta-keyword-analysis-content-bottom-section{12068 padding-bottom: 100px12069 12094 } 12070 12095 … … 12303 12328 12304 12329 @media screen and ( max-width: 767px ){ 12330 } 12331 12332 @media screen and ( max-width: 767px ){ 12305 12333 .wta-special-sintruction-tooltip.tooltip .tooltiptext{ 12306 12334 left: -100px 12335 } 12336 12337 .wta-keyword .d-inner-wrapper { 12338 padding-top: 170px; 12339 } 12340 12341 .wtai-keyword-serp-wrap.tooltiptext .wtai-keyword-serp-content-wrap{ 12342 max-height: 180px; 12343 } 12344 12345 .wtai-keyword-serp-wrap.tooltiptext .wtai-keyword-serp-list-wrap .wtai-keyword-serp-item .wtai-keyword-serp-title{ 12346 word-wrap: break-word; /* Old, but still supported */ 12347 overflow-wrap: break-word; /* Newer standard */ 12348 word-break: break-all; /* Optional: breaks words at any character to prevent overflow */ 12349 } 12350 12351 .wtai-keyword-serp-wrap.tooltiptext .wtai-keyword-serp-list-wrap .wtai-keyword-serp-item .wtai-keyword-serp-details { 12352 padding-right: 10px !important; 12307 12353 } 12308 12354 } … … 12311 12357 .wtai-keyword-serp-wrap.tooltiptext, 12312 12358 .wtai-keyword-serp-wrap-ranked.wtai-keyword-serp-wrap.tooltiptext { 12313 width: 240px;12359 width: 300px; 12314 12360 } 12315 12361 } -
writetext-ai/trunk/assets/js/admin-installed.js
r3111534 r3113220 1158 1158 }); 1159 1159 1160 $(document).on('blur', '.wta-keyword .wta-keyword-input', function(e){ 1161 this.value = this.value.toLowerCase(); 1162 }); 1163 1164 $(document).on('change', '.wta-keyword .wta-keyword-input', function(e){ 1165 this.value = this.value.toLowerCase(); 1166 }); 1167 1160 1168 $(document).on('keypress', '.wta-keyword .wta-keyword-input', function(e){ 1169 this.value = this.value.toLowerCase(); 1170 1171 var char = String.fromCharCode(e.which); 1172 if (/[><"/]/.test(char)) { 1173 e.preventDefault(); 1174 } 1175 1161 1176 if ( e.keyCode === 44 || e.keyCode === 13 ) { 1162 1177 var value = $(this).val().trim(); … … 4482 4497 $('.writetext-slide-right-text-wrapper').find('.keyword-analysis').addClass('pending'); 4483 4498 if ( ! $('.writetext-slide-right-text-wrapper').hasClass('keyword-open') ){ 4484 $('.w ritetext-slide-right-text-wrapper .wta-keyword.single .d-inner-wrapper').animate({ scrollTop: 0 }, 'fast');4499 $('.wta-keyword-analysis-content-bottom-section').animate({ scrollTop: 0 }, 'fast'); 4485 4500 4486 4501 $('.writetext-slide-right-text-wrapper').addClass('keyword-open'); … … 8747 8762 $(this).removeClass('wta-tr-selected'); 8748 8763 } 8749 }); 8750 } 8764 }); 8765 } 8766 8767 if( $('#wta-analysis-data-available-flag').val() == '1' ){ 8768 $('.wta-keyword-analysis-content-wrap.suggested-keywords .wta-keyword-analysis-refresh-cta-wrap').removeClass('hidden'); 8769 } 8751 8770 8752 8771 //reload suggested audience … … 8760 8779 $('<div id="message" class="error notice is-dismissible"><p>'+WTAI_OBJ.access_denied+' </p></div>').insertAfter( $('.writetext-edit-product-line' ).find('.wp-header-end') ); 8761 8780 } 8781 8762 8782 8763 8783 //for the update keywords only … … 8798 8818 $('.wta-keyword').find('.wta-keyword-input').prop('disabled', false); 8799 8819 show_keyword_input_tooltip('hide'); 8820 8821 value = value.toLowerCase(); // keywords should always be lowercase. 8800 8822 8801 8823 var isDuplicate = false; … … 9998 10020 /*Tooltiptext*/ 9999 10021 $(document).on('click', '.tooltip', function(){ 10022 if( $(this).hasClass('wta-column-keyword-name-tooltip') ){ 10023 $('.wtai-keyword-serp-wrap.tooltiptext .wtai-keyword-serp-content-wrap').animate({ scrollTop: 0 }, '0'); 10024 } 10025 10000 10026 $('.tooltip').not(this).removeClass('hover'); 10001 10027 $(this).toggleClass('hover'); … … 16131 16157 } 16132 16158 16159 if( $('.wta-keyword .error-msg').length ) { 16160 $('.wta-keyword .error-msg').remove(); 16161 } 16162 16163 $('.wta-keyword-analysis-content-bottom-section').animate({ scrollTop: 0 }, 'fast'); 16164 16133 16165 show_hide_global_loader('show'); 16134 16166 … … 16372 16404 if( data.result['show_competitor_refresh'] == '1' ) { 16373 16405 $('.wta-keyword-analysis-content-wrap.competitor-keywords .wta-keyword-analysis-refresh-cta-wrap').removeClass('hidden'); 16406 $('#wta-analysis-data-available-flag').val('1'); 16374 16407 } 16375 16408 else{ … … 16379 16412 } 16380 16413 16381 if( refresh_type == 'all' || refresh_type == 'suggested-keywords' ){16414 if( refresh_type == 'all' || refresh_type == 'suggested-keywords' || refresh_type == 'your-keywords' ){ 16382 16415 // Display data in manual keyword popin 16383 16416 $('.wta-keyword-analysis-content-wrap.your-keywords .wta-keyword-analysis-api-loader').addClass('hidden'); … … 16389 16422 $('.wta-keyword-analysis-content-wrap.your-keywords .wta-keyword-analysis-api-data').removeClass('hidden'); 16390 16423 16391 if( data.result['show_suggested_refresh'] == '1' ) {16424 if( data.result['show_suggested_refresh'] == '1' && data.result['display_ideas_refresh'] == '1' ) { 16392 16425 $('.wta-keyword-analysis-content-wrap.your-keywords .wta-keyword-analysis-refresh-cta-wrap').removeClass('hidden'); 16393 16426 } … … 16417 16450 $('.wta-keyword-analysis-content-wrap.suggested-keywords .wta-keyword-analysis-api-data').removeClass('hidden'); 16418 16451 16419 if( data.result['show_suggested_refresh'] == '1' ) {16452 if( data.result['show_suggested_refresh'] == '1' && data.result['display_suggested_refresh'] == '1' ) { 16420 16453 $('.wta-keyword-analysis-content-wrap.suggested-keywords .wta-keyword-analysis-refresh-cta-wrap').removeClass('hidden'); 16421 16454 $('#wta-analysis-data-available-flag').val('1'); … … 16443 16476 $('.wta-keyword-analysis-content-wrap.suggested-keywords .wta-keyword-analysis-api-data').addClass('hidden'); 16444 16477 16445 if( data.result['show_suggested_refresh'] == '1' ) {16478 if( data.result['show_suggested_refresh'] == '1' && data.result['display_suggested_refresh'] == '1' ) { 16446 16479 $('.wta-keyword-analysis-content-wrap.suggested-keywords .wta-keyword-analysis-refresh-cta-wrap').removeClass('hidden'); 16480 $('#wta-analysis-data-available-flag').val('1'); 16447 16481 } 16448 16482 else{ … … 16475 16509 if( value == ''){ 16476 16510 return; 16511 } 16512 16513 if( $('.wta-keyword .error-msg').length ) { 16514 $('.wta-keyword .error-msg').remove(); 16477 16515 } 16478 16516 … … 16514 16552 if( data.show_suggested_refresh == '1'){ 16515 16553 $('.wta-keyword-analysis-content-wrap.suggested-keywords .wta-keyword-analysis-refresh-cta-wrap').removeClass('hidden'); 16554 16555 if( type == 'add' ){ 16556 $('.wta-keyword-analysis-content-wrap.your-keywords .wta-keyword-analysis-refresh-cta-wrap').removeClass('hidden'); 16557 } 16558 16516 16559 $('#wta-analysis-data-available-flag').val('1'); 16517 16560 } 16518 16561 else{ 16519 16562 $('.wta-keyword-analysis-content-wrap.suggested-keywords .wta-keyword-analysis-refresh-cta-wrap').addClass('hidden'); 16563 $('.wta-keyword-analysis-content-wrap.your-keywords .wta-keyword-analysis-refresh-cta-wrap').addClass('hidden'); 16564 } 16565 16566 if( $('.wtai-keyword-table.wtai-keyword-table-your-keywords tbody tr.wtai-keyword-tr').length <= 0 ){ 16567 $('.wta-keyword-analysis-content-wrap.your-keywords .wta-keyword-analysis-refresh-cta-wrap').addClass('hidden'); 16568 } 16569 16570 if( $('#wta-analysis-data-available-flag') == '1' ){ 16571 $('.wta-keyword-analysis-content-wrap.suggested-keywords .wta-keyword-analysis-refresh-cta-wrap').removeClass('hidden'); 16520 16572 } 16521 16573 } … … 16668 16720 } 16669 16721 16722 if( $('#wta-analysis-data-available-flag').val() == '1' && ( keyword_type == 'ranked' || keyword_type == 'suggested' || keyword_type == 'competitor' ) ){ 16723 $('.wta-keyword-analysis-content-wrap.suggested-keywords .wta-keyword-analysis-refresh-cta-wrap').removeClass('hidden'); 16724 } 16725 16670 16726 // Lets highlight the current tr row 16671 16727 parent_tr.addClass('wta-tr-selected'); … … 16782 16838 btn.addClass('keyword-action-button-add'); 16783 16839 btn.attr('data-type', 'add_to_selected'); 16840 } 16841 16842 if( $('#wta-analysis-data-available-flag').val() == '1' ) { 16843 $('.wta-keyword-analysis-content-wrap.suggested-keywords .wta-keyword-analysis-refresh-cta-wrap').removeClass('hidden'); 16784 16844 } 16785 16845 … … 17411 17471 } 17412 17472 else{ 17413 main_wrap.find('.wta-keyword-analysis-empty-label').addClass('hidden'); 17414 main_wrap.find('.wta-keyword-analysis-api-data').html(''); 17415 main_wrap.find('.wta-keyword-analysis-api-data').addClass('hidden'); 17473 if( refresh_type == 'suggested-keywords' ){ 17474 main_wrap.find('.wta-keyword-analysis-api-data').html(''); 17475 } 17476 17477 if( $('.wtai-keyword-table.wtai-keyword-table-your-keywords tbody tr.wtai-keyword-tr').length > 0 ){ 17478 $('.wta-keyword-analysis-content-wrap.keyword-ideas-group').find('.wta-keyword-analysis-empty-label').addClass('hidden'); 17479 } 17480 17481 $('.wta-keyword-analysis-content-wrap.keyword-ideas-group').find('.wta-keyword-analysis-api-data').addClass('hidden'); 17416 17482 } 17417 17483 }, … … 17532 17598 } 17533 17599 else{ 17534 parent = $('.wta-keyword-analysis-content-wrap.suggested-keywords'); 17600 if( $('.wtai-keyword-table.wtai-keyword-table-your-keywords tbody tr.wtai-keyword-tr').length > 0 ){ 17601 parent = $('.wta-keyword-analysis-content-wrap.keyword-ideas-group'); 17602 } 17603 else{ 17604 parent = $('.wta-keyword-analysis-content-wrap.suggested-keywords'); 17605 } 17535 17606 } 17536 17607 … … 17540 17611 17541 17612 if( state == 'show' ){ 17542 if( parent.find('.wta-keyword-analysis-toggle').hasClass('wta-state-hidden') ){ 17543 parent.find('.wta-keyword-analysis-toggle').trigger('click'); 17613 if( refresh_type == 'your-keywords' || refresh_type == 'suggested-keywords' ){ 17614 if( $('.wtai-keyword-table.wtai-keyword-table-your-keywords tbody tr.wtai-keyword-tr').length > 0 && $('.wta-keyword-analysis-content-wrap.your-keywords').find('.wta-keyword-analysis-toggle').hasClass('wta-state-hidden') ){ 17615 $('.wta-keyword-analysis-content-wrap.your-keywords').find('.wta-keyword-analysis-toggle').trigger('click'); 17616 } 17617 17618 if( $('.wta-keyword-analysis-content-wrap.suggested-keywords').find('.wta-keyword-analysis-toggle').hasClass('wta-state-hidden') ){ 17619 $('.wta-keyword-analysis-content-wrap.suggested-keywords').find('.wta-keyword-analysis-toggle').trigger('click'); 17620 } 17621 console.log('trigger me'); 17622 } 17623 else{ 17624 if( parent.find('.wta-keyword-analysis-toggle').hasClass('wta-state-hidden') ){ 17625 parent.find('.wta-keyword-analysis-toggle').trigger('click'); 17626 } 17544 17627 } 17545 17628 … … 17553 17636 } 17554 17637 else{ 17555 max_progress = 4;17638 max_progress = 3; 17556 17639 } 17557 17640 } -
writetext-ai/trunk/includes/class-wtai-api-services.php
r3110204 r3113220 3988 3988 foreach ( $fields['manualKeywords'] as $kw ) { 3989 3989 if ( '' !== trim( $kw ) ) { 3990 $keywords[] = str ipslashes( $kw);3990 $keywords[] = strtolower( stripslashes( $kw ) ); 3991 3991 } 3992 3992 } … … 4001 4001 foreach ( $fields['targetKeywords'] as $kw ) { 4002 4002 if ( '' !== trim( $kw ) ) { 4003 $target_keywords[] = str ipslashes( $kw);4003 $target_keywords[] = strtolower( stripslashes( $kw ) ); 4004 4004 } 4005 4005 } … … 5949 5949 foreach ( $fields['manualKeywords'] as $kw ) { 5950 5950 if ( '' !== trim( $kw ) ) { 5951 $keywords[] = str ipslashes( $kw);5951 $keywords[] = strtolower( stripslashes( $kw ) ); 5952 5952 } 5953 5953 } … … 5958 5958 foreach ( $fields['targetKeywords'] as $kw ) { 5959 5959 if ( '' !== trim( $kw ) ) { 5960 $target_keywords[] = str ipslashes( $kw);5960 $target_keywords[] = strtolower( stripslashes( $kw ) ); 5961 5961 } 5962 5962 } … … 5970 5970 5971 5971 // Refresh: 2 credit cost. 5972 if ( 'suggested-keywords' === $fields['refresh_type'] ) {5972 if ( 'suggested-keywords' === $fields['refresh_type'] || 'your-keywords' === $fields['refresh_type'] ) { 5973 5973 $curl_params['refresh'] = true; 5974 5974 $curl_params['performCompetitiveAnalysis'] = false; … … 6070 6070 6071 6071 if ( isset( $fields['saveAsKeyword'] ) ) { 6072 $curl_params['saveAsKeyword'] = $fields['saveAsKeyword'];6072 $curl_params['saveAsKeyword'] = strtolower( $fields['saveAsKeyword'] ); 6073 6073 } 6074 6074 -
writetext-ai/trunk/includes/class-wtai-product-keyword.php
r3111012 r3113220 197 197 } 198 198 } 199 200 // Set refresh state for suggested idea. 201 update_post_meta( $product_id, 'wtai_refresh_suggested_idea', '1' ); 199 202 200 203 if ( count( $keywords ) <= 0 ) { … … 268 271 $suggested_last_date_retrieval = ''; 269 272 $done_ranked_analysis = '0'; 273 $display_ideas_refresh = '0'; 274 $display_suggested_refresh = '0'; 270 275 271 276 if ( isset( $_REQUEST['wtai_nonce'] ) && wp_verify_nonce( sanitize_text_field( wp_unslash( $_REQUEST['wtai_nonce'] ) ), 'wtai-product-nonce' ) ) { … … 572 577 if ( $manual_keywords ) { 573 578 $display_manual_keywords = '1'; 579 580 // Check if refresh is needed. 581 foreach ( $manual_keywords as $manual_keyword ) { 582 $kd_found = false; 583 foreach ( $keywords_detailed_result as $kd_data ) { 584 if ( $kd_data['keyword'] === $manual_keyword ) { 585 $kd_found = true; 586 break; 587 } 588 } 589 590 if ( ! $kd_found ) { 591 $display_ideas_refresh = '1'; 592 $display_suggested_refresh = '1'; 593 break; 594 } 595 } 596 } 597 598 if ( $keywords ) { 599 // Check if refresh is needed. 600 foreach ( $keywords as $t_keyword ) { 601 $kd_found = false; 602 foreach ( $keywords_detailed_result as $kd_data ) { 603 if ( $kd_data['keyword'] === $t_keyword ) { 604 $kd_found = true; 605 break; 606 } 607 } 608 609 if ( ! $kd_found ) { 610 $display_suggested_refresh = '1'; 611 break; 612 } 613 } 614 } 615 616 $use_internal_flag = false; 617 $wtai_refresh_suggested_idea = get_post_meta( $product_id, 'wtai_refresh_suggested_idea', true ); 618 if ( $use_internal_flag && 1 === intval( $wtai_refresh_suggested_idea ) ) { 619 $display_suggested_refresh = '1'; 620 } 621 622 if ( $stale ) { 623 $display_ideas_refresh = '1'; 624 $display_suggested_refresh = '1'; 574 625 } 575 626 … … 578 629 if ( ( ( $manual_keywords && $has_custom_filters ) || $keyword_ideas_values ) && ( $keyword_ideas_values || $has_custom_filters ) ) { 579 630 $display_suggested_keywords = '1'; 631 } else { 632 $show_suggested_refresh = '0'; 580 633 } 581 634 … … 636 689 'competitor_last_date_retrieval' => $competitor_last_date_retrieval, 637 690 'suggested_last_date_retrieval' => $suggested_last_date_retrieval, 691 'display_ideas_refresh' => $display_ideas_refresh, 692 'display_suggested_refresh' => $display_suggested_refresh, 638 693 ), 639 694 ); … … 685 740 $keywords = array(); 686 741 foreach ( $keyword_semantics_texts as $semantic ) { 687 $semantic_text = str ipslashes( $semantic['text']);742 $semantic_text = strtolower( stripslashes( $semantic['text'] ) ); 688 743 $semantic_values = $semantic['values']; 689 744 … … 1276 1331 wtai_save_keyword_analysis_sort_filter( $product_id, $keyword_type, 'relevance', 'asc', 'all', array() ); 1277 1332 } 1333 1334 // Set refresh state for suggested idea. 1335 update_post_meta( $product_id, 'wtai_refresh_suggested_idea', '0' ); 1278 1336 } 1279 1337 } elseif ( isset( $api_result['error'] ) ) { … … 1392 1450 $show_suggested_refresh = '1'; 1393 1451 } 1452 1453 update_post_meta( $product_id, 'wtai_refresh_suggested_idea', '1' ); 1394 1454 } 1395 1455 -
writetext-ai/trunk/includes/functions.php
r3111012 r3113220 5179 5179 $own_serp_data = array(); 5180 5180 $top_serp_data = array(); 5181 $max_serp_count = 5;5181 $max_serp_count = 100; // Maximum number of SERP data to display. 5182 5182 $has_serp_top = false; 5183 5183 -
writetext-ai/trunk/readme.txt
r3111534 r3113220 5 5 Requires at least: 6.0 6 6 Tested up to: 6.5.2 7 Stable tag: 1.30. 57 Stable tag: 1.30.6 8 8 Requires PHP: 7.4 9 9 License: GPLv3 or later … … 157 157 158 158 == Changelog == 159 160 = 1.30.6 2024-07-06 = 161 162 * Add - Added Refresh data in Your own keywords section. The functionality will be the same as the Refresh data in Suggested keywords. Clicking either button will refresh data for both sections. 163 * Update - Updated UI for Start AI-powered keyword analysis CTA to be sticky. 164 * Update - Refresh data should only appear when there is data to refresh for "Your own keywords" and "Suggested keywords" only. Refresh data will re-appear either when a new keyword is added or selected OR when data is stale. Refresh data for selected keywords and competitor keywords will always be available because SERP data can change daily. 165 * Update - Updated SERP overview to display 100 records instead of 5. 166 * Update - Updated the keywords to always be passed in lowercase even if the user has typed it another way. 167 * Update - Display no data for results without data fetched from the API for rank, intent, search volume and difficulty columns in Keywords to be included in your text and Your Own Keywords sections. 159 168 160 169 = 1.30.5 2024-07-03 = … … 590 599 == Upgrade Notice == 591 600 592 = 1.30. 5=601 = 1.30.6 = 593 602 594 603 Please upgrade, to ensure all plugin features works as expected. -
writetext-ai/trunk/templates/admin/metabox/keywords-manual.php
r3110204 r3113220 51 51 <?php 52 52 foreach ( $keywords as $keyword ) { 53 $keyword = strtolower( $keyword ); 54 53 55 $search_vol = '-'; 54 56 $difficulty = '-'; … … 92 94 93 95 if ( '' === trim( $search_vol ) ) { 94 $search_vol = '-'; 96 if ( $keyword_data_found ) { 97 $search_vol = __( 'No data', 'writetext-ai' ); 98 } else { 99 $search_vol = '-'; 100 } 95 101 } 96 102 97 103 if ( '' === trim( $difficulty ) ) { 98 $difficulty = '-'; 104 if ( $keyword_data_found ) { 105 $difficulty = __( 'No data', 'writetext-ai' ); 106 } else { 107 $difficulty = '-'; 108 } 99 109 } 100 110 -
writetext-ai/trunk/templates/admin/metabox/keywords-selected.php
r3110204 r3113220 15 15 'HIGH' => __( 'HIGH', 'writetext-ai' ), 16 16 ); 17 18 $check_ranked = false; 17 19 ?> 18 20 <div class="wtai-keyword-table-parent-wrap" > … … 52 54 $serp_type = 'ranked'; 53 55 54 $keyword_data_found = true; 56 if ( $serp_infos ) { 57 $keyword_data_found = true; 55 58 56 if ( $serp_infos ) {57 59 $featured_serp_info = wtai_get_serp_featured_snippet( $serp_infos ); 58 60 } … … 62 64 } 63 65 64 if ( ! $keyword_data_found ) { 65 // Get data from .keywords. 66 if ( $ranked_keywords ) { 67 foreach ( $ranked_keywords as $stats ) { 68 if ( strtolower( $stats['keyword'] ) === strtolower( $keyword ) ) { 69 $rank = $stats['rank_group']; 70 $intent = $stats['intent']; 66 // Get data from .keywords. 67 if ( $check_ranked && $ranked_keywords ) { 68 foreach ( $ranked_keywords as $stats ) { 69 if ( strtolower( $stats['keyword'] ) === strtolower( $keyword ) ) { 70 if ( '' === trim( $rank ) ) { 71 $rank = $stats['rank_group']; 72 } 73 74 if ( '' === trim( $intent ) ) { 75 $intent = $stats['intent']; 76 } 77 78 if ( '' === trim( $search_vol ) ) { 71 79 $search_vol = $stats['search_volume']; 80 } 81 82 if ( '' === trim( $difficulty ) ) { 72 83 $difficulty = $stats['competition']; 73 $serp_infos = $stats['serp_infos']; 74 $serp_type = 'ranked'; 84 } 75 85 76 $keyword_data_found = true; 77 78 if ( $serp_infos ) { 79 $featured_serp_info = wtai_get_serp_featured_snippet( $serp_infos ); 80 } 81 break; 82 } 83 } 84 } 85 } 86 87 if ( ! $keyword_data_found ) { 88 // Get data from .keywords. 89 if ( $competitor_keywords ) { 90 foreach ( $competitor_keywords as $stats ) { 91 if ( strtolower( $stats['keyword'] ) === strtolower( $keyword ) ) { 92 $search_vol = $stats['search_volume']; 93 $difficulty = $stats['competition']; 94 $serp_infos = array(); 95 96 $keyword_data_found = true; 97 break; 98 } 86 break; 99 87 } 100 88 } … … 102 90 103 91 if ( '' === trim( $rank ) ) { 104 $rank = '-'; 92 if ( $keyword_data_found ) { 93 $rank = __( 'No data', 'writetext-ai' ); 94 } else { 95 $rank = '-'; 96 } 105 97 } 106 98 107 99 if ( '' === trim( $intent ) ) { 108 $intent = '-'; 100 if ( $keyword_data_found ) { 101 $intent = __( 'No data', 'writetext-ai' ); 102 } else { 103 $intent = '-'; 104 } 109 105 } 110 106 111 107 if ( '' === trim( $search_vol ) ) { 112 $search_vol = '-'; 108 if ( $keyword_data_found ) { 109 $search_vol = __( 'No data', 'writetext-ai' ); 110 } else { 111 $search_vol = '-'; 112 } 113 113 } 114 114 115 115 if ( '' === trim( $difficulty ) ) { 116 $difficulty = '-'; 116 if ( $keyword_data_found ) { 117 $difficulty = __( 'No data', 'writetext-ai' ); 118 } else { 119 $difficulty = '-'; 120 } 117 121 } 118 122 -
writetext-ai/trunk/templates/admin/metabox/keywords-serp.php
r3111534 r3113220 68 68 </div> 69 69 70 <div class="wtai-keyword-serp-content-wrap" > 70 <?php 71 $has_featured_class_name = ''; 72 if ( $featured_serp_info && 'ranked' === $keyword_type ) { 73 $has_featured_class_name = 'has-featured-snippet'; 74 } 75 ?> 76 77 <div class="wtai-keyword-serp-content-wrap <?php echo esc_attr( $has_featured_class_name ); ?>" > 71 78 <!-- Featured SERP --> 72 79 <?php -
writetext-ai/trunk/templates/admin/metabox/popin-keyword.php
r3111534 r3113220 270 270 <div class="wta-keyword-content wta-keyword-content-bw-wrap"> 271 271 <!-- START keywords your currently ranking on section --> 272 <div class="wta-keyword-analysis-content-wrap your-keywords ">272 <div class="wta-keyword-analysis-content-wrap your-keywords keyword-ideas-group"> 273 273 <div class="wta-keyword-analysis-content" > 274 274 <div class="wta-keyword-analysis-content-header" > … … 287 287 288 288 <div class="wta-keyword-analysis-content-right" > 289 <div class="wta-keyword-analysis-refresh-cta-wrap hidden" > 290 <a href="#" class="wta-keyword-analysis-refresh-cta" data-type="your-keywords" ><span class="wta-refresh-ico" ></span><?php echo wp_kses_post( __( 'Refresh data', 'writetext-ai' ) ); ?></a> 291 </div> 289 292 <div class="wta-keyword-analysis-toggle-wrap" > 290 293 <span class="wta-keyword-analysis-toggle" data-state='shown' ></span> … … 324 327 </div> 325 328 329 <div class="wta-keyword-analysis-progress-loader-mini" data-progress="0" data-max-progress="2" > 330 <div class="wta-keyword-analysis-progress-loader-content-wrap" > 331 <div class="bulkgeneratecheckicowrap"> 332 <span class="bulkgeneratecheckico"></span> 333 </div> 334 <div class="wta-keyword-analysis-progress-loader-content"> 335 <div class="wta-keyword-analysis-progress-loader-text" ><?php echo wp_kses_post( __( 'Starting AI-powered keyword analysis...', 'writetext-ai' ) ); ?></div> 336 <div class="loading-loader-msg-wrapper"> 337 <div class="loading-loader-wrapper"> 338 <div class="main-loading" style=""></div> 339 </div> 340 </div> 341 </div> 342 </div> 343 </div> 344 326 345 <div class="wta-keyword-analysis-api-loader" ></div> 327 346 <div class="wta-keyword-analysis-api-data hidden" ></div> … … 333 352 334 353 <!-- START keywords your currently ranking on section --> 335 <div class="wta-keyword-analysis-content-wrap suggested-keywords ">354 <div class="wta-keyword-analysis-content-wrap suggested-keywords keyword-ideas-group"> 336 355 <div class="wta-keyword-analysis-content" > 337 356 <div class="wta-keyword-analysis-content-header" > … … 386 405 </div> 387 406 </div> 388 </div> 407 408 <div class="wta-keyword-footer-spacer" > </div> 409 </div> <!-- bottom section wrapper --> 389 410 </div> <!-- inner wrapper --> 390 411 </div> -
writetext-ai/trunk/writetext-ai.php
r3111534 r3113220 4 4 * Plugin URI: https://writetext.ai/woocommerce 5 5 * Description: Let AI automatically generate product descriptions and other content from your product data. 6 * Version: 1.30. 56 * Version: 1.30.6 7 7 * Author: 1902 Software 8 8 * Author URI: https://writetext.ai/ … … 56 56 57 57 if ( ! defined( 'WTAI_VERSION' ) ) { 58 define( 'WTAI_VERSION', '1.30. 5' );58 define( 'WTAI_VERSION', '1.30.6' ); 59 59 } 60 60 … … 520 520 'wtai_bulk_queue_id_open_graph', 521 521 'wtai_product_attribute_preference', 522 'wtai_refresh_suggested_idea', 522 523 ); 523 524
Note: See TracChangeset
for help on using the changeset viewer.