Changeset 3269774
- Timestamp:
- 04/09/2025 02:50:38 PM (12 months ago)
- Location:
- surferseo
- Files:
-
- 16 edited
- 1 copied
-
tags/1.6.3.556 (copied) (copied from surferseo/trunk)
-
tags/1.6.3.556/includes/class-surferseo.php (modified) (2 diffs)
-
tags/1.6.3.556/includes/forms/class-surfer-form-config-ci.php (modified) (5 diffs)
-
tags/1.6.3.556/includes/surfer/class-content-importer.php (modified) (2 diffs)
-
tags/1.6.3.556/includes/surfer/class-surfer.php (modified) (3 diffs)
-
tags/1.6.3.556/includes/surfer/content-parsers/class-elementor-parser.php (modified) (4 diffs)
-
tags/1.6.3.556/includes/surfer/content-parsers/class-gutenberg-parser.php (modified) (6 diffs)
-
tags/1.6.3.556/readme.txt (modified) (3 diffs)
-
tags/1.6.3.556/surferseo.php (modified) (2 diffs)
-
trunk/includes/class-surferseo.php (modified) (2 diffs)
-
trunk/includes/forms/class-surfer-form-config-ci.php (modified) (5 diffs)
-
trunk/includes/surfer/class-content-importer.php (modified) (2 diffs)
-
trunk/includes/surfer/class-surfer.php (modified) (3 diffs)
-
trunk/includes/surfer/content-parsers/class-elementor-parser.php (modified) (4 diffs)
-
trunk/includes/surfer/content-parsers/class-gutenberg-parser.php (modified) (6 diffs)
-
trunk/readme.txt (modified) (3 diffs)
-
trunk/surferseo.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
surferseo/tags/1.6.3.556/includes/class-surferseo.php
r3242697 r3269774 132 132 $this->init_hooks(); 133 133 134 add_action( 'init', array( $this, 'register_surfer_backup_status' ) );135 136 134 add_filter( 'plugin_action_links_surferseo/surferseo.php', array( $this, 'add_actions_links' ) ); 137 135 … … 233 231 234 232 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 void241 */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 );256 233 } 257 234 -
surferseo/tags/1.6.3.556/includes/forms/class-surfer-form-config-ci.php
r3242697 r3269774 133 133 $this->add_field( $field ); 134 134 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 ); 136 141 137 142 $field = new Surfer_Form_Element_Select( 'default_post_author' ); … … 179 184 $field->add_option( 'nofollow', __( 'nofollow', 'surferseo' ) ); 180 185 $field->add_option( 'dofollow', __( 'dofollow', 'surferseo' ) ); 186 $field->set_row_classes( 'surfer-connected' ); 181 187 $this->add_field( $field ); 182 188 … … 188 194 $field->add_option( '_parent', __( '_parent', 'surferseo' ) ); 189 195 $field->add_option( '_top', __( '_top', 'surferseo' ) ); 196 $field->set_row_classes( 'surfer-connected' ); 190 197 $this->add_field( $field ); 191 198 … … 197 204 $field->add_option( 'nofollow', __( 'nofollow', 'surferseo' ) ); 198 205 $field->add_option( 'dofollow', __( 'dofollow', 'surferseo' ) ); 206 $field->set_row_classes( 'surfer-connected' ); 199 207 $this->add_field( $field ); 200 208 … … 206 214 $field->add_option( '_parent', __( '_parent', 'surferseo' ) ); 207 215 $field->add_option( '_top', __( '_top', 'surferseo' ) ); 216 $field->set_row_classes( 'surfer-connected' ); 208 217 $this->add_field( $field ); 209 218 -
surferseo/tags/1.6.3.556/includes/surfer/class-content-importer.php
r3210507 r3269774 64 64 65 65 if ( isset( $args['post_id'] ) && $args['post_id'] > 0 ) { 66 67 66 $provided_post_id = $args['post_id']; 68 67 $data['ID'] = $provided_post_id; 69 68 $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 );75 69 } 76 70 … … 83 77 $this->resolve_post_meta_details( $args, $data ); 84 78 85 if ( isset( $post ) && 'publish ed' === $post['post_status'] ) {79 if ( isset( $post ) && 'publish' === $post['post_status'] ) { 86 80 // WordPress set current date as default and we do not want to change publication date. 87 81 $data['post_date'] = $post['post_date']; -
surferseo/tags/1.6.3.556/includes/surfer/class-surfer.php
r3242697 r3269774 893 893 $users = array(); 894 894 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 ); 896 901 897 902 if ( $all_users ) { … … 915 920 $args = array( 916 921 'hide_empty' => false, 922 'orderby' => 'count', 923 'order' => 'DESC', 924 'number' => 50, 917 925 ); 918 926 … … 941 949 'taxonomy' => 'post_tag', 942 950 'hide_empty' => false, 951 'orderby' => 'count', 952 'order' => 'DESC', 943 953 'number' => 50, 944 954 ); -
surferseo/tags/1.6.3.556/includes/surfer/content-parsers/class-elementor-parser.php
r3187966 r3269774 87 87 update_post_meta( $post_id, '_elementor_version', ELEMENTOR_VERSION ); 88 88 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 ) );90 89 update_post_meta( $post_id, '_wp_page_template', $page_template ); 91 90 } … … 149 148 150 149 /** 151 * Function i nterates by HTML tags in provided content.150 * Function iterates by HTML tags in provided content. 152 151 * 153 152 * @param DOMDocument $parent_node - node to parse. … … 225 224 if ( 'blockquote' === $node_name ) { 226 225 return $this->parse_node_blockquote( $node, $elementor_styling ); 226 } 227 228 if ( 'table' === $node_name ) { 229 return $this->parse_node_table( $node, $elementor_styling ); 227 230 } 228 231 … … 442 445 } 443 446 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( '"', ''' ), 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 444 485 /** 445 486 * Functions prepare attributes for HTML and Gutendber tags. -
surferseo/tags/1.6.3.556/includes/surfer/content-parsers/class-gutenberg-parser.php
r3210507 r3269774 44 44 45 45 /** 46 * Function i nterates by HTML tags in provided content.46 * Function iterates by HTML tags in provided content. 47 47 * 48 48 * @param DOMNode|DOMDocument|DOMElement $parent_node - node to parse. … … 75 75 $execute_for_child = true; 76 76 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 ) ) { 86 79 $execute_for_child = false; 87 80 } … … 139 132 if ( 'pre' === $node_name ) { 140 133 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 ); 141 138 } 142 139 … … 351 348 $content = '<!-- wp:list -->' . PHP_EOL; 352 349 $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 354 357 $content .= '</ul>' . PHP_EOL; 355 358 $content .= '<!-- /wp:list -->' . PHP_EOL . PHP_EOL; … … 375 378 $content = '<!-- wp:list {"ordered":true} -->' . PHP_EOL; 376 379 $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 378 387 $content .= '</ol>' . PHP_EOL; 379 388 $content .= '<!-- /wp:list -->' . PHP_EOL . PHP_EOL; … … 446 455 return $content; 447 456 } 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 } 448 485 } -
surferseo/tags/1.6.3.556/readme.txt
r3242697 r3269774 5 5 Requires PHP: 7.4 6 6 Tested up to: 6.7.2 7 Stable tag: 1.6. 2.5527 Stable tag: 1.6.3.556 8 8 License: GPLv2 or later 9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 88 88 89 89 == 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 90 97 91 98 = 1.6.2 = … … 220 227 == Upgrade Notice == 221 228 229 = 1.6.3 = 230 Support for tables export and better exports 231 232 = 1.6.2 = 233 Allow to set attributes for links during import 234 222 235 = 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. 236 Improves Elementor integration and better images handling 227 237 228 238 = 1.6.0 = -
surferseo/tags/1.6.3.556/surferseo.php
r3242697 r3269774 4 4 * Plugin URI: https://wordpress.org/plugins/surferseo/ 5 5 * Description: Create content that ranks with Surfer in WordPress 6 * Version: 1.6. 2.5526 * Version: 1.6.3.556 7 7 * Author: Surfer 8 8 * Author URI: https://surferseo.com … … 23 23 24 24 if ( ! defined( 'SURFER_VERSION' ) ) { 25 define( 'SURFER_VERSION', '1.6. 2.552' );25 define( 'SURFER_VERSION', '1.6.3.556' ); 26 26 } 27 27 -
surferseo/trunk/includes/class-surferseo.php
r3242697 r3269774 132 132 $this->init_hooks(); 133 133 134 add_action( 'init', array( $this, 'register_surfer_backup_status' ) );135 136 134 add_filter( 'plugin_action_links_surferseo/surferseo.php', array( $this, 'add_actions_links' ) ); 137 135 … … 233 231 234 232 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 void241 */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 );256 233 } 257 234 -
surferseo/trunk/includes/forms/class-surfer-form-config-ci.php
r3242697 r3269774 133 133 $this->add_field( $field ); 134 134 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 ); 136 141 137 142 $field = new Surfer_Form_Element_Select( 'default_post_author' ); … … 179 184 $field->add_option( 'nofollow', __( 'nofollow', 'surferseo' ) ); 180 185 $field->add_option( 'dofollow', __( 'dofollow', 'surferseo' ) ); 186 $field->set_row_classes( 'surfer-connected' ); 181 187 $this->add_field( $field ); 182 188 … … 188 194 $field->add_option( '_parent', __( '_parent', 'surferseo' ) ); 189 195 $field->add_option( '_top', __( '_top', 'surferseo' ) ); 196 $field->set_row_classes( 'surfer-connected' ); 190 197 $this->add_field( $field ); 191 198 … … 197 204 $field->add_option( 'nofollow', __( 'nofollow', 'surferseo' ) ); 198 205 $field->add_option( 'dofollow', __( 'dofollow', 'surferseo' ) ); 206 $field->set_row_classes( 'surfer-connected' ); 199 207 $this->add_field( $field ); 200 208 … … 206 214 $field->add_option( '_parent', __( '_parent', 'surferseo' ) ); 207 215 $field->add_option( '_top', __( '_top', 'surferseo' ) ); 216 $field->set_row_classes( 'surfer-connected' ); 208 217 $this->add_field( $field ); 209 218 -
surferseo/trunk/includes/surfer/class-content-importer.php
r3210507 r3269774 64 64 65 65 if ( isset( $args['post_id'] ) && $args['post_id'] > 0 ) { 66 67 66 $provided_post_id = $args['post_id']; 68 67 $data['ID'] = $provided_post_id; 69 68 $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 );75 69 } 76 70 … … 83 77 $this->resolve_post_meta_details( $args, $data ); 84 78 85 if ( isset( $post ) && 'publish ed' === $post['post_status'] ) {79 if ( isset( $post ) && 'publish' === $post['post_status'] ) { 86 80 // WordPress set current date as default and we do not want to change publication date. 87 81 $data['post_date'] = $post['post_date']; -
surferseo/trunk/includes/surfer/class-surfer.php
r3242697 r3269774 893 893 $users = array(); 894 894 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 ); 896 901 897 902 if ( $all_users ) { … … 915 920 $args = array( 916 921 'hide_empty' => false, 922 'orderby' => 'count', 923 'order' => 'DESC', 924 'number' => 50, 917 925 ); 918 926 … … 941 949 'taxonomy' => 'post_tag', 942 950 'hide_empty' => false, 951 'orderby' => 'count', 952 'order' => 'DESC', 943 953 'number' => 50, 944 954 ); -
surferseo/trunk/includes/surfer/content-parsers/class-elementor-parser.php
r3187966 r3269774 87 87 update_post_meta( $post_id, '_elementor_version', ELEMENTOR_VERSION ); 88 88 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 ) );90 89 update_post_meta( $post_id, '_wp_page_template', $page_template ); 91 90 } … … 149 148 150 149 /** 151 * Function i nterates by HTML tags in provided content.150 * Function iterates by HTML tags in provided content. 152 151 * 153 152 * @param DOMDocument $parent_node - node to parse. … … 225 224 if ( 'blockquote' === $node_name ) { 226 225 return $this->parse_node_blockquote( $node, $elementor_styling ); 226 } 227 228 if ( 'table' === $node_name ) { 229 return $this->parse_node_table( $node, $elementor_styling ); 227 230 } 228 231 … … 442 445 } 443 446 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( '"', ''' ), 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 444 485 /** 445 486 * Functions prepare attributes for HTML and Gutendber tags. -
surferseo/trunk/includes/surfer/content-parsers/class-gutenberg-parser.php
r3210507 r3269774 44 44 45 45 /** 46 * Function i nterates by HTML tags in provided content.46 * Function iterates by HTML tags in provided content. 47 47 * 48 48 * @param DOMNode|DOMDocument|DOMElement $parent_node - node to parse. … … 75 75 $execute_for_child = true; 76 76 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 ) ) { 86 79 $execute_for_child = false; 87 80 } … … 139 132 if ( 'pre' === $node_name ) { 140 133 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 ); 141 138 } 142 139 … … 351 348 $content = '<!-- wp:list -->' . PHP_EOL; 352 349 $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 354 357 $content .= '</ul>' . PHP_EOL; 355 358 $content .= '<!-- /wp:list -->' . PHP_EOL . PHP_EOL; … … 375 378 $content = '<!-- wp:list {"ordered":true} -->' . PHP_EOL; 376 379 $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 378 387 $content .= '</ol>' . PHP_EOL; 379 388 $content .= '<!-- /wp:list -->' . PHP_EOL . PHP_EOL; … … 446 455 return $content; 447 456 } 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 } 448 485 } -
surferseo/trunk/readme.txt
r3242697 r3269774 5 5 Requires PHP: 7.4 6 6 Tested up to: 6.7.2 7 Stable tag: 1.6. 2.5527 Stable tag: 1.6.3.556 8 8 License: GPLv2 or later 9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 88 88 89 89 == 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 90 97 91 98 = 1.6.2 = … … 220 227 == Upgrade Notice == 221 228 229 = 1.6.3 = 230 Support for tables export and better exports 231 232 = 1.6.2 = 233 Allow to set attributes for links during import 234 222 235 = 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. 236 Improves Elementor integration and better images handling 227 237 228 238 = 1.6.0 = -
surferseo/trunk/surferseo.php
r3242697 r3269774 4 4 * Plugin URI: https://wordpress.org/plugins/surferseo/ 5 5 * Description: Create content that ranks with Surfer in WordPress 6 * Version: 1.6. 2.5526 * Version: 1.6.3.556 7 7 * Author: Surfer 8 8 * Author URI: https://surferseo.com … … 23 23 24 24 if ( ! defined( 'SURFER_VERSION' ) ) { 25 define( 'SURFER_VERSION', '1.6. 2.552' );25 define( 'SURFER_VERSION', '1.6.3.556' ); 26 26 } 27 27
Note: See TracChangeset
for help on using the changeset viewer.