Plugin Directory

Changeset 3113220


Ignore:
Timestamp:
07/05/2024 04:58:20 PM (21 months ago)
Author:
writetextai
Message:

UX updates

Location:
writetext-ai
Files:
145 added
12 edited

Legend:

Unmodified
Added
Removed
  • writetext-ai/trunk/CHANGELOG.md

    r3111534 r3113220  
    99The format is based on [Keep a Changelog](http://keepachangelog.com/)
    1010and 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.
    1125
    1226## [1.30.5] - 2024-07-03
  • writetext-ai/trunk/assets/css/admin-installed.css

    r3111534 r3113220  
    11351135    .writetext-main .top-header.header-slider {
    11361136        width: 100%;
     1137        left: 1px;
    11371138    }
    11381139    /*.writetext-table-list-wrapper p.search-box input[name="s"] {
     
    51425143    gap: 30px;
    51435144    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;
    51445163}
    51455164
     
    51955214}
    51965215.wta-keyword .wta-keyword-content {
    5197     height: calc( 100% - 80px);
    5198     height: 100%;
     5216    height: auto;
    51995217    width: 100%;
    52005218    box-sizing: border-box;
     
    64956513    .wta-keyword-tooltip.wta-keyword-cta-tooltip.tooltip .tooltiptext {
    64966514        right: 0;
     6515        z-index: 999999;
    64976516    }
    64986517    .wp-filter .tooltip .tooltiptext {
     
    72127231
    72137232.wta-keyword .error-msg {
    7214     padding: 20px 6%;
     7233    padding: 20px;
    72157234    position: absolute;
    7216     top: 0;
     7235    top: 70px;
    72177236    left: 0;
    72187237    width: 100%;
     
    72237242    animation-duration: 0.5s;
    72247243    animation-fill-mode: forwards;
     7244    z-index: 99999;
    72257245}
    72267246.wta-keyword .error-msg.fadeOut {
     
    1153211552}
    1153311553.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
    1153511558.wtai-keyword-table.has-rank-intent-data .col-rank{
    11536     width: 10%
     11559    width: 12%
    1153711560}
    1153811561
    1153911562.wtai-keyword-table.has-rank-intent-data .col-volume{
    11540     width: 15%
     11563    width: 13%
    1154111564}
    1154211565
     
    1155711580    padding: 30px;
    1155811581    position: absolute;
    11559     top: 15px;
     11582    top: 10px;
    1156011583    width: 80%;
    1156111584    left: 50%;
     
    1159711620
    1159811621.wtai-keyword-serp-wrap-ranked.wtai-keyword-serp-wrap.tooltiptext{
    11599     width: 485px
     11622    width: 485px;
     11623    transition: none!important;
    1160011624}
    1160111625
     
    1164711671.wtai-keyword-serp-wrap.tooltiptext .wtai-keyword-serp-content-wrap{
    1164811672    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;
    1164911679}
    1165011680
     
    1173411764.wta-keyword-analysis-content-bottom-section{
    1173511765    position: relative;
    11736     padding-bottom: 100px;
     11766    padding-bottom: 0;
     11767    overflow: scroll;
     11768    height: 100%;
     11769    padding-top: 5px;
    1173711770}
    1173811771
    1173911772.wta-keyword-analysis-content-bottom-section.add-spacer{
    11740     padding-bottom: 250px;
     11773    padding-bottom: 180px;
    1174111774}
    1174211775
     
    1197712010    }
    1197812011
    11979     .wta-keyword-analysis-content-bottom-section{
    11980         padding-bottom: 100px;
    11981     }
    11982 
    1198312012    .wta-keyword-analysis-content-bottom-section.add-spacer{
    1198412013        padding-bottom: 470px;
     
    1206312092    .wtai-keyword-table .col-keyword{
    1206412093        width: 60%
    12065     }
    12066 
    12067     .wta-keyword-analysis-content-bottom-section{
    12068         padding-bottom: 100px
    1206912094    }
    1207012095
     
    1230312328
    1230412329@media screen and ( max-width: 767px ){
     12330}
     12331
     12332@media screen and ( max-width: 767px ){
    1230512333    .wta-special-sintruction-tooltip.tooltip .tooltiptext{
    1230612334        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;
    1230712353    }
    1230812354}
     
    1231112357    .wtai-keyword-serp-wrap.tooltiptext,
    1231212358    .wtai-keyword-serp-wrap-ranked.wtai-keyword-serp-wrap.tooltiptext {
    12313         width: 240px;
     12359        width: 300px;
    1231412360    }
    1231512361}
  • writetext-ai/trunk/assets/js/admin-installed.js

    r3111534 r3113220  
    11581158    });
    11591159
     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
    11601168    $(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
    11611176        if ( e.keyCode === 44 || e.keyCode === 13 ) {
    11621177            var value = $(this).val().trim();
     
    44824497            $('.writetext-slide-right-text-wrapper').find('.keyword-analysis').addClass('pending');
    44834498            if ( ! $('.writetext-slide-right-text-wrapper').hasClass('keyword-open') ){
    4484                 $('.writetext-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');
    44854500
    44864501                $('.writetext-slide-right-text-wrapper').addClass('keyword-open');
     
    87478762                                $(this).removeClass('wta-tr-selected');
    87488763                            }
    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                    } 
    87518770
    87528771                    //reload suggested audience
     
    87608779                    $('<div id="message" class="error notice is-dismissible"><p>'+WTAI_OBJ.access_denied+' </p></div>').insertAfter( $('.writetext-edit-product-line' ).find('.wp-header-end') );
    87618780                }
     8781               
    87628782
    87638783               //for the update keywords only
     
    87988818            $('.wta-keyword').find('.wta-keyword-input').prop('disabled', false);
    87998819            show_keyword_input_tooltip('hide');
     8820
     8821            value = value.toLowerCase(); // keywords should always be lowercase.
    88008822
    88018823            var isDuplicate = false;
     
    999810020    /*Tooltiptext*/
    999910021    $(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
    1000010026        $('.tooltip').not(this).removeClass('hover');
    1000110027        $(this).toggleClass('hover');
     
    1613116157            }
    1613216158
     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
    1613316165            show_hide_global_loader('show');
    1613416166
     
    1637216404                if( data.result['show_competitor_refresh'] == '1' ) {
    1637316405                    $('.wta-keyword-analysis-content-wrap.competitor-keywords .wta-keyword-analysis-refresh-cta-wrap').removeClass('hidden');
     16406                    $('#wta-analysis-data-available-flag').val('1');
    1637416407                }
    1637516408                else{
     
    1637916412        }
    1638016413
    16381         if( refresh_type == 'all' || refresh_type == 'suggested-keywords' ){
     16414        if( refresh_type == 'all' || refresh_type == 'suggested-keywords' || refresh_type == 'your-keywords' ){
    1638216415            // Display data in manual keyword popin
    1638316416            $('.wta-keyword-analysis-content-wrap.your-keywords .wta-keyword-analysis-api-loader').addClass('hidden');
     
    1638916422                    $('.wta-keyword-analysis-content-wrap.your-keywords .wta-keyword-analysis-api-data').removeClass('hidden');
    1639016423
    16391                     if( data.result['show_suggested_refresh'] == '1' ) {
     16424                    if( data.result['show_suggested_refresh'] == '1' && data.result['display_ideas_refresh'] == '1' ) {
    1639216425                        $('.wta-keyword-analysis-content-wrap.your-keywords .wta-keyword-analysis-refresh-cta-wrap').removeClass('hidden');
    1639316426                    }
     
    1641716450                    $('.wta-keyword-analysis-content-wrap.suggested-keywords .wta-keyword-analysis-api-data').removeClass('hidden');
    1641816451
    16419                     if( data.result['show_suggested_refresh'] == '1' ) {
     16452                    if( data.result['show_suggested_refresh'] == '1' && data.result['display_suggested_refresh'] == '1' ) {
    1642016453                        $('.wta-keyword-analysis-content-wrap.suggested-keywords .wta-keyword-analysis-refresh-cta-wrap').removeClass('hidden');
    1642116454                        $('#wta-analysis-data-available-flag').val('1');
     
    1644316476                    $('.wta-keyword-analysis-content-wrap.suggested-keywords .wta-keyword-analysis-api-data').addClass('hidden');
    1644416477
    16445                     if( data.result['show_suggested_refresh'] == '1' ) {
     16478                    if( data.result['show_suggested_refresh'] == '1' && data.result['display_suggested_refresh'] == '1' ) {
    1644616479                        $('.wta-keyword-analysis-content-wrap.suggested-keywords .wta-keyword-analysis-refresh-cta-wrap').removeClass('hidden');
     16480                        $('#wta-analysis-data-available-flag').val('1');
    1644716481                    }
    1644816482                    else{
     
    1647516509        if( value == ''){
    1647616510            return;
     16511        }
     16512
     16513        if( $('.wta-keyword .error-msg').length ) {
     16514            $('.wta-keyword .error-msg').remove();
    1647716515        }
    1647816516
     
    1651416552                if( data.show_suggested_refresh == '1'){
    1651516553                    $('.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                   
    1651616559                    $('#wta-analysis-data-available-flag').val('1');
    1651716560                }
    1651816561                else{
    1651916562                    $('.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');
    1652016572                }
    1652116573            }
     
    1666816720            }
    1666916721
     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
    1667016726            // Lets highlight the current tr row
    1667116727            parent_tr.addClass('wta-tr-selected');
     
    1678216838                btn.addClass('keyword-action-button-add');
    1678316839                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');
    1678416844            }
    1678516845
     
    1741117471                    }
    1741217472                    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');
    1741617482                    }
    1741717483                },
     
    1753217598        }
    1753317599        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            }
    1753517606        }
    1753617607
     
    1754017611
    1754117612        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                }
    1754417627            }
    1754517628
     
    1755317636                }
    1755417637                else{
    17555                     max_progress = 4;
     17638                    max_progress = 3;
    1755617639                }
    1755717640            }
  • writetext-ai/trunk/includes/class-wtai-api-services.php

    r3110204 r3113220  
    39883988            foreach ( $fields['manualKeywords'] as $kw ) {
    39893989                if ( '' !== trim( $kw ) ) {
    3990                     $keywords[] = stripslashes( $kw );
     3990                    $keywords[] = strtolower( stripslashes( $kw ) );
    39913991                }
    39923992            }
     
    40014001            foreach ( $fields['targetKeywords'] as $kw ) {
    40024002                if ( '' !== trim( $kw ) ) {
    4003                     $target_keywords[] = stripslashes( $kw );
     4003                    $target_keywords[] = strtolower( stripslashes( $kw ) );
    40044004                }
    40054005            }
     
    59495949            foreach ( $fields['manualKeywords'] as $kw ) {
    59505950                if ( '' !== trim( $kw ) ) {
    5951                     $keywords[] = stripslashes( $kw );
     5951                    $keywords[] = strtolower( stripslashes( $kw ) );
    59525952                }
    59535953            }
     
    59585958            foreach ( $fields['targetKeywords'] as $kw ) {
    59595959                if ( '' !== trim( $kw ) ) {
    5960                     $target_keywords[] = stripslashes( $kw );
     5960                    $target_keywords[] = strtolower( stripslashes( $kw ) );
    59615961                }
    59625962            }
     
    59705970
    59715971        // Refresh: 2 credit cost.
    5972         if ( 'suggested-keywords' === $fields['refresh_type'] ) {
     5972        if ( 'suggested-keywords' === $fields['refresh_type'] || 'your-keywords' === $fields['refresh_type'] ) {
    59735973            $curl_params['refresh']                    = true;
    59745974            $curl_params['performCompetitiveAnalysis'] = false;
     
    60706070
    60716071        if ( isset( $fields['saveAsKeyword'] ) ) {
    6072             $curl_params['saveAsKeyword'] = $fields['saveAsKeyword'];
     6072            $curl_params['saveAsKeyword'] = strtolower( $fields['saveAsKeyword'] );
    60736073        }
    60746074
  • writetext-ai/trunk/includes/class-wtai-product-keyword.php

    r3111012 r3113220  
    197197                            }
    198198                        }
     199
     200                        // Set refresh state for suggested idea.
     201                        update_post_meta( $product_id, 'wtai_refresh_suggested_idea', '1' );
    199202
    200203                        if ( count( $keywords ) <= 0 ) {
     
    268271            $suggested_last_date_retrieval  = '';
    269272            $done_ranked_analysis           = '0';
     273            $display_ideas_refresh          = '0';
     274            $display_suggested_refresh      = '0';
    270275
    271276            if ( isset( $_REQUEST['wtai_nonce'] ) && wp_verify_nonce( sanitize_text_field( wp_unslash( $_REQUEST['wtai_nonce'] ) ), 'wtai-product-nonce' ) ) {
     
    572577                    if ( $manual_keywords ) {
    573578                        $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';
    574625                    }
    575626
     
    578629                    if ( ( ( $manual_keywords && $has_custom_filters ) || $keyword_ideas_values ) && ( $keyword_ideas_values || $has_custom_filters ) ) {
    579630                        $display_suggested_keywords = '1';
     631                    } else {
     632                        $show_suggested_refresh = '0';
    580633                    }
    581634
     
    636689                    'competitor_last_date_retrieval' => $competitor_last_date_retrieval,
    637690                    'suggested_last_date_retrieval'  => $suggested_last_date_retrieval,
     691                    'display_ideas_refresh'          => $display_ideas_refresh,
     692                    'display_suggested_refresh'      => $display_suggested_refresh,
    638693                ),
    639694            );
     
    685740                    $keywords = array();
    686741                    foreach ( $keyword_semantics_texts as $semantic ) {
    687                         $semantic_text   = stripslashes( $semantic['text'] );
     742                        $semantic_text   = strtolower( stripslashes( $semantic['text'] ) );
    688743                        $semantic_values = $semantic['values'];
    689744
     
    12761331                                wtai_save_keyword_analysis_sort_filter( $product_id, $keyword_type, 'relevance', 'asc', 'all', array() );
    12771332                            }
     1333
     1334                            // Set refresh state for suggested idea.
     1335                            update_post_meta( $product_id, 'wtai_refresh_suggested_idea', '0' );
    12781336                        }
    12791337                    } elseif ( isset( $api_result['error'] ) ) {
     
    13921450                            $show_suggested_refresh = '1';
    13931451                        }
     1452
     1453                        update_post_meta( $product_id, 'wtai_refresh_suggested_idea', '1' );
    13941454                    }
    13951455
  • writetext-ai/trunk/includes/functions.php

    r3111012 r3113220  
    51795179    $own_serp_data  = array();
    51805180    $top_serp_data  = array();
    5181     $max_serp_count = 5;
     5181    $max_serp_count = 100; // Maximum number of SERP data to display.
    51825182    $has_serp_top   = false;
    51835183
  • writetext-ai/trunk/readme.txt

    r3111534 r3113220  
    55Requires at least: 6.0
    66Tested up to: 6.5.2
    7 Stable tag: 1.30.5
     7Stable tag: 1.30.6
    88Requires PHP: 7.4
    99License: GPLv3 or later
     
    157157
    158158== 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.
    159168
    160169= 1.30.5 2024-07-03 =
     
    590599== Upgrade Notice ==
    591600
    592 = 1.30.5 =
     601= 1.30.6 =
    593602
    594603Please upgrade, to ensure all plugin features works as expected.
  • writetext-ai/trunk/templates/admin/metabox/keywords-manual.php

    r3110204 r3113220  
    5151            <?php
    5252            foreach ( $keywords as $keyword ) {
     53                $keyword = strtolower( $keyword );
     54
    5355                $search_vol = '-';
    5456                $difficulty = '-';
     
    9294
    9395                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                    }
    95101                }
    96102
    97103                if ( '' === trim( $difficulty ) ) {
    98                     $difficulty = '-';
     104                    if ( $keyword_data_found ) {
     105                        $difficulty = __( 'No data', 'writetext-ai' );
     106                    } else {
     107                        $difficulty = '-';
     108                    }
    99109                }
    100110
  • writetext-ai/trunk/templates/admin/metabox/keywords-selected.php

    r3110204 r3113220  
    1515    'HIGH'   => __( 'HIGH', 'writetext-ai' ),
    1616);
     17
     18$check_ranked = false;
    1719?>
    1820<div class="wtai-keyword-table-parent-wrap" >
     
    5254                            $serp_type  = 'ranked';
    5355
    54                             $keyword_data_found = true;
     56                            if ( $serp_infos ) {
     57                                $keyword_data_found = true;
    5558
    56                             if ( $serp_infos ) {
    5759                                $featured_serp_info = wtai_get_serp_featured_snippet( $serp_infos );
    5860                            }
     
    6264                }
    6365
    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 ) ) {
    7179                                $search_vol = $stats['search_volume'];
     80                            }
     81
     82                            if ( '' === trim( $difficulty ) ) {
    7283                                $difficulty = $stats['competition'];
    73                                 $serp_infos = $stats['serp_infos'];
    74                                 $serp_type  = 'ranked';
     84                            }
    7585
    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;
    9987                        }
    10088                    }
     
    10290
    10391                if ( '' === trim( $rank ) ) {
    104                     $rank = '-';
     92                    if ( $keyword_data_found ) {
     93                        $rank = __( 'No data', 'writetext-ai' );
     94                    } else {
     95                        $rank = '-';
     96                    }
    10597                }
    10698
    10799                if ( '' === trim( $intent ) ) {
    108                     $intent = '-';
     100                    if ( $keyword_data_found ) {
     101                        $intent = __( 'No data', 'writetext-ai' );
     102                    } else {
     103                        $intent = '-';
     104                    }
    109105                }
    110106
    111107                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                    }
    113113                }
    114114
    115115                if ( '' === trim( $difficulty ) ) {
    116                     $difficulty = '-';
     116                    if ( $keyword_data_found ) {
     117                        $difficulty = __( 'No data', 'writetext-ai' );
     118                    } else {
     119                        $difficulty = '-';
     120                    }
    117121                }
    118122
  • writetext-ai/trunk/templates/admin/metabox/keywords-serp.php

    r3111534 r3113220  
    6868    </div>
    6969
    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 ); ?>" >
    7178        <!-- Featured SERP -->
    7279        <?php
  • writetext-ai/trunk/templates/admin/metabox/popin-keyword.php

    r3111534 r3113220  
    270270            <div class="wta-keyword-content wta-keyword-content-bw-wrap">
    271271                <!-- 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">
    273273                    <div class="wta-keyword-analysis-content" >
    274274                        <div class="wta-keyword-analysis-content-header" >
     
    287287
    288288                            <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>
    289292                                <div class="wta-keyword-analysis-toggle-wrap" >
    290293                                    <span class="wta-keyword-analysis-toggle" data-state='shown' ></span>
     
    324327                            </div>
    325328
     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
    326345                            <div class="wta-keyword-analysis-api-loader" ></div>
    327346                            <div class="wta-keyword-analysis-api-data hidden" ></div>
     
    333352
    334353                <!-- 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">
    336355                    <div class="wta-keyword-analysis-content" >
    337356                        <div class="wta-keyword-analysis-content-header" >
     
    386405                </div>
    387406            </div> 
    388         </div>
     407
     408            <div class="wta-keyword-footer-spacer" >&nbsp;</div>
     409        </div> <!-- bottom section wrapper -->
    389410    </div>  <!-- inner wrapper -->
    390411</div>
  • writetext-ai/trunk/writetext-ai.php

    r3111534 r3113220  
    44 * Plugin URI: https://writetext.ai/woocommerce
    55 * Description: Let AI automatically generate product descriptions and other content from your product data.
    6  * Version: 1.30.5
     6 * Version: 1.30.6
    77 * Author:  1902 Software
    88 * Author URI: https://writetext.ai/
     
    5656
    5757    if ( ! defined( 'WTAI_VERSION' ) ) {
    58         define( 'WTAI_VERSION', '1.30.5' );
     58        define( 'WTAI_VERSION', '1.30.6' );
    5959    }
    6060
     
    520520            'wtai_bulk_queue_id_open_graph',
    521521            'wtai_product_attribute_preference',
     522            'wtai_refresh_suggested_idea',
    522523        );
    523524
Note: See TracChangeset for help on using the changeset viewer.