Plugin Directory

Changeset 3269774


Ignore:
Timestamp:
04/09/2025 02:50:38 PM (12 months ago)
Author:
surferseo
Message:

Release 1.6.3.556.

Location:
surferseo
Files:
16 edited
1 copied

Legend:

Unmodified
Added
Removed
  • surferseo/tags/1.6.3.556/includes/class-surferseo.php

    r3242697 r3269774  
    132132        $this->init_hooks();
    133133
    134         add_action( 'init', array( $this, 'register_surfer_backup_status' ) );
    135 
    136134        add_filter( 'plugin_action_links_surferseo/surferseo.php', array( $this, 'add_actions_links' ) );
    137135
     
    233231
    234232        add_action( 'upgrader_process_complete', array( $installer, 'surfer_upgrade_completed' ), 10, 2 );
    235     }
    236 
    237     /**
    238      * Register new post status, to allow to store backup copies of posts imported from Surfer.
    239      *
    240      * @return void
    241      */
    242     public function register_surfer_backup_status() {
    243 
    244         register_post_status(
    245             'surfer-backup',
    246             array(
    247                 'label'                     => _x( 'Surfer Backup', 'post', 'surferseo' ),
    248                 'public'                    => false,
    249                 'exclude_from_search'       => true,
    250                 'show_in_admin_all_list'    => false,
    251                 'show_in_admin_status_list' => true,
    252                 /* translators: %s - number */
    253                 'label_count'               => _n_noop( 'Surfer Backup <span class="count">(%s)</span>', 'Surfer Backups <span class="count">(%s)</span>', 'surferseo' ),
    254             )
    255         );
    256233    }
    257234
  • surferseo/tags/1.6.3.556/includes/forms/class-surfer-form-config-ci.php

    r3242697 r3269774  
    133133        $this->add_field( $field );
    134134
    135         $all_users = get_users( array( 'number' => -1 ) );
     135        $all_users = get_users(
     136            array(
     137                'number'   => 100,
     138                'role__in' => array( 'administrator', 'editor', 'author' ),
     139            )
     140        );
    136141
    137142        $field = new Surfer_Form_Element_Select( 'default_post_author' );
     
    179184        $field->add_option( 'nofollow', __( 'nofollow', 'surferseo' ) );
    180185        $field->add_option( 'dofollow', __( 'dofollow', 'surferseo' ) );
     186        $field->set_row_classes( 'surfer-connected' );
    181187        $this->add_field( $field );
    182188
     
    188194        $field->add_option( '_parent', __( '_parent', 'surferseo' ) );
    189195        $field->add_option( '_top', __( '_top', 'surferseo' ) );
     196        $field->set_row_classes( 'surfer-connected' );
    190197        $this->add_field( $field );
    191198
     
    197204        $field->add_option( 'nofollow', __( 'nofollow', 'surferseo' ) );
    198205        $field->add_option( 'dofollow', __( 'dofollow', 'surferseo' ) );
     206        $field->set_row_classes( 'surfer-connected' );
    199207        $this->add_field( $field );
    200208
     
    206214        $field->add_option( '_parent', __( '_parent', 'surferseo' ) );
    207215        $field->add_option( '_top', __( '_top', 'surferseo' ) );
     216        $field->set_row_classes( 'surfer-connected' );
    208217        $this->add_field( $field );
    209218
  • surferseo/tags/1.6.3.556/includes/surfer/class-content-importer.php

    r3210507 r3269774  
    6464
    6565        if ( isset( $args['post_id'] ) && $args['post_id'] > 0 ) {
    66 
    6766            $provided_post_id = $args['post_id'];
    6867            $data['ID']       = $provided_post_id;
    6968            $post             = (array) get_post( $provided_post_id );
    70 
    71             // Create copy of the post as a backup.
    72             unset( $post['ID'] );
    73             $post['post_status'] = 'surfer-backup';
    74             wp_insert_post( $post );
    7569        }
    7670
     
    8377        $this->resolve_post_meta_details( $args, $data );
    8478
    85         if ( isset( $post ) && 'published' === $post['post_status'] ) {
     79        if ( isset( $post ) && 'publish' === $post['post_status'] ) {
    8680            // WordPress set current date as default and we do not want to change publication date.
    8781            $data['post_date']     = $post['post_date'];
  • surferseo/tags/1.6.3.556/includes/surfer/class-surfer.php

    r3242697 r3269774  
    893893        $users = array();
    894894
    895         $all_users = get_users( array( 'number' => -1 ) );
     895        $all_users = get_users(
     896            array(
     897                'number'   => 50,
     898                'role__in' => array( 'administrator', 'editor', 'author' ),
     899            )
     900        );
    896901
    897902        if ( $all_users ) {
     
    915920        $args = array(
    916921            'hide_empty' => false,
     922            'orderby'    => 'count',
     923            'order'      => 'DESC',
     924            'number'     => 50,
    917925        );
    918926
     
    941949            'taxonomy'   => 'post_tag',
    942950            'hide_empty' => false,
     951            'orderby'    => 'count',
     952            'order'      => 'DESC',
    943953            'number'     => 50,
    944954        );
  • surferseo/tags/1.6.3.556/includes/surfer/content-parsers/class-elementor-parser.php

    r3187966 r3269774  
    8787        update_post_meta( $post_id, '_elementor_version', ELEMENTOR_VERSION );
    8888        update_post_meta( $post_id, '_elementor_data', $this->get_elementor_data( $post_id ) );
    89         // update_post_meta( $post_id, '_elementor_page_assets', $this->get_page_assets( $post_id ) );
    9089        update_post_meta( $post_id, '_wp_page_template', $page_template );
    9190    }
     
    149148
    150149    /**
    151      * Function interates by HTML tags in provided content.
     150     * Function iterates by HTML tags in provided content.
    152151     *
    153152     * @param DOMDocument $parent_node - node to parse.
     
    225224        if ( 'blockquote' === $node_name ) {
    226225            return $this->parse_node_blockquote( $node, $elementor_styling );
     226        }
     227
     228        if ( 'table' === $node_name ) {
     229            return $this->parse_node_table( $node, $elementor_styling );
    227230        }
    228231
     
    442445    }
    443446
     447
     448    /**
     449     * Parses <table> node.
     450     *
     451     * @param DOMNode|DOMDocument|DOMElement $node                - node to parse.
     452     * @param array                          $elementor_styling - array with Elementor styling.
     453     * @return string
     454     */
     455    private function parse_node_table( $node, $elementor_styling ) {
     456
     457        $node_content = $this->get_inner_html( $node );
     458        if ( empty( $node_content ) || '' === $node_content ) {
     459            return '';
     460        }
     461
     462        $element         = new \stdClass();
     463        $element->id     = substr( wp_generate_uuid4(), 0, 8 );
     464        $element->elType = 'widget'; // @codingStandardsIgnoreLine
     465
     466        $settings = new \stdClass();
     467        if ( isset( $elementor_styling['html'] ) ) {
     468            $settings = clone $elementor_styling['html'];
     469        }
     470        $escaped_html = str_replace(
     471            array( '"', "'" ),
     472            array( '&quot;', '&#39;' ),
     473            '<table>' . $node_content . '</table>'
     474        );
     475
     476        $settings->html    = $escaped_html;
     477        $element->settings = $settings;
     478
     479        $element->elements   = array();
     480        $element->widgetType = 'html'; // @codingStandardsIgnoreLine
     481
     482        return $element;
     483    }
     484
    444485    /**
    445486     * Functions prepare attributes for HTML and Gutendber tags.
  • surferseo/tags/1.6.3.556/includes/surfer/content-parsers/class-gutenberg-parser.php

    r3210507 r3269774  
    4444
    4545    /**
    46      * Function interates by HTML tags in provided content.
     46     * Function iterates by HTML tags in provided content.
    4747     *
    4848     * @param DOMNode|DOMDocument|DOMElement $parent_node - node to parse.
     
    7575        $execute_for_child = true;
    7676
    77         if ( 'ul' === $node_type ) {
    78             $execute_for_child = false;
    79         }
    80 
    81         if ( 'ol' === $node_type ) {
    82             $execute_for_child = false;
    83         }
    84 
    85         if ( 'blockquote' === $node_type ) {
     77        $skip_for_children = array( 'ul', 'ol', 'blockquote', 'table' );
     78        if ( in_array( $node_type, $skip_for_children, true ) ) {
    8679            $execute_for_child = false;
    8780        }
     
    139132        if ( 'pre' === $node_name ) {
    140133            return $this->parse_node_code( $node, $attributes, $gutenberg_attribute );
     134        }
     135
     136        if ( 'table' === $node_name ) {
     137            return $this->parse_node_table( $node, $attributes, $gutenberg_attribute );
    141138        }
    142139
     
    351348        $content  = '<!-- wp:list -->' . PHP_EOL;
    352349        $content .= '<ul>' . PHP_EOL;
    353         $content .= $node_content . PHP_EOL;
     350
     351        foreach ( $node->getElementsByTagName( 'li' ) as $li ) {
     352            foreach ( $li->getElementsByTagName( 'p' ) as $p ) {
     353                $content .= '<li>' . $this->get_inner_html( $p ) . '</li>' . PHP_EOL;
     354            }
     355        }
     356
    354357        $content .= '</ul>' . PHP_EOL;
    355358        $content .= '<!-- /wp:list -->' . PHP_EOL . PHP_EOL;
     
    375378        $content  = '<!-- wp:list {"ordered":true} -->' . PHP_EOL;
    376379        $content .= '<ol>' . PHP_EOL;
    377         $content .= $node_content . PHP_EOL;
     380
     381        foreach ( $node->getElementsByTagName( 'li' ) as $li ) {
     382            foreach ( $li->getElementsByTagName( 'p' ) as $p ) {
     383                $content .= '<li>' . $this->get_inner_html( $p ) . '</li>' . PHP_EOL;
     384            }
     385        }
     386
    378387        $content .= '</ol>' . PHP_EOL;
    379388        $content .= '<!-- /wp:list -->' . PHP_EOL . PHP_EOL;
     
    446455        return $content;
    447456    }
     457
     458    /**
     459     * Parses <table> node.
     460     *
     461     * @param DOMNode|DOMDocument|DOMElement $node                - node to parse.
     462     * @param array                          $attributes          - HTML attributes for the node, example: class="" src"".
     463     * @param string                         $gutenberg_attribute - Attributes for Gutenberg tag.
     464     * @return string
     465     */
     466    private function parse_node_table( $node, $attributes, $gutenberg_attribute ) {
     467
     468        $node_content = $this->get_inner_html( $node );
     469        if ( '' === $node_content ) {
     470            return '';
     471        }
     472
     473        $tbody = $node->getElementsByTagName( 'tbody' );
     474
     475        $content  = '<!-- wp:table -->' . PHP_EOL;
     476        $content .= '<figure class="wp-block-table">' . PHP_EOL;
     477        $content .= '<table class="has-fixed-layout">' . PHP_EOL;
     478        $content .= '<tbody>' . $this->get_inner_html( $tbody[0] ) . '</tbody>' . PHP_EOL;
     479        $content .= '</table>' . PHP_EOL;
     480        $content .= '</figure>' . PHP_EOL;
     481        $content .= '<!-- /wp:table -->' . PHP_EOL . PHP_EOL;
     482
     483        return $content;
     484    }
    448485}
  • surferseo/tags/1.6.3.556/readme.txt

    r3242697 r3269774  
    55Requires PHP: 7.4
    66Tested up to: 6.7.2
    7 Stable tag: 1.6.2.552
     7Stable tag: 1.6.3.556
    88License: GPLv2 or later
    99License URI: https://www.gnu.org/licenses/gpl-2.0.html
     
    8888
    8989== Changelog ==
     90
     91= 1.6.3 =
     92* FEATURE: Handle tables export from Surfer
     93* FIX: But that sometimes put whole content into single Text element in Elementor
     94* FIX: Limit number of tags, categories and users on export list, to avoid errors
     95* FIX: Remove <p> tag from inside of the <li> elements in lists
     96* FIX: Prevent post publication date change on export
    9097
    9198= 1.6.2 =
     
    220227== Upgrade Notice ==
    221228
     229= 1.6.3 =
     230Support for tables export and better exports
     231
     232= 1.6.2 =
     233Allow to set attributes for links during import
     234
    222235= 1.6.1 =
    223 Allow to set attributes for links during import
    224 
    225 = 1.6.1 =
    226 Improves Elementor integration and better images handling.
     236Improves Elementor integration and better images handling
    227237
    228238= 1.6.0 =
  • surferseo/tags/1.6.3.556/surferseo.php

    r3242697 r3269774  
    44 * Plugin URI: https://wordpress.org/plugins/surferseo/
    55 * Description: Create content that ranks with Surfer in WordPress
    6  * Version: 1.6.2.552
     6 * Version: 1.6.3.556
    77 * Author: Surfer
    88 * Author URI: https://surferseo.com
     
    2323
    2424if ( ! defined( 'SURFER_VERSION' ) ) {
    25     define( 'SURFER_VERSION', '1.6.2.552' );
     25    define( 'SURFER_VERSION', '1.6.3.556' );
    2626}
    2727
  • surferseo/trunk/includes/class-surferseo.php

    r3242697 r3269774  
    132132        $this->init_hooks();
    133133
    134         add_action( 'init', array( $this, 'register_surfer_backup_status' ) );
    135 
    136134        add_filter( 'plugin_action_links_surferseo/surferseo.php', array( $this, 'add_actions_links' ) );
    137135
     
    233231
    234232        add_action( 'upgrader_process_complete', array( $installer, 'surfer_upgrade_completed' ), 10, 2 );
    235     }
    236 
    237     /**
    238      * Register new post status, to allow to store backup copies of posts imported from Surfer.
    239      *
    240      * @return void
    241      */
    242     public function register_surfer_backup_status() {
    243 
    244         register_post_status(
    245             'surfer-backup',
    246             array(
    247                 'label'                     => _x( 'Surfer Backup', 'post', 'surferseo' ),
    248                 'public'                    => false,
    249                 'exclude_from_search'       => true,
    250                 'show_in_admin_all_list'    => false,
    251                 'show_in_admin_status_list' => true,
    252                 /* translators: %s - number */
    253                 'label_count'               => _n_noop( 'Surfer Backup <span class="count">(%s)</span>', 'Surfer Backups <span class="count">(%s)</span>', 'surferseo' ),
    254             )
    255         );
    256233    }
    257234
  • surferseo/trunk/includes/forms/class-surfer-form-config-ci.php

    r3242697 r3269774  
    133133        $this->add_field( $field );
    134134
    135         $all_users = get_users( array( 'number' => -1 ) );
     135        $all_users = get_users(
     136            array(
     137                'number'   => 100,
     138                'role__in' => array( 'administrator', 'editor', 'author' ),
     139            )
     140        );
    136141
    137142        $field = new Surfer_Form_Element_Select( 'default_post_author' );
     
    179184        $field->add_option( 'nofollow', __( 'nofollow', 'surferseo' ) );
    180185        $field->add_option( 'dofollow', __( 'dofollow', 'surferseo' ) );
     186        $field->set_row_classes( 'surfer-connected' );
    181187        $this->add_field( $field );
    182188
     
    188194        $field->add_option( '_parent', __( '_parent', 'surferseo' ) );
    189195        $field->add_option( '_top', __( '_top', 'surferseo' ) );
     196        $field->set_row_classes( 'surfer-connected' );
    190197        $this->add_field( $field );
    191198
     
    197204        $field->add_option( 'nofollow', __( 'nofollow', 'surferseo' ) );
    198205        $field->add_option( 'dofollow', __( 'dofollow', 'surferseo' ) );
     206        $field->set_row_classes( 'surfer-connected' );
    199207        $this->add_field( $field );
    200208
     
    206214        $field->add_option( '_parent', __( '_parent', 'surferseo' ) );
    207215        $field->add_option( '_top', __( '_top', 'surferseo' ) );
     216        $field->set_row_classes( 'surfer-connected' );
    208217        $this->add_field( $field );
    209218
  • surferseo/trunk/includes/surfer/class-content-importer.php

    r3210507 r3269774  
    6464
    6565        if ( isset( $args['post_id'] ) && $args['post_id'] > 0 ) {
    66 
    6766            $provided_post_id = $args['post_id'];
    6867            $data['ID']       = $provided_post_id;
    6968            $post             = (array) get_post( $provided_post_id );
    70 
    71             // Create copy of the post as a backup.
    72             unset( $post['ID'] );
    73             $post['post_status'] = 'surfer-backup';
    74             wp_insert_post( $post );
    7569        }
    7670
     
    8377        $this->resolve_post_meta_details( $args, $data );
    8478
    85         if ( isset( $post ) && 'published' === $post['post_status'] ) {
     79        if ( isset( $post ) && 'publish' === $post['post_status'] ) {
    8680            // WordPress set current date as default and we do not want to change publication date.
    8781            $data['post_date']     = $post['post_date'];
  • surferseo/trunk/includes/surfer/class-surfer.php

    r3242697 r3269774  
    893893        $users = array();
    894894
    895         $all_users = get_users( array( 'number' => -1 ) );
     895        $all_users = get_users(
     896            array(
     897                'number'   => 50,
     898                'role__in' => array( 'administrator', 'editor', 'author' ),
     899            )
     900        );
    896901
    897902        if ( $all_users ) {
     
    915920        $args = array(
    916921            'hide_empty' => false,
     922            'orderby'    => 'count',
     923            'order'      => 'DESC',
     924            'number'     => 50,
    917925        );
    918926
     
    941949            'taxonomy'   => 'post_tag',
    942950            'hide_empty' => false,
     951            'orderby'    => 'count',
     952            'order'      => 'DESC',
    943953            'number'     => 50,
    944954        );
  • surferseo/trunk/includes/surfer/content-parsers/class-elementor-parser.php

    r3187966 r3269774  
    8787        update_post_meta( $post_id, '_elementor_version', ELEMENTOR_VERSION );
    8888        update_post_meta( $post_id, '_elementor_data', $this->get_elementor_data( $post_id ) );
    89         // update_post_meta( $post_id, '_elementor_page_assets', $this->get_page_assets( $post_id ) );
    9089        update_post_meta( $post_id, '_wp_page_template', $page_template );
    9190    }
     
    149148
    150149    /**
    151      * Function interates by HTML tags in provided content.
     150     * Function iterates by HTML tags in provided content.
    152151     *
    153152     * @param DOMDocument $parent_node - node to parse.
     
    225224        if ( 'blockquote' === $node_name ) {
    226225            return $this->parse_node_blockquote( $node, $elementor_styling );
     226        }
     227
     228        if ( 'table' === $node_name ) {
     229            return $this->parse_node_table( $node, $elementor_styling );
    227230        }
    228231
     
    442445    }
    443446
     447
     448    /**
     449     * Parses <table> node.
     450     *
     451     * @param DOMNode|DOMDocument|DOMElement $node                - node to parse.
     452     * @param array                          $elementor_styling - array with Elementor styling.
     453     * @return string
     454     */
     455    private function parse_node_table( $node, $elementor_styling ) {
     456
     457        $node_content = $this->get_inner_html( $node );
     458        if ( empty( $node_content ) || '' === $node_content ) {
     459            return '';
     460        }
     461
     462        $element         = new \stdClass();
     463        $element->id     = substr( wp_generate_uuid4(), 0, 8 );
     464        $element->elType = 'widget'; // @codingStandardsIgnoreLine
     465
     466        $settings = new \stdClass();
     467        if ( isset( $elementor_styling['html'] ) ) {
     468            $settings = clone $elementor_styling['html'];
     469        }
     470        $escaped_html = str_replace(
     471            array( '"', "'" ),
     472            array( '&quot;', '&#39;' ),
     473            '<table>' . $node_content . '</table>'
     474        );
     475
     476        $settings->html    = $escaped_html;
     477        $element->settings = $settings;
     478
     479        $element->elements   = array();
     480        $element->widgetType = 'html'; // @codingStandardsIgnoreLine
     481
     482        return $element;
     483    }
     484
    444485    /**
    445486     * Functions prepare attributes for HTML and Gutendber tags.
  • surferseo/trunk/includes/surfer/content-parsers/class-gutenberg-parser.php

    r3210507 r3269774  
    4444
    4545    /**
    46      * Function interates by HTML tags in provided content.
     46     * Function iterates by HTML tags in provided content.
    4747     *
    4848     * @param DOMNode|DOMDocument|DOMElement $parent_node - node to parse.
     
    7575        $execute_for_child = true;
    7676
    77         if ( 'ul' === $node_type ) {
    78             $execute_for_child = false;
    79         }
    80 
    81         if ( 'ol' === $node_type ) {
    82             $execute_for_child = false;
    83         }
    84 
    85         if ( 'blockquote' === $node_type ) {
     77        $skip_for_children = array( 'ul', 'ol', 'blockquote', 'table' );
     78        if ( in_array( $node_type, $skip_for_children, true ) ) {
    8679            $execute_for_child = false;
    8780        }
     
    139132        if ( 'pre' === $node_name ) {
    140133            return $this->parse_node_code( $node, $attributes, $gutenberg_attribute );
     134        }
     135
     136        if ( 'table' === $node_name ) {
     137            return $this->parse_node_table( $node, $attributes, $gutenberg_attribute );
    141138        }
    142139
     
    351348        $content  = '<!-- wp:list -->' . PHP_EOL;
    352349        $content .= '<ul>' . PHP_EOL;
    353         $content .= $node_content . PHP_EOL;
     350
     351        foreach ( $node->getElementsByTagName( 'li' ) as $li ) {
     352            foreach ( $li->getElementsByTagName( 'p' ) as $p ) {
     353                $content .= '<li>' . $this->get_inner_html( $p ) . '</li>' . PHP_EOL;
     354            }
     355        }
     356
    354357        $content .= '</ul>' . PHP_EOL;
    355358        $content .= '<!-- /wp:list -->' . PHP_EOL . PHP_EOL;
     
    375378        $content  = '<!-- wp:list {"ordered":true} -->' . PHP_EOL;
    376379        $content .= '<ol>' . PHP_EOL;
    377         $content .= $node_content . PHP_EOL;
     380
     381        foreach ( $node->getElementsByTagName( 'li' ) as $li ) {
     382            foreach ( $li->getElementsByTagName( 'p' ) as $p ) {
     383                $content .= '<li>' . $this->get_inner_html( $p ) . '</li>' . PHP_EOL;
     384            }
     385        }
     386
    378387        $content .= '</ol>' . PHP_EOL;
    379388        $content .= '<!-- /wp:list -->' . PHP_EOL . PHP_EOL;
     
    446455        return $content;
    447456    }
     457
     458    /**
     459     * Parses <table> node.
     460     *
     461     * @param DOMNode|DOMDocument|DOMElement $node                - node to parse.
     462     * @param array                          $attributes          - HTML attributes for the node, example: class="" src"".
     463     * @param string                         $gutenberg_attribute - Attributes for Gutenberg tag.
     464     * @return string
     465     */
     466    private function parse_node_table( $node, $attributes, $gutenberg_attribute ) {
     467
     468        $node_content = $this->get_inner_html( $node );
     469        if ( '' === $node_content ) {
     470            return '';
     471        }
     472
     473        $tbody = $node->getElementsByTagName( 'tbody' );
     474
     475        $content  = '<!-- wp:table -->' . PHP_EOL;
     476        $content .= '<figure class="wp-block-table">' . PHP_EOL;
     477        $content .= '<table class="has-fixed-layout">' . PHP_EOL;
     478        $content .= '<tbody>' . $this->get_inner_html( $tbody[0] ) . '</tbody>' . PHP_EOL;
     479        $content .= '</table>' . PHP_EOL;
     480        $content .= '</figure>' . PHP_EOL;
     481        $content .= '<!-- /wp:table -->' . PHP_EOL . PHP_EOL;
     482
     483        return $content;
     484    }
    448485}
  • surferseo/trunk/readme.txt

    r3242697 r3269774  
    55Requires PHP: 7.4
    66Tested up to: 6.7.2
    7 Stable tag: 1.6.2.552
     7Stable tag: 1.6.3.556
    88License: GPLv2 or later
    99License URI: https://www.gnu.org/licenses/gpl-2.0.html
     
    8888
    8989== Changelog ==
     90
     91= 1.6.3 =
     92* FEATURE: Handle tables export from Surfer
     93* FIX: But that sometimes put whole content into single Text element in Elementor
     94* FIX: Limit number of tags, categories and users on export list, to avoid errors
     95* FIX: Remove <p> tag from inside of the <li> elements in lists
     96* FIX: Prevent post publication date change on export
    9097
    9198= 1.6.2 =
     
    220227== Upgrade Notice ==
    221228
     229= 1.6.3 =
     230Support for tables export and better exports
     231
     232= 1.6.2 =
     233Allow to set attributes for links during import
     234
    222235= 1.6.1 =
    223 Allow to set attributes for links during import
    224 
    225 = 1.6.1 =
    226 Improves Elementor integration and better images handling.
     236Improves Elementor integration and better images handling
    227237
    228238= 1.6.0 =
  • surferseo/trunk/surferseo.php

    r3242697 r3269774  
    44 * Plugin URI: https://wordpress.org/plugins/surferseo/
    55 * Description: Create content that ranks with Surfer in WordPress
    6  * Version: 1.6.2.552
     6 * Version: 1.6.3.556
    77 * Author: Surfer
    88 * Author URI: https://surferseo.com
     
    2323
    2424if ( ! defined( 'SURFER_VERSION' ) ) {
    25     define( 'SURFER_VERSION', '1.6.2.552' );
     25    define( 'SURFER_VERSION', '1.6.3.556' );
    2626}
    2727
Note: See TracChangeset for help on using the changeset viewer.