Version Description
Download this release
Release Info
Developer | benjaminprojas |
Plugin | All in One SEO Pack |
Version | 3.4.3 |
Comparing to | |
See all releases |
Code changes from version 3.4.2 to 3.4.3
- admin/aioseop_module_class.php +6 -0
- admin/class-aioseop-helper.php +1 -1
- admin/class-aioseop-notices.php +1 -1
- admin/display/notices/review-plugin-cta-notice.php +2 -2
- admin/display/notices/review-plugin-notice.php +0 -50
- aioseop_class.php +13 -12
- all_in_one_seo_pack.php +1 -1
- class-aioseop-core.php +13 -0
- css/admin-notice.min.css +0 -1
- css/aioseop-font-icons-rtl.css +0 -8
- css/aioseop-font-icons-rtl.min.css +0 -1
- css/aioseop-font-icons.min.css +0 -1
- css/aioseop-jquery-ui.min.css +0 -1
- css/aioseop-welcome-rtl.min.css +0 -1
- css/aioseop-welcome.min.css +0 -1
- css/aiosp_admin.css +2 -1
- css/aiosp_admin.min.css +0 -1
- images/accept.png +0 -0
- images/cog_edit.png +0 -0
- images/delete.png +0 -0
- inc/admin/class-aioseop-education.php +41 -1
- inc/admin/class-aioseop-link-attributes.php +5 -1
- inc/aioseop_functions.php +31 -2
- inc/aioseop_updates_class.php +6 -0
- inc/schema/aioseop-context.php +137 -9
- inc/schema/graphs/graph-webpage.php +19 -82
- js/admin/aioseop-quickedit.js +21 -16
- js/quickedit_functions.js +0 -93
- js/quickedit_functions.min.js +0 -1
- modules/aioseop_feature_manager.php +1 -1
- modules/images/banner11.png +0 -0
- modules/images/banner12.png +0 -0
- modules/images/banner13.png +0 -0
- modules/images/banner14.png +0 -0
- modules/images/banner15.png +0 -0
- modules/images/banner21.jpg +0 -0
- modules/images/banner22.jpg +0 -0
- modules/images/facebook-follow-retina.png +0 -0
- modules/images/facebook-follow-standard.png +0 -0
- modules/images/twitter-follow-retina.png +0 -0
- modules/images/twitter-follow-standard.png +0 -0
- readme.txt +1 -1
admin/aioseop_module_class.php
CHANGED
@@ -319,6 +319,12 @@ if ( ! class_exists( 'All_in_One_SEO_Pack_Module' ) ) {
|
|
319 |
if ( false == $option_name ) {
|
320 |
$option_name = $this->get_option_name();
|
321 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
322 |
if ( $this->store_option || $option_name == $this->parent_option ) {
|
323 |
return update_option( $option_name, $option_data );
|
324 |
} else {
|
319 |
if ( false == $option_name ) {
|
320 |
$option_name = $this->get_option_name();
|
321 |
}
|
322 |
+
|
323 |
+
// Delete rewrite rules when the XML Sitemap module is deactivated.
|
324 |
+
if ( 'aiosp_feature_manager_options' === $option_name && 'on' !== $option_data['aiosp_feature_manager_enable_sitemap'] ) {
|
325 |
+
aioseop_delete_rewrite_rules();
|
326 |
+
}
|
327 |
+
|
328 |
if ( $this->store_option || $option_name == $this->parent_option ) {
|
329 |
return update_option( $option_name, $option_data );
|
330 |
} else {
|
admin/class-aioseop-helper.php
CHANGED
@@ -443,7 +443,7 @@ class AIOSEOP_Helper {
|
|
443 |
'aiosp_unprotect_meta' => __( "Check this to unprotect internal postmeta fields for use with XMLRPC. If you don't know what that is, leave it unchecked.", 'all-in-one-seo-pack' ),
|
444 |
'aiosp_redirect_attachement_parent' => __( 'Redirect attachment pages to post parent.', 'all-in-one-seo-pack' ),
|
445 |
/* translators: %s is a placeholder, which means that it should not be translated. It will be replaced with the name of the plugin, All in One SEO Pack. */
|
446 |
-
'aiosp_ex_pages' => sprintf( __( 'Enter a comma separated list of pages here to be excluded by %s. This is helpful when using plugins which generate their own non-WordPress dynamic pages. Ex: <em>/forum/, /contact/</em><br />For instance, if you want to exclude the virtual pages generated by a forum plugin, all you have to do is add "forum" or "/forum" or "/forum/" or any URL with the word "forum" in it here, such as "http://
|
447 |
'aiosp_post_meta_tags' => __( 'What you enter here will be copied verbatim to the header of all Posts. You can enter whatever additional headers you want here, even references to stylesheets.', 'all-in-one-seo-pack' ),
|
448 |
'aiosp_page_meta_tags' => __( 'What you enter here will be copied verbatim to the header of all Pages. You can enter whatever additional headers you want here, even references to stylesheets.', 'all-in-one-seo-pack' ),
|
449 |
'aiosp_front_meta_tags' => __( 'What you enter here will be copied verbatim to the header of the front page if you have set a static page in Settings, Reading, Front Page Displays. You can enter whatever additional headers you want here, even references to stylesheets. This will fall back to using Additional Page Headers if you have them set and nothing is entered here.', 'all-in-one-seo-pack' ),
|
443 |
'aiosp_unprotect_meta' => __( "Check this to unprotect internal postmeta fields for use with XMLRPC. If you don't know what that is, leave it unchecked.", 'all-in-one-seo-pack' ),
|
444 |
'aiosp_redirect_attachement_parent' => __( 'Redirect attachment pages to post parent.', 'all-in-one-seo-pack' ),
|
445 |
/* translators: %s is a placeholder, which means that it should not be translated. It will be replaced with the name of the plugin, All in One SEO Pack. */
|
446 |
+
'aiosp_ex_pages' => sprintf( __( 'Enter a comma separated list of pages here to be excluded by %s. This is helpful when using plugins which generate their own non-WordPress dynamic pages. Ex: <em>/forum/, /contact/</em><br />For instance, if you want to exclude the virtual pages generated by a forum plugin, all you have to do is add "forum" or "/forum" or "/forum/" or any URL with the word "forum" in it here, such as "http://example.com/forum" or "http://example.com/forum/someforumpage", and it will be excluded.', 'all-in-one-seo-pack' ), AIOSEOP_PLUGIN_NAME ),
|
447 |
'aiosp_post_meta_tags' => __( 'What you enter here will be copied verbatim to the header of all Posts. You can enter whatever additional headers you want here, even references to stylesheets.', 'all-in-one-seo-pack' ),
|
448 |
'aiosp_page_meta_tags' => __( 'What you enter here will be copied verbatim to the header of all Pages. You can enter whatever additional headers you want here, even references to stylesheets.', 'all-in-one-seo-pack' ),
|
449 |
'aiosp_front_meta_tags' => __( 'What you enter here will be copied verbatim to the header of the front page if you have set a static page in Settings, Reading, Front Page Displays. You can enter whatever additional headers you want here, even references to stylesheets. This will fall back to using Additional Page Headers if you have them set and nothing is entered here.', 'all-in-one-seo-pack' ),
|
admin/class-aioseop-notices.php
CHANGED
@@ -93,7 +93,7 @@ if ( ! class_exists( 'AIOSEOP_Notices' ) ) {
|
|
93 |
*
|
94 |
* @var int $default_dismiss_delay
|
95 |
*/
|
96 |
-
private $default_dismiss_delay =
|
97 |
|
98 |
/**
|
99 |
* List of Screens used in AIOSEOP.
|
93 |
*
|
94 |
* @var int $default_dismiss_delay
|
95 |
*/
|
96 |
+
private $default_dismiss_delay = 315569260; // 10 years
|
97 |
|
98 |
/**
|
99 |
* List of Screens used in AIOSEOP.
|
admin/display/notices/review-plugin-cta-notice.php
CHANGED
@@ -42,8 +42,8 @@ function aioseop_notice_review_plugin_cta() {
|
|
42 |
/* translators: %1$s is a placeholder, which means that it should not be translated. It will be replaced with the name of the plugin, All in One SEO Pack. */
|
43 |
'<p>' . sprintf( __( 'Are you enjoying %1$s?', 'all-in-one-seo-pack' ), AIOSEOP_PLUGIN_NAME ) . '</p>
|
44 |
<p>
|
45 |
-
<a href="#" class="aioseo-review-switch-step-
|
46 |
-
<a href="#" class="aioseo-review-switch-step-
|
47 |
</p>
|
48 |
</div>
|
49 |
<div class="step-2" style="display:none;">' .
|
42 |
/* translators: %1$s is a placeholder, which means that it should not be translated. It will be replaced with the name of the plugin, All in One SEO Pack. */
|
43 |
'<p>' . sprintf( __( 'Are you enjoying %1$s?', 'all-in-one-seo-pack' ), AIOSEOP_PLUGIN_NAME ) . '</p>
|
44 |
<p>
|
45 |
+
<a href="#" class="aioseo-review-switch-step-3" data-step="3">' . __( 'Yes I love it', 'all-in-one-seo-pack' ) . '</a> 🙂 |
|
46 |
+
<a href="#" class="aioseo-review-switch-step-2" data-step="2">' . __( 'Not Really...', 'all-in-one-seo-pack' ) . '</a>
|
47 |
</p>
|
48 |
</div>
|
49 |
<div class="step-2" style="display:none;">' .
|
admin/display/notices/review-plugin-notice.php
DELETED
@@ -1,50 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Review Plugin Notice
|
4 |
-
*
|
5 |
-
* @since 3.0
|
6 |
-
* @package All-in-One-SEO-Pack
|
7 |
-
* @subpackage AIOSEOP_Notices
|
8 |
-
*/
|
9 |
-
|
10 |
-
/**
|
11 |
-
* Notice - Review Plugin
|
12 |
-
*
|
13 |
-
* @since 3.0
|
14 |
-
*
|
15 |
-
* @return array Notice configuration.
|
16 |
-
*/
|
17 |
-
function aioseop_notice_review_plugin() {
|
18 |
-
return array(
|
19 |
-
'slug' => 'review_plugin',
|
20 |
-
'delay_time' => 1036800,
|
21 |
-
'target' => 'user',
|
22 |
-
'screens' => array( 'aioseop' ),
|
23 |
-
'class' => 'notice-info',
|
24 |
-
/* translators: %1$s is a placeholder, which means that it should not be translated. It will be replaced with the name of the plugin, All in One SEO Pack. */
|
25 |
-
'message' => sprintf( __( 'You have been using %1$s for a while now. That is awesome! If you like %2$s, then please leave us a 5-star rating. Huge thanks in advance!', 'all-in-one-seo-pack' ), AIOSEOP_PLUGIN_NAME, AIOSEOP_PLUGIN_NAME ),
|
26 |
-
'action_options' => array(
|
27 |
-
array(
|
28 |
-
'time' => 0,
|
29 |
-
'text' => __( 'Add a review', 'all-in-one-seo-pack' ),
|
30 |
-
'link' => 'https://wordpress.org/support/plugin/all-in-one-seo-pack/reviews?rate=5#new-post',
|
31 |
-
'dismiss' => false,
|
32 |
-
'class' => 'button-primary button-orange',
|
33 |
-
),
|
34 |
-
array(
|
35 |
-
'text' => __( 'Remind me later', 'all-in-one-seo-pack' ),
|
36 |
-
'time' => 432000,
|
37 |
-
'dismiss' => false,
|
38 |
-
'class' => 'button-secondary',
|
39 |
-
),
|
40 |
-
array(
|
41 |
-
'time' => 0,
|
42 |
-
'text' => __( 'No, thanks', 'all-in-one-seo-pack' ),
|
43 |
-
'dismiss' => true,
|
44 |
-
'class' => 'button-secondary',
|
45 |
-
),
|
46 |
-
),
|
47 |
-
);
|
48 |
-
}
|
49 |
-
// phpcs:ignore Squiz.Commenting.InlineComment.InvalidEndChar
|
50 |
-
// add_filter( 'aioseop_admin_notice-review_plugin', 'aioseop_notice_review_plugin' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
aioseop_class.php
CHANGED
@@ -3752,9 +3752,9 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
|
|
3752 |
$extra_title_length = strlen( preg_replace( '/<span.*\/span>/', '', html_entity_decode( $title_format, ENT_QUOTES ) ) );
|
3753 |
|
3754 |
$snippet_preview_data = array(
|
3755 |
-
'autogenerateDescriptions' => $aioseop_options['aiosp_generate_descriptions'],
|
3756 |
-
'skipExcerpt' => $aioseop_options['aiosp_skip_excerpt'],
|
3757 |
-
'dontTruncateDescriptions' => $aioseop_options['aiosp_dont_truncate_descriptions'],
|
3758 |
);
|
3759 |
|
3760 |
$count_chars_data['extraTitleLength'] = $extra_title_length;
|
@@ -4298,6 +4298,8 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
|
|
4298 |
* @since 3.4.0
|
4299 |
*/
|
4300 |
function check_php_version() {
|
|
|
|
|
4301 |
|
4302 |
// Display for PHP below 5.6
|
4303 |
if ( version_compare( PHP_VERSION, '5.4', '>=' ) ) {
|
@@ -4314,7 +4316,6 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
|
|
4314 |
return;
|
4315 |
}
|
4316 |
|
4317 |
-
global $aioseop_notices;
|
4318 |
$aioseop_notices->reset_notice( 'check_php_version' );
|
4319 |
$aioseop_notices->activate_notice( 'check_php_version' );
|
4320 |
}
|
@@ -5079,10 +5080,6 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
|
|
5079 |
|
5080 |
if ( isset( $awmp_edit ) && ! empty( $awmp_edit ) && wp_verify_nonce( $nonce, 'edit-aioseop-nonce' ) ) {
|
5081 |
|
5082 |
-
if ( empty( $this->options['aiosp_can'] ) ) {
|
5083 |
-
unset( $optlist['custom_link'] );
|
5084 |
-
}
|
5085 |
-
|
5086 |
$optlist = array(
|
5087 |
'keywords',
|
5088 |
'description',
|
@@ -5097,6 +5094,10 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
|
|
5097 |
'sitemap_frequency',
|
5098 |
);
|
5099 |
|
|
|
|
|
|
|
|
|
5100 |
if ( ! AIOSEOPPRO ) {
|
5101 |
$optlist = array_diff( $optlist, array( 'sitemap_priority', 'sitemap_frequency' ) );
|
5102 |
}
|
@@ -5357,10 +5358,6 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
|
|
5357 |
|
5358 |
if ( isset( $awmp_edit ) && ! empty( $awmp_edit ) && wp_verify_nonce( $nonce, 'edit-aioseop-nonce' ) ) {
|
5359 |
|
5360 |
-
if ( empty( $this->options['aiosp_can'] ) ) {
|
5361 |
-
unset( $optlist['custom_link'] );
|
5362 |
-
}
|
5363 |
-
|
5364 |
$optlist = array(
|
5365 |
'keywords',
|
5366 |
'description',
|
@@ -5375,6 +5372,10 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
|
|
5375 |
'sitemap_frequency',
|
5376 |
);
|
5377 |
|
|
|
|
|
|
|
|
|
5378 |
if ( ! AIOSEOPPRO ) {
|
5379 |
$optlist = array_diff( $optlist, array( 'sitemap_priority', 'sitemap_frequency' ) );
|
5380 |
}
|
3752 |
$extra_title_length = strlen( preg_replace( '/<span.*\/span>/', '', html_entity_decode( $title_format, ENT_QUOTES ) ) );
|
3753 |
|
3754 |
$snippet_preview_data = array(
|
3755 |
+
'autogenerateDescriptions' => isset( $aioseop_options['aiosp_generate_descriptions'] ) ? $aioseop_options['aiosp_generate_descriptions'] : '',
|
3756 |
+
'skipExcerpt' => isset( $aioseop_options['aiosp_skip_excerpt'] ) ? $aioseop_options['aiosp_skip_excerpt'] : '',
|
3757 |
+
'dontTruncateDescriptions' => isset( $aioseop_options['aiosp_dont_truncate_descriptions'] ) ? $aioseop_options['aiosp_dont_truncate_descriptions'] : '',
|
3758 |
);
|
3759 |
|
3760 |
$count_chars_data['extraTitleLength'] = $extra_title_length;
|
4298 |
* @since 3.4.0
|
4299 |
*/
|
4300 |
function check_php_version() {
|
4301 |
+
global $aioseop_notices;
|
4302 |
+
$aioseop_notices->deactivate_notice( 'check_php_version' );
|
4303 |
|
4304 |
// Display for PHP below 5.6
|
4305 |
if ( version_compare( PHP_VERSION, '5.4', '>=' ) ) {
|
4316 |
return;
|
4317 |
}
|
4318 |
|
|
|
4319 |
$aioseop_notices->reset_notice( 'check_php_version' );
|
4320 |
$aioseop_notices->activate_notice( 'check_php_version' );
|
4321 |
}
|
5080 |
|
5081 |
if ( isset( $awmp_edit ) && ! empty( $awmp_edit ) && wp_verify_nonce( $nonce, 'edit-aioseop-nonce' ) ) {
|
5082 |
|
|
|
|
|
|
|
|
|
5083 |
$optlist = array(
|
5084 |
'keywords',
|
5085 |
'description',
|
5094 |
'sitemap_frequency',
|
5095 |
);
|
5096 |
|
5097 |
+
if ( empty( $this->options['aiosp_can'] ) ) {
|
5098 |
+
unset( $optlist['custom_link'] );
|
5099 |
+
}
|
5100 |
+
|
5101 |
if ( ! AIOSEOPPRO ) {
|
5102 |
$optlist = array_diff( $optlist, array( 'sitemap_priority', 'sitemap_frequency' ) );
|
5103 |
}
|
5358 |
|
5359 |
if ( isset( $awmp_edit ) && ! empty( $awmp_edit ) && wp_verify_nonce( $nonce, 'edit-aioseop-nonce' ) ) {
|
5360 |
|
|
|
|
|
|
|
|
|
5361 |
$optlist = array(
|
5362 |
'keywords',
|
5363 |
'description',
|
5372 |
'sitemap_frequency',
|
5373 |
);
|
5374 |
|
5375 |
+
if ( empty( $this->options['aiosp_can'] ) ) {
|
5376 |
+
unset( $optlist['custom_link'] );
|
5377 |
+
}
|
5378 |
+
|
5379 |
if ( ! AIOSEOPPRO ) {
|
5380 |
$optlist = array_diff( $optlist, array( 'sitemap_priority', 'sitemap_frequency' ) );
|
5381 |
}
|
all_in_one_seo_pack.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: All In One SEO Pack
|
4 |
Plugin URI: https://semperplugins.com/all-in-one-seo-pack-pro-version/
|
5 |
Description: Out-of-the-box SEO for WordPress. Features like XML Sitemaps, SEO for custom post types, SEO for blogs or business sites, SEO for ecommerce sites, and much more. More than 50 million downloads since 2007.
|
6 |
-
Version: 3.4.
|
7 |
Author: All in One SEO Team
|
8 |
Author URI: https://semperplugins.com/all-in-one-seo-pack-pro-version/
|
9 |
Text Domain: all-in-one-seo-pack
|
3 |
Plugin Name: All In One SEO Pack
|
4 |
Plugin URI: https://semperplugins.com/all-in-one-seo-pack-pro-version/
|
5 |
Description: Out-of-the-box SEO for WordPress. Features like XML Sitemaps, SEO for custom post types, SEO for blogs or business sites, SEO for ecommerce sites, and much more. More than 50 million downloads since 2007.
|
6 |
+
Version: 3.4.3
|
7 |
Author: All in One SEO Team
|
8 |
Author URI: https://semperplugins.com/all-in-one-seo-pack-pro-version/
|
9 |
Text Domain: all-in-one-seo-pack
|
class-aioseop-core.php
CHANGED
@@ -427,6 +427,7 @@ class AIOSEOP_Core {
|
|
427 |
|
428 |
$file_dir = AIOSEOP_PLUGIN_DIR . 'all_in_one_seo_pack.php';
|
429 |
register_activation_hook( $file_dir, array( 'AIOSEOP_Core', 'activate' ) );
|
|
|
430 |
|
431 |
// TODO Move AJAX to aioseop_admin class, and could be a separate function hooked onto admin_init.
|
432 |
add_action( 'wp_ajax_aioseop_ajax_save_meta', 'aioseop_ajax_save_meta' );
|
@@ -508,6 +509,15 @@ class AIOSEOP_Core {
|
|
508 |
}
|
509 |
}
|
510 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
511 |
/**
|
512 |
* Disable AIOSEOP Free version.
|
513 |
*
|
@@ -781,6 +791,9 @@ class AIOSEOP_Core {
|
|
781 |
* @since 3.4.0
|
782 |
*/
|
783 |
function front_enqueue_styles() {
|
|
|
|
|
|
|
784 |
wp_enqueue_style( 'aioseop-toolbar-menu', AIOSEOP_PLUGIN_URL . 'css/admin-toolbar-menu.css', null, AIOSEOP_VERSION, 'all' );
|
785 |
}
|
786 |
}
|
427 |
|
428 |
$file_dir = AIOSEOP_PLUGIN_DIR . 'all_in_one_seo_pack.php';
|
429 |
register_activation_hook( $file_dir, array( 'AIOSEOP_Core', 'activate' ) );
|
430 |
+
register_deactivation_hook( $file_dir, array( 'AIOSEOP_Core', 'deactivate' ) );
|
431 |
|
432 |
// TODO Move AJAX to aioseop_admin class, and could be a separate function hooked onto admin_init.
|
433 |
add_action( 'wp_ajax_aioseop_ajax_save_meta', 'aioseop_ajax_save_meta' );
|
509 |
}
|
510 |
}
|
511 |
|
512 |
+
/**
|
513 |
+
* Runs on plugin deactivation.
|
514 |
+
*
|
515 |
+
* @since 3.4.3
|
516 |
+
*/
|
517 |
+
public static function deactivate() {
|
518 |
+
aioseop_delete_rewrite_rules();
|
519 |
+
}
|
520 |
+
|
521 |
/**
|
522 |
* Disable AIOSEOP Free version.
|
523 |
*
|
791 |
* @since 3.4.0
|
792 |
*/
|
793 |
function front_enqueue_styles() {
|
794 |
+
if ( ! is_user_logged_in() ) {
|
795 |
+
return;
|
796 |
+
}
|
797 |
wp_enqueue_style( 'aioseop-toolbar-menu', AIOSEOP_PLUGIN_URL . 'css/admin-toolbar-menu.css', null, AIOSEOP_VERSION, 'all' );
|
798 |
}
|
799 |
}
|
css/admin-notice.min.css
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
.aioseop-notice-delay{display:inherit}.aioseop-notice-delay.aioseop-delay-0.button-primary.button-orange{background:#d54e21;border-color:#aa3e1a;-webkit-box-shadow:0 1px 0 #aa3e1a;box-shadow:0 1px 0 #aa3e1a;color:#fff;text-decoration:none;text-shadow:0 -1px 1px #d54e21,1px 0 1px #d54e21,0 1px 1px #d54e21,-1px 0 1px #d54e21}
|
|
css/aioseop-font-icons-rtl.css
DELETED
@@ -1,8 +0,0 @@
|
|
1 |
-
/**
|
2 |
-
* RTL overrides for Font Icons.
|
3 |
-
*
|
4 |
-
* @since 3.0.0
|
5 |
-
*/
|
6 |
-
.aioseop-label-quickedit {
|
7 |
-
padding: 0 20px 0 0;
|
8 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
css/aioseop-font-icons-rtl.min.css
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
.aioseop-label-quickedit{padding:0 20px 0 0}
|
|
css/aioseop-font-icons.min.css
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
@font-face{font-family:aioseop-font;src:url(font-icons/aioseop.eot);src:url(font-icons/aioseop.eot?#iefix) format('embedded-opentype'),url(font-icons/aioseop.woff) format('woff'),url(font-icons/aioseop.ttf) format('truetype'),url(font-icons/aioseop.svg#aioseop) format('svg');font-weight:400;font-style:normal}[class*=' aioseop-icon-']:before,[class^=aioseop-icon-]:before{display:inline-block;font-family:aioseop-font;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;speak:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.aioseop_icon{display:inline;margin-right:10px;color:#00a2e2;font-size:2.5em;line-height:1.2;vertical-align:middle}.aioseop-icon-file:before{content:'\69'}.aioseop-icon-support:before{content:'\6a'}.aioseop-icon-cog:before{content:'\6b'}.aioseop-icon-youtube:before{content:'\6c'}.aioseop-icon-book:before{content:'\6d'}.aioseop_help_icon:before{content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAflBMVEUAAAAAn98AnuIAn+EAneAAnuAAnuAAn+QAn+QAneEAnuAAnuAAn+EAnuAAnuEAneAAn+cAneAAnuAAn98AnOIAnuEAneIAn+MAnuEAnuEAn+EAneIAneEAneEAnuEAn+MAneAAneEAnuMAnOIAn+cAneEBnuEAneAAnuMBnuEoGewkAAAAKXRSTlMAEE9/r7/fADCPzwBv718AIPDAAFCwYEAAoAAAn4CQAOAAPwAAcADQAFP96WQAAAMNSURBVHhelZcNc5swDIatBghpoCGEj9Jij2XLMv3/P7glkoNtZJo+d+0lhBOveSXZUjHgZZOkGf4nS5PNC5wiKPFqvnvFgNddvpVQy0tQZCiSFfCEAtiUGKXcwFcB3kpcpXx791HetypFn2NdH9EnrX67KPdL46g/tl3PeqHvWidM2fxyUM7n3fzgof8R0A9zjN3PGTV/HB+6teg66EeIUQqQIGOiSQMGmeRgUQfGPn/Ktyv0k9UQKrCxWzitAq3V6dvYIDG8f8mAROO6ULF/3ecTaHazcvIgjTw/PxfFeVFErCHd31C3fx2v39cKGy6qLKyA1tGr/v8BLWDyb3OLqiw+XGCiq8DFxIvypMKIHqMXvaeLmmyEkn1xSTCAjWcMS7gruFD+eo/QuEC7AYCy+nJXkC1/r5A4Gq2NrQCvjMnL7OZCLggY3KoAI5jMEvKt2hohBYK3wiveuwx8i3qn/uvVf0O2Hh5MnLwOZMTrXgGt4OCi7RuyXNg1F1oDqEZIQh2K6oUALalSWqgiIwUIM4VVqZZvdlkE7QQFFLRVNS3l5NLZarMkgkx6ebWiNPqzSu9nEkM2KDZhjbykh+19KKri3+LkIxLhVlE/E4CaAjsd4AYo9zJkR9huGF7CtPYSX9FyXG4XFHe2UQIt9fIGa6NNJBErX2r35O0wp7KEbZYSNpVtMYngSpbZYoI1G9YClFzOp+vKS6jviLFJ+fWgDralfZO5peW2xX8LKB9NdTtxsQuc7/wV0OTv/YRyiUuIugCls7FwizffsXHgzcRurjEjYgH8zdVKyODZJUDGAuxZubNnt5BIgMQ7YNyowy2c0XfCqyNX6HzE2Ve8A28+nmDDHaJyD9sNChpkxvCYRxgkEjitAkl40AzPjxm7KdNnSAzLgaNFZhcVATtkBmliGaTJSJ6mBnnkMWgpx+XAMZZoMbGZqXEHm6Q4sxA4F4k7DEkjD1PVGJCmGFDLQ5elO+Iqx7B/q88A0FKI+DSlBLMuE4pMF3h6+DZXDLia6PAtA41u67uUqW51E02uf46zvXx+HY4YAAAAAElFTkSuQmCC)}.aioseop-icon-qedit{margin:0 3px;line-height:2;font-size:14px}.aioseop-icon-qedit-accept{color:#9dd490}.aioseop-icon-qedit-accept:hover{color:#97eb84}.aioseop-icon-qedit-accept:before{content:'\70'}.aioseop-icon-qedit-delete{color:#ed8881}.aioseop-icon-qedit-delete:hover{color:#ffad9e}.aioseop-icon-qedit-delete:before{content:'\71'}.aioseop_edit_link{display:inline-block;position:absolute}.aioseop-icon-cog-edit{color:#72777c}.aioseop-icon-cog-edit:hover{color:#0073aa}.aioseop-icon-cog-edit:before{content:'\6e'}.aioseop-label-quickedit{padding-left:20px}div.aioseop_tip_icon{font-size:14px;border:1px solid #888;width:1em;text-align:center;padding:0 4px;-webkit-border-radius:12px;-moz-border-radius:12px;-webkit-box-shadow:1px 1px 1px #888;-moz-box-shadow:1px 1px 1px #888;box-shadow:1px 1px 1px #888;border-radius:12px}div.aioseop_tip_icon:before{content:'?'}.aiosp-di .dashicons{margin:1px 3px;line-height:1;width:42px;height:36px;color:#fff;padding:3px;vertical-align:middle}.aiosp-di .dashicons:before{-webkit-font-smoothing:antialiased;font-family:dashicons;font-weight:400;font-size:1.75em;line-height:38px}.aiosp-di .dashicons.di-facebook{width:36px;background-color:#3b5998;border-radius:2px}.aiosp-di .dashicons.di-facebook:before{content:'\f305'}.aiosp-di .dashicons.di-twitter{width:36px;background-color:#00aced;border-radius:2px}.aiosp-di .dashicons.di-twitter:before{content:'\f301'}
|
|
css/aioseop-jquery-ui.min.css
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
#aiosp_tabbed .ui-helper-clearfix:after,#aiosp_tabbed .ui-helper-clearfix:before{content:"";display:table;border-collapse:collapse}#aiosp_tabbed .ui-helper-clearfix:after{clear:both}#aiosp_tabbed .ui-tabs{position:relative;padding:.2em}#aiosp_tabbed .ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}#aiosp_tabbed .ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}#aiosp_tabbed .ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}#aiosp_tabbed .ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}#aiosp_tabbed .ui-state-default,#aiosp_tabbed .ui-widget-content .ui-state-default,#aiosp_tabbed .ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;font-weight:400;color:#555}#aiosp_tabbed .ui-state-active,#aiosp_tabbed .ui-widget-content .ui-state-active,#aiosp_tabbed .ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:400;color:#212121}#aiosp_tabbed .ui-corner-all,#aiosp_tabbed .ui-corner-left,#aiosp_tabbed .ui-corner-tl,#aiosp_tabbed .ui-corner-top{border-top-left-radius:4px}#aiosp_tabbed .ui-corner-all,#aiosp_tabbed .ui-corner-right,#aiosp_tabbed .ui-corner-top,#aiosp_tabbed .ui-corner-tr{border-top-right-radius:4px}#aiosp_tabbed .ui-corner-all,#aiosp_tabbed .ui-corner-bl,#aiosp_tabbed .ui-corner-bottom,#aiosp_tabbed .ui-corner-left{border-bottom-left-radius:4px}#aiosp_tabbed .ui-corner-all,#aiosp_tabbed .ui-corner-bottom,#aiosp_tabbed .ui-corner-br,#aiosp_tabbed .ui-corner-right{border-bottom-right-radius:4px}.aioseop-ui-tooltip.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}
|
|
css/aioseop-welcome-rtl.min.css
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
.aioseop-welcome-logo{float:left;margin-left:200px;margin-right:0;padding:0 20px 0 20px}
|
|
css/aioseop-welcome.min.css
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
h2.nav-tab-wrapper{margin:22px 0 0 0}#sections{padding:22px;background:#fff;border:1px solid #ccc;border-top:0}section{display:none}section:first-child{display:block}.no-js h2.nav-tab-wrapper{display:none}.no-js #sections{border-top:1px solid #ccc;margin-top:22px}.no-js section{border-top:1px dashed #aaa;margin-top:22px;padding-top:22px}.no-js section:first-child{margin:0;padding:0;border:0}.nav-tab-active{background-color:#fff}.welcome-panel-close{display:none}.welcome-panel-close{z-index:2}.welcome-panel{overflow-x:hidden}.welcome-panel>p{margin-left:15px}.welcome-panel-content{display:inline-block}.welcome-panel-column{width:30%!important;margin-right:3%;display:inline-block;vertical-align:top}.welcome-panel-column:last-child{margin-right:0}.welcome-panel-column p.aioseop-message{width:70%;display:inline-block;vertical-align:top}.welcome-panel-column p.call-to-action{display:inline-block;width:25%;vertical-align:top;margin-left:3%;margin-top:13px}.welcome-panel-column p.call-to-action .button-orange{background:#d54e21;border-color:#aa3e1a;-webkit-box-shadow:0 1px 0 #aa3e1a;box-shadow:0 1px 0 #aa3e1a;color:#fff;text-decoration:none;text-shadow:0 -1px 1px #d54e21,1px 0 1px #d54e21,0 1px 1px #d54e21,-1px 0 1px #d54e21}.welcome-panel-column ul{margin-left:20px}#wp-people-group-rockstars li{margin-bottom:1.33em}#wp-people-group-rockstars li.wp-person{margin-bottom:0}@media screen and (max-width:850px){.welcome-panel-column{width:100%;margin-right:0;display:block}}.aioseop-welcome-logo{float:right;margin-right:200px;padding:0 20px 20px 20px}.rtl h1{font-weight:400}
|
|
css/aiosp_admin.css
CHANGED
@@ -443,4 +443,5 @@ label[for=aioseop_edit_profile_header] {
|
|
443 |
.aioseop-quickedit-spinner {
|
444 |
float:left;
|
445 |
width:20px;
|
446 |
-
margin-right:5px;
|
|
443 |
.aioseop-quickedit-spinner {
|
444 |
float:left;
|
445 |
width:20px;
|
446 |
+
margin-right:5px;
|
447 |
+
}
|
css/aiosp_admin.min.css
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
#aioseop_settings_header #message{padding:5px 0 5px 50px;background-image:url(../images/update32.png);background-repeat:no-repeat;background-position:10px;font-size:14px;min-height:32px;clear:none}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min--moz-device-pixel-ratio:1.5),only screen and (-o-min-device-pixel-ratio:3/2),only screen and (min-device-pixel-ratio:1.5),only screen and (min-resolution:1.5dppx){#aioseop_settings_header #message{background-image:url(../images/update64.png)!important;-webkit-background-size:32px 32px!important;-moz-background-size:32px 32px!important;background-size:32px 32px!important}}.proupgrade a{font-weight:900;color:#d54e21;font-size:105%}li#wp-admin-bar-aioseop-pro-upgrade a.ab-item{font-weight:900;color:#d54e21!important;font-size:110%}#aio-pro-update{font-weight:900;color:#cc4b1f!important;font-size:110%}.upgrade_menu_link{font-weight:900;color:#d54e21;font-size:105%}label[for=aioseop_edit_profile_header]{font-size:1.3em}#aioseop_edit_profile_header{display:none}.ui-tooltip.ui-widget.ui-corner-all.ui-widget-content.aioseop-ui-tooltip{font-family:'Open Sans',sans-serif;-webkit-box-shadow:0 1px 6px -2px #0073aa;box-shadow:0 1px 6px -2px #0073aa;border:0;border-radius:0;background:#fefefe}.ui-tooltip.ui-widget.ui-corner-all.ui-widget-content.aioseop-ui-tooltip a{color:#0073aa;text-decoration:none}.ui-tooltip.ui-widget.ui-corner-all.ui-widget-content.aioseop-ui-tooltip dt{font-weight:700}
|
|
images/accept.png
DELETED
Binary file
|
images/cog_edit.png
DELETED
Binary file
|
images/delete.png
DELETED
Binary file
|
inc/admin/class-aioseop-education.php
CHANGED
@@ -33,6 +33,7 @@ class AIOSEOP_Education {
|
|
33 |
if ( is_admin() ) {
|
34 |
add_action( 'admin_footer_text', array( 'AIOSEOP_Education', 'admin_footer_text' ) );
|
35 |
add_action( 'admin_enqueue_scripts', array( 'AIOSEOP_Education', 'admin_enqueue_scripts' ) );
|
|
|
36 |
|
37 |
return;
|
38 |
}
|
@@ -661,7 +662,10 @@ class AIOSEOP_Education {
|
|
661 |
$conflicting_sitemap_plugins = self::get_conflicting_plugins( 'sitemap' );
|
662 |
}
|
663 |
|
664 |
-
|
|
|
|
|
|
|
665 |
if ( isset( $aioseop_notices->active_notices['conflicting_plugin'] ) ) {
|
666 |
$aioseop_notices->remove_notice( 'conflicting_plugin' );
|
667 |
}
|
@@ -672,6 +676,33 @@ class AIOSEOP_Education {
|
|
672 |
add_filter( 'aioseop_admin_notice-conflicting_plugin', array( 'AIOSEOP_Education', 'filter_conflicting_plugin_notice_data' ) );
|
673 |
}
|
674 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
675 |
/**
|
676 |
* Filters the data that goes into our conflicting plugins notice.
|
677 |
*
|
@@ -961,4 +992,13 @@ class AIOSEOP_Education {
|
|
961 |
</div>' .
|
962 |
self::get_taxonomies_upsell_modal_markup( $page_id, $is_woocommerce_page ) . '</div>';
|
963 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
964 |
}
|
33 |
if ( is_admin() ) {
|
34 |
add_action( 'admin_footer_text', array( 'AIOSEOP_Education', 'admin_footer_text' ) );
|
35 |
add_action( 'admin_enqueue_scripts', array( 'AIOSEOP_Education', 'admin_enqueue_scripts' ) );
|
36 |
+
add_action( 'in_admin_header', array( 'AIOSEOP_Education', 'hide_notices' ) );
|
37 |
|
38 |
return;
|
39 |
}
|
662 |
$conflicting_sitemap_plugins = self::get_conflicting_plugins( 'sitemap' );
|
663 |
}
|
664 |
|
665 |
+
$conflicting_plugins = array_merge( $conflicting_seo_plugins, $conflicting_sitemap_plugins );
|
666 |
+
self::check_new_conflicting_plugins( $conflicting_plugins );
|
667 |
+
|
668 |
+
if ( empty( $conflicting_plugins ) ) {
|
669 |
if ( isset( $aioseop_notices->active_notices['conflicting_plugin'] ) ) {
|
670 |
$aioseop_notices->remove_notice( 'conflicting_plugin' );
|
671 |
}
|
676 |
add_filter( 'aioseop_admin_notice-conflicting_plugin', array( 'AIOSEOP_Education', 'filter_conflicting_plugin_notice_data' ) );
|
677 |
}
|
678 |
|
679 |
+
/**
|
680 |
+
* Checks if new conflicting plugins were found and resets notice status.
|
681 |
+
*
|
682 |
+
* @since 3.4.3
|
683 |
+
*
|
684 |
+
* @param array $conflicting_plugins
|
685 |
+
*/
|
686 |
+
private static function check_new_conflicting_plugins( $conflicting_plugins ) {
|
687 |
+
// get_option() doesn't work here because it returns false if the option is blank, and we need to know if it exists.
|
688 |
+
global $wpdb;
|
689 |
+
$count = (int) $wpdb->get_var( "select count(*) from {$wpdb->prefix}options where option_name = 'aioseop_detected_conflicting_plugins'");
|
690 |
+
|
691 |
+
$stored = array();
|
692 |
+
if( 0 !== $count ) {
|
693 |
+
$stored = get_option( 'aioseop_detected_conflicting_plugins' );
|
694 |
+
update_option( 'aioseop_detected_conflicting_plugins', $conflicting_plugins );
|
695 |
+
} else {
|
696 |
+
add_option( 'aioseop_detected_conflicting_plugins', $conflicting_plugins );
|
697 |
+
}
|
698 |
+
|
699 |
+
if ( count( $stored ) < count( $conflicting_plugins ) ) {
|
700 |
+
if( get_user_meta( get_current_user_id(), 'aioseop_notice_display_time_conflicting_plugin' ) ) {
|
701 |
+
delete_user_meta( get_current_user_id(), 'aioseop_notice_display_time_conflicting_plugin' );
|
702 |
+
}
|
703 |
+
}
|
704 |
+
}
|
705 |
+
|
706 |
/**
|
707 |
* Filters the data that goes into our conflicting plugins notice.
|
708 |
*
|
992 |
</div>' .
|
993 |
self::get_taxonomies_upsell_modal_markup( $page_id, $is_woocommerce_page ) . '</div>';
|
994 |
}
|
995 |
+
|
996 |
+
public static function hide_notices() {
|
997 |
+
if ( 'all-in-one-seo_page_aioseop-about' !== get_current_screen()->id ) {
|
998 |
+
return;
|
999 |
+
}
|
1000 |
+
|
1001 |
+
remove_all_actions('admin_notices');
|
1002 |
+
remove_all_actions('all_admin_notices');
|
1003 |
+
}
|
1004 |
}
|
inc/admin/class-aioseop-link-attributes.php
CHANGED
@@ -23,7 +23,11 @@ class AIOSEOP_Link_Attributes {
|
|
23 |
* @return void
|
24 |
*/
|
25 |
public static function enqueue_link_attributes_classic_editor() {
|
26 |
-
|
|
|
|
|
|
|
|
|
27 |
wp_enqueue_script(
|
28 |
'aioseop-link-attributes-classic-editor',
|
29 |
AIOSEOP_PLUGIN_URL . 'js/admin/aioseop-link-attributes-classic-editor.js',
|
23 |
* @return void
|
24 |
*/
|
25 |
public static function enqueue_link_attributes_classic_editor() {
|
26 |
+
$active_plugins = get_option('active_plugins');
|
27 |
+
if ( in_array( 'title-and-nofollow-for-links/title-and-nofollow-for-links.php', $active_plugins ) ) {
|
28 |
+
wp_deregister_script( 'wplink' );
|
29 |
+
}
|
30 |
+
|
31 |
wp_enqueue_script(
|
32 |
'aioseop-link-attributes-classic-editor',
|
33 |
AIOSEOP_PLUGIN_URL . 'js/admin/aioseop-link-attributes-classic-editor.js',
|
inc/aioseop_functions.php
CHANGED
@@ -848,7 +848,7 @@ if ( ! function_exists( 'render_seo_column' ) ) {
|
|
848 |
$nonce = wp_create_nonce( "aioseop_meta_{$column_name}_{$post_id}" );
|
849 |
|
850 |
?>
|
851 |
-
<div id="<?php echo "aioseop_${column_name}_${post_id}"; ?>" class="aioseop_mpc_admin_meta_options
|
852 |
<a
|
853 |
class="dashicons dashicons-edit aioseop-quickedit-pencil"
|
854 |
href="javascript:void(0);"
|
@@ -1498,7 +1498,11 @@ if ( ! function_exists( 'aioseop_get_utm_url' ) ) {
|
|
1498 |
*
|
1499 |
* @return string $href
|
1500 |
*/
|
1501 |
-
function aioseop_get_utm_url( $medium, $source = 'WordPress', $campaign = '
|
|
|
|
|
|
|
|
|
1502 |
|
1503 |
$href = 'https://semperplugins.com/all-in-one-seo-pack-pro-version/';
|
1504 |
|
@@ -1545,3 +1549,28 @@ if ( ! function_exists( 'aioseop_filter_styles' ) ) {
|
|
1545 |
return $styles;
|
1546 |
}
|
1547 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
848 |
$nonce = wp_create_nonce( "aioseop_meta_{$column_name}_{$post_id}" );
|
849 |
|
850 |
?>
|
851 |
+
<div id="<?php echo "aioseop_${column_name}_${post_id}"; ?>" class="aioseop_mpc_admin_meta_options">
|
852 |
<a
|
853 |
class="dashicons dashicons-edit aioseop-quickedit-pencil"
|
854 |
href="javascript:void(0);"
|
1498 |
*
|
1499 |
* @return string $href
|
1500 |
*/
|
1501 |
+
function aioseop_get_utm_url( $medium, $source = 'WordPress', $campaign = '' ) {
|
1502 |
+
|
1503 |
+
if( empty( $campaign ) ) {
|
1504 |
+
$campaign = ( AIOSEOPPRO ) ? 'proplugin' : 'liteplugin';
|
1505 |
+
}
|
1506 |
|
1507 |
$href = 'https://semperplugins.com/all-in-one-seo-pack-pro-version/';
|
1508 |
|
1549 |
return $styles;
|
1550 |
}
|
1551 |
}
|
1552 |
+
|
1553 |
+
if ( ! function_exists( 'aioseop_delete_rewrite_rules' ) ) {
|
1554 |
+
/**
|
1555 |
+
* Deletes our sitemap rewrite rules to prevent conflicts with other sitemap plugins.
|
1556 |
+
*
|
1557 |
+
* @since 3.4.3
|
1558 |
+
*/
|
1559 |
+
function aioseop_delete_rewrite_rules() {
|
1560 |
+
$rules = get_option( 'rewrite_rules' );
|
1561 |
+
|
1562 |
+
if ( empty( $rules ) ) {
|
1563 |
+
return;
|
1564 |
+
}
|
1565 |
+
|
1566 |
+
$pattern = '#.*aiosp_.*#';
|
1567 |
+
foreach ( $rules as $k => $v ) {
|
1568 |
+
preg_match( $pattern, $v, $match );
|
1569 |
+
if ( $match ) {
|
1570 |
+
unset( $rules[ $k ] );
|
1571 |
+
}
|
1572 |
+
}
|
1573 |
+
|
1574 |
+
update_option( 'rewrite_rules', $rules );
|
1575 |
+
}
|
1576 |
+
}
|
inc/aioseop_updates_class.php
CHANGED
@@ -146,6 +146,12 @@ class AIOSEOP_Updates {
|
|
146 |
) {
|
147 |
$this->update_schema_markup_201907();
|
148 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
149 |
}
|
150 |
|
151 |
/**
|
146 |
) {
|
147 |
$this->update_schema_markup_201907();
|
148 |
}
|
149 |
+
|
150 |
+
if ( version_compare( $old_version, '3.4.3', '<' ) ) {
|
151 |
+
if ( empty( $aioseop_options['modules']['aiosp_feature_manager_options']['aiosp_feature_manager_enable_sitemap'] ) ) {
|
152 |
+
aioseop_delete_rewrite_rules();
|
153 |
+
}
|
154 |
+
}
|
155 |
}
|
156 |
|
157 |
/**
|
inc/schema/aioseop-context.php
CHANGED
@@ -114,6 +114,36 @@ class AIOSEOP_Context {
|
|
114 |
$this->wp_props = $props;
|
115 |
}
|
116 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
117 |
/**
|
118 |
* Get current is_*() state.
|
119 |
*
|
@@ -131,6 +161,7 @@ class AIOSEOP_Context {
|
|
131 |
} elseif ( $wp_query->is_posts_page ) {
|
132 |
$state_is = 'posts_page';
|
133 |
} else {
|
|
|
134 |
$state_is = 'home'; // Static front page.
|
135 |
}
|
136 |
} elseif ( is_archive() ) {
|
@@ -320,9 +351,16 @@ class AIOSEOP_Context {
|
|
320 |
$key = $context->ID;
|
321 |
break;
|
322 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
323 |
case 'WP_Taxonomy':
|
324 |
if ( ! $context instanceof WP_Taxonomy ) {
|
325 |
-
get_queried_object();
|
326 |
}
|
327 |
$key = $context->name;
|
328 |
break;
|
@@ -392,10 +430,6 @@ class AIOSEOP_Context {
|
|
392 |
|
393 |
$object = new stdClass();
|
394 |
switch ( $type ) {
|
395 |
-
case 'WP_Taxonomy':
|
396 |
-
$object = self::get_object( $type, $key, $wp_props );
|
397 |
-
$wp_props['object_type'] = $object->object_type;
|
398 |
-
break;
|
399 |
case 'WP_Term':
|
400 |
// $object = self::get_object( $type, $key, $wp_props );
|
401 |
// $wp_props['taxonomy'] = $object->taxonomy;
|
@@ -456,9 +490,15 @@ class AIOSEOP_Context {
|
|
456 |
$object = WP_Post::get_instance( $key );
|
457 |
break;
|
458 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
459 |
case 'WP_Taxonomy':
|
460 |
-
$
|
461 |
-
$object = new WP_Taxonomy( $key, $object_type );
|
462 |
break;
|
463 |
|
464 |
case 'WP_Term':
|
@@ -532,6 +572,16 @@ class AIOSEOP_Context {
|
|
532 |
$display_name = $wp_obj->post_title;
|
533 |
break;
|
534 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
535 |
case 'WP_Term':
|
536 |
$wp_obj = self::get_object( $this->context_type, $this->context_key, $this->wp_props );
|
537 |
$display_name = $wp_obj->name;
|
@@ -615,6 +665,10 @@ class AIOSEOP_Context {
|
|
615 |
$s_url[ $this->context_type ][ $this->context_key ] = $url;
|
616 |
break;
|
617 |
|
|
|
|
|
|
|
|
|
618 |
case 'WP_Taxonomy':
|
619 |
// Does not exist.
|
620 |
break;
|
@@ -659,16 +713,80 @@ class AIOSEOP_Context {
|
|
659 |
*/
|
660 |
public function get_description() {
|
661 |
$desc = '';
|
|
|
662 |
|
663 |
switch ( $this->context_type ) {
|
664 |
case 'var_site':
|
665 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
666 |
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
667 |
case 'WP_Term':
|
668 |
-
case 'WP_User':
|
669 |
$wp_obj = self::get_object( $this->context_type, $this->context_key, $this->wp_props );
|
670 |
$desc = $wp_obj->description;
|
671 |
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
672 |
}
|
673 |
|
674 |
return $desc;
|
@@ -759,6 +877,16 @@ class AIOSEOP_Context {
|
|
759 |
);
|
760 |
break;
|
761 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
762 |
case 'WP_Taxonomy':
|
763 |
// No URL destination exists to trigger this.
|
764 |
break;
|
114 |
$this->wp_props = $props;
|
115 |
}
|
116 |
|
117 |
+
/**
|
118 |
+
* Internationalize
|
119 |
+
*
|
120 |
+
* Dev Note: Could refactor this & \All_in_One_SEO_Pack::internationalize() to a static class.
|
121 |
+
*
|
122 |
+
* @since 3.4.3
|
123 |
+
*
|
124 |
+
* @param string $text
|
125 |
+
* @return mixed|string
|
126 |
+
*/
|
127 |
+
public function internationalize( $text ) {
|
128 |
+
if ( function_exists( 'langswitch_filter_langs_with_message' ) ) {
|
129 |
+
$text = langswitch_filter_langs_with_message( $text );
|
130 |
+
}
|
131 |
+
|
132 |
+
if ( function_exists( 'polyglot_filter' ) ) {
|
133 |
+
$text = polyglot_filter( $text );
|
134 |
+
}
|
135 |
+
|
136 |
+
if ( function_exists( 'qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage' ) ) {
|
137 |
+
$text = qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage( $text );
|
138 |
+
} elseif ( function_exists( 'ppqtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage' ) ) {
|
139 |
+
$text = ppqtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage( $text );
|
140 |
+
} elseif ( function_exists( 'qtranxf_useCurrentLanguageIfNotFoundUseDefaultLanguage' ) ) {
|
141 |
+
$text = qtranxf_useCurrentLanguageIfNotFoundUseDefaultLanguage( $text );
|
142 |
+
}
|
143 |
+
|
144 |
+
return $text;
|
145 |
+
}
|
146 |
+
|
147 |
/**
|
148 |
* Get current is_*() state.
|
149 |
*
|
161 |
} elseif ( $wp_query->is_posts_page ) {
|
162 |
$state_is = 'posts_page';
|
163 |
} else {
|
164 |
+
// is_page().
|
165 |
$state_is = 'home'; // Static front page.
|
166 |
}
|
167 |
} elseif ( is_archive() ) {
|
351 |
$key = $context->ID;
|
352 |
break;
|
353 |
|
354 |
+
case 'WP_Post_Type':
|
355 |
+
if ( ! $context instanceof WP_Post_Type ) {
|
356 |
+
$context = get_queried_object();
|
357 |
+
}
|
358 |
+
$key = $context->name;
|
359 |
+
break;
|
360 |
+
|
361 |
case 'WP_Taxonomy':
|
362 |
if ( ! $context instanceof WP_Taxonomy ) {
|
363 |
+
$context = get_queried_object();
|
364 |
}
|
365 |
$key = $context->name;
|
366 |
break;
|
430 |
|
431 |
$object = new stdClass();
|
432 |
switch ( $type ) {
|
|
|
|
|
|
|
|
|
433 |
case 'WP_Term':
|
434 |
// $object = self::get_object( $type, $key, $wp_props );
|
435 |
// $wp_props['taxonomy'] = $object->taxonomy;
|
490 |
$object = WP_Post::get_instance( $key );
|
491 |
break;
|
492 |
|
493 |
+
case 'WP_Post_Type':
|
494 |
+
$object = get_post_type_object( $key );
|
495 |
+
if ( is_null( $object ) ) {
|
496 |
+
$object = false;
|
497 |
+
}
|
498 |
+
break;
|
499 |
+
|
500 |
case 'WP_Taxonomy':
|
501 |
+
$object = get_taxonomy( $key );
|
|
|
502 |
break;
|
503 |
|
504 |
case 'WP_Term':
|
572 |
$display_name = $wp_obj->post_title;
|
573 |
break;
|
574 |
|
575 |
+
case 'WP_Post_Type':
|
576 |
+
$wp_obj = self::get_object( $this->context_type, $this->context_key );
|
577 |
+
$display_name = $wp_obj->label;
|
578 |
+
break;
|
579 |
+
|
580 |
+
case 'WP_Taxonomy':
|
581 |
+
$wp_obj = self::get_object( $this->context_type, $this->context_key );
|
582 |
+
$display_name = $wp_obj->label;
|
583 |
+
break;
|
584 |
+
|
585 |
case 'WP_Term':
|
586 |
$wp_obj = self::get_object( $this->context_type, $this->context_key, $this->wp_props );
|
587 |
$display_name = $wp_obj->name;
|
665 |
$s_url[ $this->context_type ][ $this->context_key ] = $url;
|
666 |
break;
|
667 |
|
668 |
+
case 'WP_Post_Type':
|
669 |
+
$url = get_post_type_archive_link( $this->context_key );
|
670 |
+
break;
|
671 |
+
|
672 |
case 'WP_Taxonomy':
|
673 |
// Does not exist.
|
674 |
break;
|
713 |
*/
|
714 |
public function get_description() {
|
715 |
$desc = '';
|
716 |
+
global $aioseop_options;
|
717 |
|
718 |
switch ( $this->context_type ) {
|
719 |
case 'var_site':
|
720 |
+
if ( ! empty( $aioseop_options['aiosp_home_description'] ) ) {
|
721 |
+
$desc = $aioseop_options['aiosp_home_description'];
|
722 |
+
} else {
|
723 |
+
$desc = get_bloginfo( 'description' );
|
724 |
+
}
|
725 |
+
break;
|
726 |
+
|
727 |
+
case 'WP_Site':
|
728 |
+
$desc = get_blog_details( array( 'blog_id' => $this->context_key ) );
|
729 |
+
if ( ! empty( $aioseop_options['aiosp_home_description'] ) ) {
|
730 |
+
$desc = $aioseop_options['aiosp_home_description'];
|
731 |
+
} else {
|
732 |
+
$desc = get_bloginfo( 'description' );
|
733 |
+
}
|
734 |
+
|
735 |
break;
|
736 |
+
|
737 |
+
case 'WP_Post':
|
738 |
+
$wp_obj = self::get_object( $this->context_type, $this->context_key );
|
739 |
+
|
740 |
+
// Using AIOSEOP's description is limited in content. With Schema's descriptions,
|
741 |
+
// there is no cap limit.
|
742 |
+
$post_description = get_post_meta( $wp_obj->ID, '_aioseop_description', true );
|
743 |
+
if ( is_string( $post_description ) ) {
|
744 |
+
$post_description = trim( $this->internationalize( $post_description ) );
|
745 |
+
}
|
746 |
+
|
747 |
+
// If there is no AIOSEOP description, and the post isn't password protected,
|
748 |
+
// then use post excerpt or content.
|
749 |
+
if (
|
750 |
+
! $post_description &&
|
751 |
+
! post_password_required( $wp_obj ) &&
|
752 |
+
! empty( $wp_obj->post_excerpt )
|
753 |
+
) {
|
754 |
+
$post_description = $wp_obj->post_excerpt;
|
755 |
+
}
|
756 |
+
|
757 |
+
if ( ! empty( $post_description ) && is_string( $post_description ) ) {
|
758 |
+
$desc = $post_description;
|
759 |
+
}
|
760 |
+
break;
|
761 |
+
|
762 |
+
case 'WP_Post_Type':
|
763 |
+
$wp_obj = self::get_object( $this->context_type, $this->context_key );
|
764 |
+
$desc = $wp_obj->description;
|
765 |
+
break;
|
766 |
+
|
767 |
+
case 'WP_Taxonomy':
|
768 |
+
$wp_obj = self::get_object( $this->context_type, $this->context_key, $this->wp_props );
|
769 |
+
$desc = $wp_obj->description;
|
770 |
+
break;
|
771 |
+
|
772 |
case 'WP_Term':
|
|
|
773 |
$wp_obj = self::get_object( $this->context_type, $this->context_key, $this->wp_props );
|
774 |
$desc = $wp_obj->description;
|
775 |
break;
|
776 |
+
|
777 |
+
case 'WP_User':
|
778 |
+
break;
|
779 |
+
case 'var_search':
|
780 |
+
break;
|
781 |
+
case 'var_date_year':
|
782 |
+
break;
|
783 |
+
case 'var_date_month':
|
784 |
+
break;
|
785 |
+
case 'var_date_day':
|
786 |
+
break;
|
787 |
+
case 'var_date':
|
788 |
+
break;
|
789 |
+
|
790 |
}
|
791 |
|
792 |
return $desc;
|
877 |
);
|
878 |
break;
|
879 |
|
880 |
+
case 'WP_Post_Type':
|
881 |
+
array_unshift(
|
882 |
+
$rtn_list,
|
883 |
+
array(
|
884 |
+
'name' => $context->get_display_name(),
|
885 |
+
'url' => $context->get_url(),
|
886 |
+
)
|
887 |
+
);
|
888 |
+
break;
|
889 |
+
|
890 |
case 'WP_Taxonomy':
|
891 |
// No URL destination exists to trigger this.
|
892 |
break;
|
inc/schema/graphs/graph-webpage.php
CHANGED
@@ -51,86 +51,23 @@ class AIOSEOP_Graph_WebPage extends AIOSEOP_Graph_Creativework {
|
|
51 |
global $post;
|
52 |
global $aioseop_options;
|
53 |
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
$current_desc = get_bloginfo( 'description' );
|
66 |
-
} else {
|
67 |
-
// A static page - Posts page.
|
68 |
-
// Resembles elseif $wp_query->is_posts_page.
|
69 |
-
$page_id = get_option( 'page_for_posts' );
|
70 |
-
|
71 |
-
$current_url = wp_get_canonical_url( $page_id );
|
72 |
-
$current_name = get_the_title( $page_id );
|
73 |
-
$current_desc = $this->get_post_description( get_post( $page_id ) );
|
74 |
-
}
|
75 |
-
} elseif ( is_front_page() && is_page() ) {
|
76 |
-
// A static page - Homepage.
|
77 |
-
$current_url = home_url() . '/';
|
78 |
-
$current_name = get_the_title();
|
79 |
-
$current_desc = $this->get_post_description( $post );
|
80 |
-
} elseif ( is_post_type_archive() ) {
|
81 |
-
if (
|
82 |
-
function_exists( 'is_shop' ) &&
|
83 |
-
function_exists( 'wc_get_page_id' ) &&
|
84 |
-
is_shop()
|
85 |
-
) {
|
86 |
-
// WooCommerce - Shop Page.
|
87 |
-
$shop_page = get_post( wc_get_page_id( 'shop' ) );
|
88 |
-
|
89 |
-
$current_url = wp_get_canonical_url( $shop_page );
|
90 |
-
$current_name = get_the_title( $shop_page );
|
91 |
-
$current_desc = $this->get_post_description( $shop_page );
|
92 |
-
} else {
|
93 |
-
// WP - Post Type.
|
94 |
-
$wp_obj = get_queried_object();
|
95 |
-
|
96 |
-
$current_url = get_post_type_archive_link( $post );
|
97 |
-
$current_name = $wp_obj->label;
|
98 |
-
$current_desc = $wp_obj->description;
|
99 |
-
}
|
100 |
-
} elseif ( is_singular() || is_single() ) {
|
101 |
-
$current_url = wp_get_canonical_url( $post );
|
102 |
-
$current_name = get_the_title();
|
103 |
-
$current_desc = $this->get_post_description( $post );
|
104 |
-
} elseif ( is_tax() || is_category() || is_tag() ) {
|
105 |
-
$term = get_queried_object();
|
106 |
-
|
107 |
-
$current_url = get_term_link( $term );
|
108 |
-
$current_name = $term->name;
|
109 |
-
$current_desc = $term->description;
|
110 |
-
} elseif ( is_date() ) {
|
111 |
-
if ( is_year() ) {
|
112 |
-
$current_url = get_year_link( false );
|
113 |
-
/* translators: Yearly archive title. %s: Year */
|
114 |
-
$current_name = sprintf( __( 'Year: %s', 'all-in-one-seo-pack' ), get_the_date( 'Y' ) );
|
115 |
-
} elseif ( is_month() ) {
|
116 |
-
$current_url = get_month_link( false, false );
|
117 |
-
/* translators: Monthly archive title. %s: Month name and year */
|
118 |
-
$current_name = sprintf( __( 'Month: %s', 'all-in-one-seo-pack' ), get_the_date( 'F Y' ) );
|
119 |
-
} else {
|
120 |
-
$current_url = get_day_link( false, false, false );
|
121 |
-
/* translators: Daily archive title. %s: Date */
|
122 |
-
$current_name = sprintf( __( 'Day: %s', 'all-in-one-seo-pack' ), get_the_date( 'F j, Y' ) );
|
123 |
-
}
|
124 |
-
} elseif ( is_author() ) {
|
125 |
-
$user_id = intval( $post->post_author );
|
126 |
-
$current_url = get_author_posts_url( $user_id );
|
127 |
-
$current_name = get_the_author_meta( 'display_name', $user_id );
|
128 |
-
} elseif ( is_search() ) {
|
129 |
-
$current_url = get_search_link();
|
130 |
-
/* Translators: String used in search query: %s: Search */
|
131 |
-
$current_name = sprintf( __( 'Search results for "%s"', 'all-in-one-seo-pack' ), esc_html( get_search_query() ) );
|
132 |
}
|
133 |
|
|
|
|
|
|
|
|
|
134 |
$rtn_data = array(
|
135 |
'@type' => $this->slug,
|
136 |
'@id' => $current_url . '#' . strtolower( $this->slug ), // TODO Should this be `#webpage`?
|
@@ -144,6 +81,9 @@ class AIOSEOP_Graph_WebPage extends AIOSEOP_Graph_Creativework {
|
|
144 |
'@id' => $context->get_url() . '#breadcrumblist',
|
145 |
),
|
146 |
);
|
|
|
|
|
|
|
147 |
|
148 |
// Handles pages.
|
149 |
if ( is_singular() || is_single() ) {
|
@@ -171,16 +111,13 @@ class AIOSEOP_Graph_WebPage extends AIOSEOP_Graph_Creativework {
|
|
171 |
);
|
172 |
}
|
173 |
|
174 |
-
if ( ! empty( $current_desc ) ) {
|
175 |
-
$rtn_data['description'] = $current_desc;
|
176 |
-
}
|
177 |
-
|
178 |
return $rtn_data;
|
179 |
}
|
180 |
|
181 |
/**
|
182 |
* Get Post Description.
|
183 |
*
|
|
|
184 |
* @since 3.2
|
185 |
*
|
186 |
* @param WP_Post $post See WP_Post for details.
|
51 |
global $post;
|
52 |
global $aioseop_options;
|
53 |
|
54 |
+
if (
|
55 |
+
'post_type_archive' === AIOSEOP_Context::get_is() &&
|
56 |
+
function_exists( 'is_shop' ) &&
|
57 |
+
function_exists( 'wc_get_page_id' ) &&
|
58 |
+
is_shop()
|
59 |
+
) {
|
60 |
+
// WooCommerce - Shop Page.
|
61 |
+
$shop_page = get_post( wc_get_page_id( 'shop' ) );
|
62 |
+
$context = AIOSEOP_Context::get_instance( $shop_page );
|
63 |
+
} else {
|
64 |
+
$context = AIOSEOP_Context::get_instance();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
}
|
66 |
|
67 |
+
$current_url = $context->get_url();
|
68 |
+
$current_name = $context->get_display_name();
|
69 |
+
$current_desc = $context->get_description();
|
70 |
+
|
71 |
$rtn_data = array(
|
72 |
'@type' => $this->slug,
|
73 |
'@id' => $current_url . '#' . strtolower( $this->slug ), // TODO Should this be `#webpage`?
|
81 |
'@id' => $context->get_url() . '#breadcrumblist',
|
82 |
),
|
83 |
);
|
84 |
+
if ( ! empty( $current_desc ) ) {
|
85 |
+
$rtn_data['description'] = $current_desc;
|
86 |
+
}
|
87 |
|
88 |
// Handles pages.
|
89 |
if ( is_singular() || is_single() ) {
|
111 |
);
|
112 |
}
|
113 |
|
|
|
|
|
|
|
|
|
114 |
return $rtn_data;
|
115 |
}
|
116 |
|
117 |
/**
|
118 |
* Get Post Description.
|
119 |
*
|
120 |
+
* @deprecated 3.4.3 Use AIOSEOP_Context::get_instance( $post_object )->get_description().
|
121 |
* @since 3.2
|
122 |
*
|
123 |
* @param WP_Post $post See WP_Post for details.
|
js/admin/aioseop-quickedit.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
var aioseopQuickEdit;
|
2 |
|
3 |
-
(function
|
4 |
aioseopQuickEdit = {
|
5 |
|
6 |
/**
|
@@ -12,19 +12,21 @@ var aioseopQuickEdit;
|
|
12 |
* @param String columnName The name of the column/attribute.
|
13 |
* @param String nonce The nonce.
|
14 |
*/
|
15 |
-
aioseop_ajax_edit_meta_form: function
|
16 |
let field = $(`#aioseop_${columnName}_${postId}`);
|
17 |
let dashicon = field.parent().find('.aioseop-quickedit-pencil').first();
|
18 |
let previousElements = field.html();
|
19 |
let value = field.text().trim();
|
20 |
|
|
|
|
|
21 |
let textarea = document.createElement('textarea');
|
22 |
textarea.id = `aioseop_new_${columnName}_${postId}`;
|
23 |
textarea.classList.add('aioseop-quickedit-input');
|
24 |
textarea.rows = 4;
|
25 |
textarea.cols = 32;
|
26 |
|
27 |
-
if(
|
28 |
textarea.innerText = value;
|
29 |
}
|
30 |
|
@@ -36,7 +38,7 @@ var aioseopQuickEdit;
|
|
36 |
btnSave.href = 'javascript:void(0);';
|
37 |
btnSave.title = aioseopadmin.i18n.save;
|
38 |
|
39 |
-
btnSave.addEventListener('click', function
|
40 |
aioseopQuickEdit.handle_post_meta(postId, textarea.value, columnName, nonce, previousElements);
|
41 |
});
|
42 |
|
@@ -46,9 +48,10 @@ var aioseopQuickEdit;
|
|
46 |
btnCancel.href = 'javascript:void(0);';
|
47 |
btnCancel.title = aioseopadmin.i18n.cancel;
|
48 |
|
49 |
-
btnCancel.addEventListener('click', function
|
50 |
dashicon.show();
|
51 |
field.html(previousElements);
|
|
|
52 |
});
|
53 |
|
54 |
buttons.append(btnSave, btnCancel);
|
@@ -68,7 +71,7 @@ var aioseopQuickEdit;
|
|
68 |
* @param String nonce The nonce.
|
69 |
* @param Object previousElements The initial column elements (dashicon + span).
|
70 |
*/
|
71 |
-
handle_post_meta: function
|
72 |
let field = $(`div#aioseop_${columnName}_${postId}`);
|
73 |
|
74 |
let message = document.createElement('span');
|
@@ -84,10 +87,10 @@ var aioseopQuickEdit;
|
|
84 |
|
85 |
message.append(spinner, span);
|
86 |
|
87 |
-
field.fadeOut('fast', function
|
88 |
field.html(message);
|
89 |
|
90 |
-
field.fadeIn('fast', function
|
91 |
|
92 |
$.ajax({
|
93 |
type: "POST",
|
@@ -100,20 +103,22 @@ var aioseopQuickEdit;
|
|
100 |
key: columnName,
|
101 |
_ajax_nonce: nonce
|
102 |
},
|
103 |
-
success: function
|
104 |
field.empty().append(previousElements);
|
|
|
105 |
|
106 |
-
if('image_title' === columnName) {
|
107 |
aioseopMediaColumns.updatePostTitle(postId, value);
|
108 |
}
|
109 |
|
110 |
-
if('' === value) {
|
111 |
value = `<strong>${aioseopadmin.i18n.noValue}</strong>`;
|
112 |
}
|
113 |
$(`#aioseop_${columnName}_${postId}_value`).html(value);
|
114 |
},
|
115 |
-
error: function
|
116 |
field.empty().append(previousElements);
|
|
|
117 |
console.log(`Request to update ${columnName} failed.`);
|
118 |
}
|
119 |
});
|
@@ -126,7 +131,7 @@ var aioseopQuickEdit;
|
|
126 |
|
127 |
|
128 |
//TODO This needs to be moved to another file.
|
129 |
-
jQuery(document).on('click', '.visibility-notice', function
|
130 |
|
131 |
$.ajax({
|
132 |
url: ajaxurl,
|
@@ -137,7 +142,7 @@ jQuery(document).on('click', '.visibility-notice', function () {
|
|
137 |
|
138 |
});
|
139 |
|
140 |
-
jQuery(document).on('click', '.yst_notice', function
|
141 |
|
142 |
$.ajax({
|
143 |
url: ajaxurl,
|
@@ -148,7 +153,7 @@ jQuery(document).on('click', '.yst_notice', function () {
|
|
148 |
|
149 |
});
|
150 |
|
151 |
-
jQuery(document).on('click', '.woo-upgrade-notice', function
|
152 |
|
153 |
$.ajax({
|
154 |
url: ajaxurl,
|
@@ -159,7 +164,7 @@ jQuery(document).on('click', '.woo-upgrade-notice', function () {
|
|
159 |
|
160 |
});
|
161 |
|
162 |
-
jQuery(document).on('click', '.sitemap_max_urls_notice', function
|
163 |
|
164 |
$.ajax({
|
165 |
url: ajaxurl,
|
1 |
var aioseopQuickEdit;
|
2 |
|
3 |
+
(function($) {
|
4 |
aioseopQuickEdit = {
|
5 |
|
6 |
/**
|
12 |
* @param String columnName The name of the column/attribute.
|
13 |
* @param String nonce The nonce.
|
14 |
*/
|
15 |
+
aioseop_ajax_edit_meta_form: function(postId, columnName, nonce) {
|
16 |
let field = $(`#aioseop_${columnName}_${postId}`);
|
17 |
let dashicon = field.parent().find('.aioseop-quickedit-pencil').first();
|
18 |
let previousElements = field.html();
|
19 |
let value = field.text().trim();
|
20 |
|
21 |
+
field.addClass('aio_editing');
|
22 |
+
|
23 |
let textarea = document.createElement('textarea');
|
24 |
textarea.id = `aioseop_new_${columnName}_${postId}`;
|
25 |
textarea.classList.add('aioseop-quickedit-input');
|
26 |
textarea.rows = 4;
|
27 |
textarea.cols = 32;
|
28 |
|
29 |
+
if (aioseopadmin.i18n.noValue !== value) {
|
30 |
textarea.innerText = value;
|
31 |
}
|
32 |
|
38 |
btnSave.href = 'javascript:void(0);';
|
39 |
btnSave.title = aioseopadmin.i18n.save;
|
40 |
|
41 |
+
btnSave.addEventListener('click', function() {
|
42 |
aioseopQuickEdit.handle_post_meta(postId, textarea.value, columnName, nonce, previousElements);
|
43 |
});
|
44 |
|
48 |
btnCancel.href = 'javascript:void(0);';
|
49 |
btnCancel.title = aioseopadmin.i18n.cancel;
|
50 |
|
51 |
+
btnCancel.addEventListener('click', function() {
|
52 |
dashicon.show();
|
53 |
field.html(previousElements);
|
54 |
+
field.removeClass('aio_editing');
|
55 |
});
|
56 |
|
57 |
buttons.append(btnSave, btnCancel);
|
71 |
* @param String nonce The nonce.
|
72 |
* @param Object previousElements The initial column elements (dashicon + span).
|
73 |
*/
|
74 |
+
handle_post_meta: function(postId, value, columnName, nonce, previousElements) {
|
75 |
let field = $(`div#aioseop_${columnName}_${postId}`);
|
76 |
|
77 |
let message = document.createElement('span');
|
87 |
|
88 |
message.append(spinner, span);
|
89 |
|
90 |
+
field.fadeOut('fast', function() {
|
91 |
field.html(message);
|
92 |
|
93 |
+
field.fadeIn('fast', function() {
|
94 |
|
95 |
$.ajax({
|
96 |
type: "POST",
|
103 |
key: columnName,
|
104 |
_ajax_nonce: nonce
|
105 |
},
|
106 |
+
success: function() {
|
107 |
field.empty().append(previousElements);
|
108 |
+
field.removeClass('aio_editing');
|
109 |
|
110 |
+
if ('image_title' === columnName) {
|
111 |
aioseopMediaColumns.updatePostTitle(postId, value);
|
112 |
}
|
113 |
|
114 |
+
if ('' === value) {
|
115 |
value = `<strong>${aioseopadmin.i18n.noValue}</strong>`;
|
116 |
}
|
117 |
$(`#aioseop_${columnName}_${postId}_value`).html(value);
|
118 |
},
|
119 |
+
error: function() {
|
120 |
field.empty().append(previousElements);
|
121 |
+
field.removeClass('aio_editing');
|
122 |
console.log(`Request to update ${columnName} failed.`);
|
123 |
}
|
124 |
});
|
131 |
|
132 |
|
133 |
//TODO This needs to be moved to another file.
|
134 |
+
jQuery(document).on('click', '.visibility-notice', function() {
|
135 |
|
136 |
$.ajax({
|
137 |
url: ajaxurl,
|
142 |
|
143 |
});
|
144 |
|
145 |
+
jQuery(document).on('click', '.yst_notice', function() {
|
146 |
|
147 |
$.ajax({
|
148 |
url: ajaxurl,
|
153 |
|
154 |
});
|
155 |
|
156 |
+
jQuery(document).on('click', '.woo-upgrade-notice', function() {
|
157 |
|
158 |
$.ajax({
|
159 |
url: ajaxurl,
|
164 |
|
165 |
});
|
166 |
|
167 |
+
jQuery(document).on('click', '.sitemap_max_urls_notice', function() {
|
168 |
|
169 |
$.ajax({
|
170 |
url: ajaxurl,
|
js/quickedit_functions.js
DELETED
@@ -1,93 +0,0 @@
|
|
1 |
-
jQuery(document).on( 'click', '.visibility-notice', function() {
|
2 |
-
|
3 |
-
jQuery.ajax({
|
4 |
-
url: ajaxurl,
|
5 |
-
data: {
|
6 |
-
action: 'aioseo_dismiss_visibility_notice'
|
7 |
-
}
|
8 |
-
});
|
9 |
-
|
10 |
-
});
|
11 |
-
|
12 |
-
jQuery(document).on( 'click', '.yst_notice', function() {
|
13 |
-
|
14 |
-
jQuery.ajax({
|
15 |
-
url: ajaxurl,
|
16 |
-
data: {
|
17 |
-
action: 'aioseo_dismiss_yst_notice'
|
18 |
-
}
|
19 |
-
});
|
20 |
-
|
21 |
-
});
|
22 |
-
|
23 |
-
jQuery(document).on( 'click', '.woo-upgrade-notice', function() {
|
24 |
-
|
25 |
-
jQuery.ajax({
|
26 |
-
url: ajaxurl,
|
27 |
-
data: {
|
28 |
-
action: 'aioseo_dismiss_woo_upgrade_notice'
|
29 |
-
}
|
30 |
-
});
|
31 |
-
|
32 |
-
});
|
33 |
-
|
34 |
-
jQuery(document).on( 'click', '.sitemap_max_urls_notice', function() {
|
35 |
-
|
36 |
-
jQuery.ajax({
|
37 |
-
url: ajaxurl,
|
38 |
-
data: {
|
39 |
-
action: 'aioseo_dismiss_sitemap_max_url_notice'
|
40 |
-
}
|
41 |
-
});
|
42 |
-
|
43 |
-
});
|
44 |
-
|
45 |
-
|
46 |
-
function aioseop_ajax_edit_meta_form( post_id, meta, nonce ) {
|
47 |
-
var uform = jQuery('#aioseop_'+meta+'_' + post_id);
|
48 |
-
var post_title = jQuery('#aioseop_label_' + meta + '_' + post_id).text();
|
49 |
-
var element = uform.html(); var input;
|
50 |
-
input = '<textarea id="aioseop_new_'+meta+'_' + post_id + '" style="font-size:13px;width:100%;float:left;position:relative;z-index:1;" rows=4 cols=32>' + post_title + '</textarea>';
|
51 |
-
input += '<label style="float:left">';
|
52 |
-
input += '<a class="aioseop-icon-qedit aioseop-icon-qedit-accept" href="javascript:void(0);" id="aioseop_' + meta + '_save_' + post_id + '" title="Accept" >';
|
53 |
-
input += '<a class="aioseop-icon-qedit aioseop-icon-qedit-delete" href="javascript:void(0);" id="aioseop_' + meta + '_cancel_' + post_id + '" title="Decline" >';
|
54 |
-
input += '</label>';
|
55 |
-
uform.html( input );
|
56 |
-
uform.attr( "class", "aioseop_mpc_admin_meta_options aio_editing" );
|
57 |
-
jQuery('#aioseop_'+meta+'_cancel_' + post_id).click(function() {
|
58 |
-
uform.html( element );
|
59 |
-
uform.attr( "class", "aioseop_mpc_admin_meta_options" );
|
60 |
-
});
|
61 |
-
jQuery('#aioseop_'+meta+'_save_' + post_id).click(function() {
|
62 |
-
var new_meta = jQuery( '#aioseop_new_'+meta+'_' + post_id ).val();
|
63 |
-
handle_post_meta( post_id, new_meta, meta, nonce );
|
64 |
-
});
|
65 |
-
}
|
66 |
-
|
67 |
-
function handle_post_meta( p, t, m, n ) {
|
68 |
-
jQuery("div#aioseop_"+m+"_"+p).fadeOut('fast', function() {
|
69 |
-
var loading = '<label class="aioseop_'+m+'_loading">';
|
70 |
-
loading += '<img style="width:20px;margin-right:5px;float:left" align="absmiddle" ';
|
71 |
-
loading += 'src="'+aioseopadmin.imgUrl+'activity.gif" border="0" alt="" title="'+m+'" /></a>';
|
72 |
-
loading += '</label><div style="float:left">Please wait…</div>';
|
73 |
-
jQuery("div#aioseop_"+m+"_"+p).fadeIn('fast', function() {
|
74 |
-
var aioseop_sack = new sack(aioseopadmin.requestUrl);
|
75 |
-
aioseop_sack.execute = 1;
|
76 |
-
aioseop_sack.method = 'POST';
|
77 |
-
aioseop_sack.setVar( "action", "aioseop_ajax_save_meta");
|
78 |
-
aioseop_sack.setVar( "post_id", p );
|
79 |
-
aioseop_sack.setVar( "new_meta", t );
|
80 |
-
aioseop_sack.setVar( "target_meta", m );
|
81 |
-
aioseop_sack.setVar( "_inline_edit", jQuery('input#_inline_edit').val() );
|
82 |
-
aioseop_sack.setVar( "_nonce", n );
|
83 |
-
// TODO Add alert function. Check example of correct code. https://eslint.org/docs/rules/no-alert
|
84 |
-
/* eslint-disable no-alert */
|
85 |
-
aioseop_sack.onError = function() {alert('Ajax error on saving title'); };
|
86 |
-
/* eslint-enable no-alert */
|
87 |
-
aioseop_sack.runAJAX();
|
88 |
-
});
|
89 |
-
jQuery("div#aioseop_"+m+"_"+p).html(loading);
|
90 |
-
jQuery("div#aioseop_"+m+"_"+p).attr( "class", "aioseop_mpc_admin_meta_options" );
|
91 |
-
|
92 |
-
});
|
93 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
js/quickedit_functions.min.js
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
function aioseop_ajax_edit_meta_form(e,i,t){var a,o=jQuery("#aioseop_"+i+"_"+e),s=jQuery("#aioseop_label_"+i+"_"+e).text(),_=o.html();a='<textarea id="aioseop_new_'+i+"_"+e+'" style="font-size:13px;width:100%;float:left;position:relative;z-index:1;" rows=4 cols=32>'+s+"</textarea>",a+='<label style="float:left">',a+='<a class="aioseop-icon-qedit aioseop-icon-qedit-accept" href="javascript:void(0);" id="aioseop_'+i+"_save_"+e+'" title="Accept" >',a+='<a class="aioseop-icon-qedit aioseop-icon-qedit-delete" href="javascript:void(0);" id="aioseop_'+i+"_cancel_"+e+'" title="Decline" >',a+="</label>",o.html(a),o.attr("class","aioseop_mpc_admin_meta_options aio_editing"),jQuery("#aioseop_"+i+"_cancel_"+e).click(function(){o.html(_),o.attr("class","aioseop_mpc_admin_meta_options")}),jQuery("#aioseop_"+i+"_save_"+e).click(function(){var a=jQuery("#aioseop_new_"+i+"_"+e).val();handle_post_meta(e,a,i,t)})}function handle_post_meta(e,i,t,o){jQuery("div#aioseop_"+t+"_"+e).fadeOut("fast",function(){var a='<label class="aioseop_'+t+'_loading">';a+='<img style="width:20px;margin-right:5px;float:left" align="absmiddle" ',a+='src="'+aioseopadmin.imgUrl+'activity.gif" border="0" alt="" title="'+t+'" /></a>',a+='</label><div style="float:left">Please wait…</div>',jQuery("div#aioseop_"+t+"_"+e).fadeIn("fast",function(){var a=new sack(aioseopadmin.requestUrl);a.execute=1,a.method="POST",a.setVar("action","aioseop_ajax_save_meta"),a.setVar("post_id",e),a.setVar("new_meta",i),a.setVar("target_meta",t),a.setVar("_inline_edit",jQuery("input#_inline_edit").val()),a.setVar("_nonce",o),a.onError=function(){alert("Ajax error on saving title")},a.runAJAX()}),jQuery("div#aioseop_"+t+"_"+e).html(a),jQuery("div#aioseop_"+t+"_"+e).attr("class","aioseop_mpc_admin_meta_options")})}jQuery(document).on("click",".visibility-notice",function(){jQuery.ajax({url:ajaxurl,data:{action:"aioseo_dismiss_visibility_notice"}})}),jQuery(document).on("click",".yst_notice",function(){jQuery.ajax({url:ajaxurl,data:{action:"aioseo_dismiss_yst_notice"}})}),jQuery(document).on("click",".woo-upgrade-notice",function(){jQuery.ajax({url:ajaxurl,data:{action:"aioseo_dismiss_woo_upgrade_notice"}})}),jQuery(document).on("click",".sitemap_max_urls_notice",function(){jQuery.ajax({url:ajaxurl,data:{action:"aioseo_dismiss_sitemap_max_url_notice"}})});
|
|
modules/aioseop_feature_manager.php
CHANGED
@@ -237,7 +237,7 @@ if ( ! class_exists( 'All_in_One_SEO_Pack_Feature_Manager' ) ) {
|
|
237 |
$checkbox .= '><span class="button-primary feature_button' . $class . '"></span>';
|
238 |
} else {
|
239 |
$content = urlencode( $args['options']['name'] );
|
240 |
-
$checkbox = "<a class='button feature-manager-cta-button' href='
|
241 |
}
|
242 |
|
243 |
if ( ! empty( $args['options']['id'] ) ) {
|
237 |
$checkbox .= '><span class="button-primary feature_button' . $class . '"></span>';
|
238 |
} else {
|
239 |
$content = urlencode( $args['options']['name'] );
|
240 |
+
$checkbox = "<a class='button feature-manager-cta-button' href='" . aioseop_get_utm_url( 'feature-manager' ) . "&utm_content=$content" . "' target='_blank'>Upgrade</a>";
|
241 |
}
|
242 |
|
243 |
if ( ! empty( $args['options']['id'] ) ) {
|
modules/images/banner11.png
DELETED
Binary file
|
modules/images/banner12.png
DELETED
Binary file
|
modules/images/banner13.png
DELETED
Binary file
|
modules/images/banner14.png
DELETED
Binary file
|
modules/images/banner15.png
DELETED
Binary file
|
modules/images/banner21.jpg
DELETED
Binary file
|
modules/images/banner22.jpg
DELETED
Binary file
|
modules/images/facebook-follow-retina.png
DELETED
Binary file
|
modules/images/facebook-follow-standard.png
DELETED
Binary file
|
modules/images/twitter-follow-retina.png
DELETED
Binary file
|
modules/images/twitter-follow-standard.png
DELETED
Binary file
|
readme.txt
CHANGED
@@ -3,7 +3,7 @@ Contributors: semperplugins, smub, benjaminprojas
|
|
3 |
Tags: SEO, Google Search Console, XML Sitemap, meta description, meta title, noindex
|
4 |
Requires at least: 4.9
|
5 |
Tested up to: 5.4
|
6 |
-
Stable tag: 3.4.
|
7 |
License: GPLv2 or later
|
8 |
Requires PHP: 5.2.4
|
9 |
|
3 |
Tags: SEO, Google Search Console, XML Sitemap, meta description, meta title, noindex
|
4 |
Requires at least: 4.9
|
5 |
Tested up to: 5.4
|
6 |
+
Stable tag: 3.4.3
|
7 |
License: GPLv2 or later
|
8 |
Requires PHP: 5.2.4
|
9 |
|