Version Description
New: URL redirection to external domains
Fix: SEO and readability analysis of password-protected posts
Fix: sitemap throws error if there's an image with ampersand sign
Fix: metabox showing details from other posts when globals modified
Fix: better autolinks compatibility with unicode languages
Fix: code improvements for sitemap dashboard
Fix: twitter and OG issues on static posts page
Fix: third-party import notice appears for very old data
Fix: conflicts on woocommerce shop page
Download this release
Release Info
Developer | khaxan |
Plugin | SmartCrawl SEO |
Version | 2.2.4 |
Comparing to | |
See all releases |
Code changes from version 2.2.2.5 to 2.2.4
- autoloader.php +15 -3
- changelog.txt +73 -1
- class-mappings.php +6 -0
- config.php +1 -1
- includes/admin/admin.php +3 -0
- includes/admin/metabox.php +38 -17
- includes/admin/settings.php +21 -26
- includes/admin/settings/onpage.php +13 -35
- includes/admin/settings/settings.php +5 -7
- includes/admin/templates/advanced-tools/advanced-tools-settings.php +3 -3
- includes/admin/templates/checkup/checkup-checkup-results.php +1 -1
- includes/admin/templates/dashboard/onboarding.php +1 -1
- includes/admin/templates/metabox/analysis-readability.php +58 -50
- includes/admin/templates/metabox/analysis-seo-analysis.php +71 -63
- includes/admin/templates/metabox/metabox-dummy-preview.php +9 -0
- includes/admin/templates/metabox/metabox-main.php +2 -1
- includes/admin/templates/metabox/metabox-meta-edit-form.php +13 -18
- includes/admin/templates/metabox/metabox-preview.php +9 -39
- includes/admin/templates/metabox/metabox-seo-analysis-container.php +8 -3
- includes/admin/templates/metabox/metabox-tab-advanced.php +13 -6
- includes/admin/templates/metabox/metabox-tab-seo.php +4 -4
- includes/admin/templates/metabox/metabox-tab-social.php +12 -8
- includes/admin/templates/onpage/onpage-preview.php +4 -4
- includes/admin/templates/onpage/onpage-section-homepage.php +1 -10
- includes/admin/templates/onpage/onpage-settings.php +1 -3
- includes/admin/templates/progress-bar.php +1 -1
- includes/admin/templates/settings/import-status-modal.php +8 -0
- includes/admin/templates/settings/settings-section-import-export.php +1 -0
- includes/admin/templates/settings/underscore-import-error.php +16 -0
- includes/admin/templates/settings/underscore-import-options.php +61 -0
- includes/admin/templates/settings/underscore-import-progress.php +17 -0
- includes/admin/templates/settings/underscore-import-success.php +21 -0
- includes/admin/templates/settings/underscore-progress-reset.php +3 -0
- includes/admin/templates/sitemap/sitemap-section-settings.php +2 -2
- includes/admin/templates/sitemaps-dashboard-widget.php +0 -71
- includes/admin/templates/social/social-section-twitter-cards.php +1 -1
- includes/admin/templates/social/social-twitter-embed.php +1 -1
- includes/admin/templates/term-additions-form.php +24 -19
- includes/admin/templates/upsell-modal.php +1 -1
- includes/admin/templates/wp-dashboard/sitemaps-widget-js.php +35 -0
- includes/admin/templates/wp-dashboard/sitemaps-widget.php +64 -0
- includes/core/checks/class-wds-check-keywords-used.php +1 -1
- includes/core/checks/class-wds-check-metadesc-length.php +1 -1
- includes/core/checks/class-wds-check-subheadings-keywords.php +2 -2
- includes/core/checks/class-wds-check-title-length.php +1 -1
- includes/core/class-wds-aioseop-importer.php +16 -1
- includes/core/class-wds-canonical-value-helper.php +133 -0
- includes/core/class-wds-compatibility.php +152 -0
- includes/core/class-wds-controller-analysis.php +11 -5
- includes/core/class-wds-controller-io.php +18 -13
- includes/core/class-wds-controller-pointers.php +150 -0
- includes/core/class-wds-controller-sitemap.php +31 -4
- includes/core/class-wds-core-request.php +16 -0
- includes/core/class-wds-endpoint-resolver.php +35 -6
- includes/core/class-wds-importer.php +78 -10
- includes/core/class-wds-opengraph-value-helper.php +169 -0
- includes/core/class-wds-replacement-helper.php +425 -0
- includes/core/class-wds-robots-value-helper.php +2 -2
- includes/core/class-wds-simple-renderer.php +31 -0
- includes/core/class-wds-type-traverser.php +16 -1
- includes/core/class-wds-yoast-importer.php +13 -1
- includes/core/core.php +145 -28
- includes/css/app.css +1 -1
- includes/css/wp-dashboard.css +1 -1
- includes/front.php +2 -0
- includes/js/wds-admin-onpage.js +25 -1
- includes/js/wds-admin-pointers.js +43 -0
- includes/js/wds-admin-settings.js +0 -71
- includes/js/wds-admin.js +1 -0
- includes/js/wds-metabox.js +61 -41
- includes/js/wds-third-party-import.js +213 -0
- includes/tools/class-wds-opengraph-printer.php +21 -227
- includes/tools/class-wds-twitter-printer.php +13 -6
- includes/tools/onpage.php +53 -88
- includes/tools/redirect.php +28 -3
- includes/tools/sitemaps-dashboard-widget.php +24 -17
- includes/tools/sitemaps.php +6 -4
- languages/{wpmu-dev-seo.pot → wds.pot} +390 -280
- readme.txt +73 -1
- wpmu-dev-seo.php +2 -3
autoloader.php
CHANGED
@@ -1,10 +1,22 @@
|
|
1 |
<?php
|
2 |
|
3 |
function smartcrawl_autoload( $class ) {
|
4 |
-
$
|
5 |
-
if (
|
6 |
-
|
7 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
}
|
9 |
|
10 |
spl_autoload_register( 'smartcrawl_autoload' );
|
1 |
<?php
|
2 |
|
3 |
function smartcrawl_autoload( $class ) {
|
4 |
+
$mappings_file = dirname( __FILE__ ) . '/class-mappings.php';
|
5 |
+
if ( ! file_exists( $mappings_file ) ) {
|
6 |
+
return;
|
7 |
}
|
8 |
+
|
9 |
+
$class_mappings = include $mappings_file;
|
10 |
+
if ( ! isset( $class_mappings[ $class ] ) ) {
|
11 |
+
return;
|
12 |
+
}
|
13 |
+
|
14 |
+
$class_path = untrailingslashit( SMARTCRAWL_PLUGIN_DIR ) . $class_mappings[ $class ];
|
15 |
+
if ( ! file_exists( $class_path ) ) {
|
16 |
+
return;
|
17 |
+
}
|
18 |
+
|
19 |
+
include $class_path;
|
20 |
}
|
21 |
|
22 |
spl_autoload_register( 'smartcrawl_autoload' );
|
changelog.txt
CHANGED
@@ -1,7 +1,79 @@
|
|
1 |
Plugin Name: SmartCrawl SEO
|
2 |
|
3 |
Change Log:
|
4 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
2.2.2.5 - 2018-09-27
|
6 |
----------------------------------------------------------------------
|
7 |
- Fix: revert 2.2.2.4 changes causing WSOD on some sites
|
1 |
Plugin Name: SmartCrawl SEO
|
2 |
|
3 |
Change Log:
|
4 |
+
-----------------------------------------------------------------------
|
5 |
+
2.2.4 - 2018-11-28
|
6 |
+
----------------------------------------------------------------------
|
7 |
+
- Add: URL redirection to external domains
|
8 |
+
|
9 |
+
- Fix: SEO and readability analysis of password-protected posts
|
10 |
+
- Fix: sitemap throws error if there's an image with ampersand sign
|
11 |
+
- Fix: metabox showing details from other posts when globals modified
|
12 |
+
- Fix: better autolinks compatibility with unicode languages
|
13 |
+
- Fix: code improvements for sitemap dashboard
|
14 |
+
- Fix: twitter and OG issues on static posts page
|
15 |
+
- Fix: third-party import notice appears for very old data
|
16 |
+
- Fix: conflicts on woocommerce shop page
|
17 |
+
|
18 |
+
2.2.3 - 2018-11-12
|
19 |
+
----------------------------------------------------------------------
|
20 |
+
- Add: created new UI for Yoast and All In One SEO importers
|
21 |
+
- Add: new option to keep existing post meta intact during import
|
22 |
+
- Add: opengraph code optimizations and improvements
|
23 |
+
- Add: made automatic sitemap updates less resource intensive
|
24 |
+
- Add: made macros more extensible through new filters and actions
|
25 |
+
- Add: support for dynamic placeholders prefixed with 'ct_' 'ct_desc_' and 'cf_'
|
26 |
+
|
27 |
+
- Fix: issues caused by shortcode execution (integration with Divi, Avada, WPBakery and Swift page builders)
|
28 |
+
- Fix: performance issues due to frequent analysis reruns
|
29 |
+
- Fix: minor conflict with Gutenberg
|
30 |
+
- Fix: autolinking module modifying inline scripts
|
31 |
+
- Fix: outdated meta title and meta description limits
|
32 |
+
- Fix: metabox conflict on media edit page
|
33 |
+
- Fix: saving menus taking too much time when analysis active
|
34 |
+
- Fix: post featured image printed as og:image before more specific images
|
35 |
+
- Fix: issues in Avada page builder integration
|
36 |
+
- Fix: log file not being written correctly
|
37 |
+
- Fix: issues caused by faulty packaging
|
38 |
+
- Fix: metabox preview showing raw HTML tags
|
39 |
+
- Fix: search engine update link unnecessarily shown on WP dashboard
|
40 |
+
- Fix: misnamed translation file
|
41 |
+
- Fix: missing trailing slash in sitemap home URL
|
42 |
+
- Fix: dates shown in sitemap dashboard widget not translatable
|
43 |
+
- Fix: sitemap creation error shows html tags
|
44 |
+
- Fix: format of date printed through %%currentdate%% placeholder not changeable
|
45 |
+
- Fix: miscellaneous typos and copy changes
|
46 |
+
- Fix: twitter placeholders on category edit page not accurate
|
47 |
+
- Fix: sitemap XSL stylesheet URL/path resolution issue
|
48 |
+
- Fix: twitter fields displayed unnecessarily on term edit page
|
49 |
+
- Fix: update plugin version constant to ensure cache busting
|
50 |
+
- Fix: untruncated title and description shown in Google previews
|
51 |
+
- Fix: typo in upsell modal
|
52 |
+
- Fix: metabox preview showing divi shortcodes
|
53 |
+
- Fix: issues caused by shortcode execution
|
54 |
+
- Fix: sub-headings check should pass if even one of the sub-headings contains our focus keywords
|
55 |
+
- Fix: twitter card preview not loading
|
56 |
+
- Fix: static front page handled as single post page
|
57 |
+
- Fix: static homepage does not show correct meta values in all scenarios
|
58 |
+
- Fix: static homepage built with builders shows shortcodes in 'Title & Meta' settings
|
59 |
+
- Fix: metabox preview showing WPBakery shortcodes
|
60 |
+
- Fix: warnings in autoloader
|
61 |
+
- Fix: importer support for yoast version 9
|
62 |
+
- Fix: metabox preview showing raw placeholders
|
63 |
+
|
64 |
+
2.2.2.7 - 2018-10-09
|
65 |
+
-----------------------------------------------------------------------
|
66 |
+
- Fix: resolved conflict with swift framework mini product widget
|
67 |
+
- Fix: resolved styling conflicts with WPBakery and a few other plugins
|
68 |
+
- Fix: performance improvement for title and meta rewriting
|
69 |
+
|
70 |
+
2.2.2.6 - 2018-10-02
|
71 |
+
----------------------------------------------------------------------
|
72 |
+
- Fix: fixed issue causing WSOD on some sites
|
73 |
+
- Fix: don't show raw shortcodes in auto-generated meta description
|
74 |
+
- Fix: better compatibility of readability and SEO analysis with page builders
|
75 |
+
- Fix: made Google preview in the SC metabox more accurate
|
76 |
+
|
77 |
2.2.2.5 - 2018-09-27
|
78 |
----------------------------------------------------------------------
|
79 |
- Fix: revert 2.2.2.4 changes causing WSOD on some sites
|
class-mappings.php
CHANGED
@@ -3,12 +3,15 @@
|
|
3 |
return array(
|
4 |
// Classes in includes/core/
|
5 |
'Smartcrawl_AIOSEOP_Importer' => '/core/class-wds-aioseop-importer.php',
|
|
|
6 |
'Smartcrawl_Checks' => '/core/class-wds-checks.php',
|
|
|
7 |
'Smartcrawl_Controller_Analysis' => '/core/class-wds-controller-analysis.php',
|
8 |
'Smartcrawl_Controller_Cron' => '/core/class-wds-controller-cron.php',
|
9 |
'Smartcrawl_Controller_Hub' => '/core/class-wds-controller-hub.php',
|
10 |
'Smartcrawl_Controller_IO' => '/core/class-wds-controller-io.php',
|
11 |
'Smartcrawl_Controller_Onboard' => '/core/class-wds-controller-onboard.php',
|
|
|
12 |
'Smartcrawl_Controller_Sitemap' => '/core/class-wds-controller-sitemap.php',
|
13 |
'Smartcrawl_Core_Request' => '/core/class-wds-core-request.php',
|
14 |
'Smartcrawl_Endpoint_Resolver' => '/core/class-wds-endpoint-resolver.php',
|
@@ -25,7 +28,10 @@ return array(
|
|
25 |
'Smartcrawl_Model_Redirection' => '/core/class-wds-model-redirection.php',
|
26 |
'Smartcrawl_Model_User' => '/core/class-wds-model-user.php',
|
27 |
'Smartcrawl_Renderable' => '/core/class-wds-renderable.php',
|
|
|
|
|
28 |
'Smartcrawl_Reset' => '/core/class-wds-reset.php',
|
|
|
29 |
'Smartcrawl_Robots_Value_Helper' => '/core/class-wds-robots-value-helper.php',
|
30 |
'Smartcrawl_SeoReport' => '/core/class-wds-seo-report.php',
|
31 |
'Smartcrawl_Service' => '/core/class-wds-service.php',
|
3 |
return array(
|
4 |
// Classes in includes/core/
|
5 |
'Smartcrawl_AIOSEOP_Importer' => '/core/class-wds-aioseop-importer.php',
|
6 |
+
'Smartcrawl_Canonical_Value_Helper' => '/core/class-wds-canonical-value-helper.php',
|
7 |
'Smartcrawl_Checks' => '/core/class-wds-checks.php',
|
8 |
+
'Smartcrawl_Compatibility' => '/core/class-wds-compatibility.php',
|
9 |
'Smartcrawl_Controller_Analysis' => '/core/class-wds-controller-analysis.php',
|
10 |
'Smartcrawl_Controller_Cron' => '/core/class-wds-controller-cron.php',
|
11 |
'Smartcrawl_Controller_Hub' => '/core/class-wds-controller-hub.php',
|
12 |
'Smartcrawl_Controller_IO' => '/core/class-wds-controller-io.php',
|
13 |
'Smartcrawl_Controller_Onboard' => '/core/class-wds-controller-onboard.php',
|
14 |
+
'Smartcrawl_Controller_Pointers' => '/core/class-wds-controller-pointers.php',
|
15 |
'Smartcrawl_Controller_Sitemap' => '/core/class-wds-controller-sitemap.php',
|
16 |
'Smartcrawl_Core_Request' => '/core/class-wds-core-request.php',
|
17 |
'Smartcrawl_Endpoint_Resolver' => '/core/class-wds-endpoint-resolver.php',
|
28 |
'Smartcrawl_Model_Redirection' => '/core/class-wds-model-redirection.php',
|
29 |
'Smartcrawl_Model_User' => '/core/class-wds-model-user.php',
|
30 |
'Smartcrawl_Renderable' => '/core/class-wds-renderable.php',
|
31 |
+
'Smartcrawl_Replacement_Helper' => '/core/class-wds-replacement-helper.php',
|
32 |
+
'Smartcrawl_Simple_Renderer' => '/core/class-wds-simple-renderer.php',
|
33 |
'Smartcrawl_Reset' => '/core/class-wds-reset.php',
|
34 |
+
'Smartcrawl_OpenGraph_Value_Helper' => '/core/class-wds-opengraph-value-helper.php',
|
35 |
'Smartcrawl_Robots_Value_Helper' => '/core/class-wds-robots-value-helper.php',
|
36 |
'Smartcrawl_SeoReport' => '/core/class-wds-seo-report.php',
|
37 |
'Smartcrawl_Service' => '/core/class-wds-service.php',
|
config.php
CHANGED
@@ -52,7 +52,7 @@ if ( ! defined( 'SMARTCRAWL_TITLE_LENGTH_CHAR_COUNT_LIMIT' ) ) {
|
|
52 |
define( 'SMARTCRAWL_TITLE_LENGTH_CHAR_COUNT_LIMIT', 70 );
|
53 |
}
|
54 |
if ( ! defined( 'SMARTCRAWL_METADESC_LENGTH_CHAR_COUNT_LIMIT' ) ) {
|
55 |
-
define( 'SMARTCRAWL_METADESC_LENGTH_CHAR_COUNT_LIMIT',
|
56 |
}
|
57 |
|
58 |
// Debugging defines.
|
52 |
define( 'SMARTCRAWL_TITLE_LENGTH_CHAR_COUNT_LIMIT', 70 );
|
53 |
}
|
54 |
if ( ! defined( 'SMARTCRAWL_METADESC_LENGTH_CHAR_COUNT_LIMIT' ) ) {
|
55 |
+
define( 'SMARTCRAWL_METADESC_LENGTH_CHAR_COUNT_LIMIT', 300 );
|
56 |
}
|
57 |
|
58 |
// Debugging defines.
|
includes/admin/admin.php
CHANGED
@@ -106,11 +106,14 @@ class Smartcrawl_Admin extends Smartcrawl_Renderable {
|
|
106 |
|
107 |
Smartcrawl_Controller_Onboard::serve();
|
108 |
Smartcrawl_Controller_Analysis::serve();
|
|
|
109 |
|
110 |
if ( Smartcrawl_Settings::get_setting( 'onpage' ) ) {
|
111 |
Smartcrawl_Metabox::run();
|
112 |
Smartcrawl_Taxonomy::run();
|
113 |
}
|
|
|
|
|
114 |
}
|
115 |
|
116 |
/**
|
106 |
|
107 |
Smartcrawl_Controller_Onboard::serve();
|
108 |
Smartcrawl_Controller_Analysis::serve();
|
109 |
+
Smartcrawl_Controller_Pointers::run();
|
110 |
|
111 |
if ( Smartcrawl_Settings::get_setting( 'onpage' ) ) {
|
112 |
Smartcrawl_Metabox::run();
|
113 |
Smartcrawl_Taxonomy::run();
|
114 |
}
|
115 |
+
|
116 |
+
Smartcrawl_Compatibility::run();
|
117 |
}
|
118 |
|
119 |
/**
|
includes/admin/metabox.php
CHANGED
@@ -65,6 +65,10 @@ class Smartcrawl_Metabox extends Smartcrawl_Renderable {
|
|
65 |
add_action( 'admin_print_scripts-post.php', array( $this, 'js_load_scripts' ) );
|
66 |
add_action( 'admin_print_scripts-post-new.php', array( $this, 'js_load_scripts' ) );
|
67 |
add_action( 'wp_ajax_wds-metabox-preview', array( $this, 'json_create_preview' ) );
|
|
|
|
|
|
|
|
|
68 |
|
69 |
$this->_is_running = true;
|
70 |
}
|
@@ -85,12 +89,10 @@ class Smartcrawl_Metabox extends Smartcrawl_Renderable {
|
|
85 |
*/
|
86 |
public function json_create_preview() {
|
87 |
$data = $this->get_request_data();
|
88 |
-
$title = sanitize_text_field( smartcrawl_get_array_value( $data, 'title' ) );
|
89 |
-
$description = sanitize_text_field( smartcrawl_get_array_value( $data, 'description' ) );
|
90 |
$post_id = (int) smartcrawl_get_array_value( $data, 'post_id' );
|
91 |
$result = array( 'success' => false );
|
92 |
|
93 |
-
if (
|
94 |
wp_send_json( $result );
|
95 |
|
96 |
return;
|
@@ -99,9 +101,7 @@ class Smartcrawl_Metabox extends Smartcrawl_Renderable {
|
|
99 |
$latest_post_version = smartcrawl_get_latest_post_version( $post_id );
|
100 |
$result['success'] = true;
|
101 |
$result['markup'] = $this->_load( 'metabox/metabox-preview', array(
|
102 |
-
'post'
|
103 |
-
'title' => $title,
|
104 |
-
'description' => $description,
|
105 |
) );
|
106 |
|
107 |
wp_send_json( $result );
|
@@ -126,7 +126,10 @@ class Smartcrawl_Metabox extends Smartcrawl_Renderable {
|
|
126 |
'lax_enforcement' => ( isset( $options['metabox-lax_enforcement'] ) ? ! ! $options['metabox-lax_enforcement'] : false ),
|
127 |
) );
|
128 |
Smartcrawl_Settings_Admin::register_global_admin_scripts();
|
129 |
-
wp_enqueue_script( 'wds_metabox_onpage', SMARTCRAWL_PLUGIN_URL . '/js/wds-metabox.js', array(
|
|
|
|
|
|
|
130 |
wp_localize_script( 'wds_metabox_onpage', '_wds_metabox', array(
|
131 |
'nonce' => wp_create_nonce( 'wds-metabox-nonce' ),
|
132 |
) );
|
@@ -136,6 +139,7 @@ class Smartcrawl_Metabox extends Smartcrawl_Renderable {
|
|
136 |
|
137 |
Smartcrawl_Settings_Admin::enqueue_shared_ui( false );
|
138 |
|
|
|
139 |
wp_enqueue_script( 'wds-admin-opengraph' );
|
140 |
wp_enqueue_style( 'wds-admin-opengraph' );
|
141 |
wp_enqueue_style( 'wds-select2' );
|
@@ -156,9 +160,7 @@ class Smartcrawl_Metabox extends Smartcrawl_Renderable {
|
|
156 |
/**
|
157 |
* Handles actual metabox rendering
|
158 |
*/
|
159 |
-
public function smartcrawl_meta_boxes() {
|
160 |
-
global $post;
|
161 |
-
|
162 |
$robots_noindex_value = (int) smartcrawl_get_value( 'meta-robots-noindex' );
|
163 |
$robots_nofollow_value = (int) smartcrawl_get_value( 'meta-robots-nofollow' );
|
164 |
$robots_index_value = (int) smartcrawl_get_value( 'meta-robots-index' );
|
@@ -202,8 +204,13 @@ class Smartcrawl_Metabox extends Smartcrawl_Renderable {
|
|
202 |
public function smartcrawl_create_meta_box() {
|
203 |
$show = user_can_see_seo_metabox();
|
204 |
if ( function_exists( 'add_meta_box' ) ) {
|
205 |
-
|
206 |
-
|
|
|
|
|
|
|
|
|
|
|
207 |
if ( $show ) {
|
208 |
add_meta_box( 'wds-wds-meta-box', $metabox_title, array(
|
209 |
&$this,
|
@@ -279,7 +286,10 @@ class Smartcrawl_Metabox extends Smartcrawl_Renderable {
|
|
279 |
$input = stripslashes_deep( $request_data['wds-opengraph'] );
|
280 |
$result = array();
|
281 |
|
282 |
-
$
|
|
|
|
|
|
|
283 |
if ( ! empty( $input['title'] ) ) {
|
284 |
$result['title'] = sanitize_text_field( $input['title'] );
|
285 |
}
|
@@ -294,7 +304,9 @@ class Smartcrawl_Metabox extends Smartcrawl_Renderable {
|
|
294 |
}
|
295 |
}
|
296 |
|
297 |
-
if (
|
|
|
|
|
298 |
update_post_meta( $post_id, '_wds_opengraph', $result );
|
299 |
}
|
300 |
}
|
@@ -303,7 +315,10 @@ class Smartcrawl_Metabox extends Smartcrawl_Renderable {
|
|
303 |
$input = stripslashes_deep( $request_data['wds-twitter'] );
|
304 |
$twitter = array();
|
305 |
|
306 |
-
$
|
|
|
|
|
|
|
307 |
if ( ! empty( $input['title'] ) ) {
|
308 |
$twitter['title'] = sanitize_text_field( $input['title'] );
|
309 |
}
|
@@ -318,14 +333,20 @@ class Smartcrawl_Metabox extends Smartcrawl_Renderable {
|
|
318 |
}
|
319 |
}
|
320 |
|
321 |
-
if (
|
|
|
|
|
322 |
update_post_meta( $post_id, '_wds_twitter', $twitter );
|
323 |
}
|
324 |
}
|
325 |
|
326 |
if ( isset( $request_data['wds_focus'] ) ) {
|
327 |
$focus = stripslashes_deep( $request_data['wds_focus'] );
|
328 |
-
|
|
|
|
|
|
|
|
|
329 |
}
|
330 |
|
331 |
foreach ( $request_data as $key => $value ) {
|
65 |
add_action( 'admin_print_scripts-post.php', array( $this, 'js_load_scripts' ) );
|
66 |
add_action( 'admin_print_scripts-post-new.php', array( $this, 'js_load_scripts' ) );
|
67 |
add_action( 'wp_ajax_wds-metabox-preview', array( $this, 'json_create_preview' ) );
|
68 |
+
/**
|
69 |
+
* TODO perhaps we can combine wds-analysis-get-editor-analysis wds-metabox-preview and wds_metabox_update
|
70 |
+
* since they are used together so frequently
|
71 |
+
*/
|
72 |
|
73 |
$this->_is_running = true;
|
74 |
}
|
89 |
*/
|
90 |
public function json_create_preview() {
|
91 |
$data = $this->get_request_data();
|
|
|
|
|
92 |
$post_id = (int) smartcrawl_get_array_value( $data, 'post_id' );
|
93 |
$result = array( 'success' => false );
|
94 |
|
95 |
+
if ( empty( $post_id ) ) {
|
96 |
wp_send_json( $result );
|
97 |
|
98 |
return;
|
101 |
$latest_post_version = smartcrawl_get_latest_post_version( $post_id );
|
102 |
$result['success'] = true;
|
103 |
$result['markup'] = $this->_load( 'metabox/metabox-preview', array(
|
104 |
+
'post' => $latest_post_version,
|
|
|
|
|
105 |
) );
|
106 |
|
107 |
wp_send_json( $result );
|
126 |
'lax_enforcement' => ( isset( $options['metabox-lax_enforcement'] ) ? ! ! $options['metabox-lax_enforcement'] : false ),
|
127 |
) );
|
128 |
Smartcrawl_Settings_Admin::register_global_admin_scripts();
|
129 |
+
wp_enqueue_script( 'wds_metabox_onpage', SMARTCRAWL_PLUGIN_URL . '/js/wds-metabox.js', array(
|
130 |
+
'wds-select2',
|
131 |
+
'autosave',
|
132 |
+
), $version );
|
133 |
wp_localize_script( 'wds_metabox_onpage', '_wds_metabox', array(
|
134 |
'nonce' => wp_create_nonce( 'wds-metabox-nonce' ),
|
135 |
) );
|
139 |
|
140 |
Smartcrawl_Settings_Admin::enqueue_shared_ui( false );
|
141 |
|
142 |
+
wp_enqueue_media();
|
143 |
wp_enqueue_script( 'wds-admin-opengraph' );
|
144 |
wp_enqueue_style( 'wds-admin-opengraph' );
|
145 |
wp_enqueue_style( 'wds-select2' );
|
160 |
/**
|
161 |
* Handles actual metabox rendering
|
162 |
*/
|
163 |
+
public function smartcrawl_meta_boxes($post) {
|
|
|
|
|
164 |
$robots_noindex_value = (int) smartcrawl_get_value( 'meta-robots-noindex' );
|
165 |
$robots_nofollow_value = (int) smartcrawl_get_value( 'meta-robots-nofollow' );
|
166 |
$robots_index_value = (int) smartcrawl_get_value( 'meta-robots-index' );
|
204 |
public function smartcrawl_create_meta_box() {
|
205 |
$show = user_can_see_seo_metabox();
|
206 |
if ( function_exists( 'add_meta_box' ) ) {
|
207 |
+
// Show branding for singular installs.
|
208 |
+
$metabox_title = is_multisite() ? __( 'SmartCrawl', 'wds' ) : 'SmartCrawl';
|
209 |
+
$post_types = get_post_types(array(
|
210 |
+
'show_ui' => true, // Only if it actually supports WP UI.
|
211 |
+
));
|
212 |
+
foreach ( $post_types as $posttype ) {
|
213 |
+
if ( 'attachment' === $posttype ) { continue; }
|
214 |
if ( $show ) {
|
215 |
add_meta_box( 'wds-wds-meta-box', $metabox_title, array(
|
216 |
&$this,
|
286 |
$input = stripslashes_deep( $request_data['wds-opengraph'] );
|
287 |
$result = array();
|
288 |
|
289 |
+
$og_disabled = ! empty( $input['disabled'] );
|
290 |
+
if ( $og_disabled ) {
|
291 |
+
$result['disabled'] = true;
|
292 |
+
}
|
293 |
if ( ! empty( $input['title'] ) ) {
|
294 |
$result['title'] = sanitize_text_field( $input['title'] );
|
295 |
}
|
304 |
}
|
305 |
}
|
306 |
|
307 |
+
if ( empty( $result ) ) {
|
308 |
+
delete_post_meta( $post_id, '_wds_opengraph' );
|
309 |
+
} else {
|
310 |
update_post_meta( $post_id, '_wds_opengraph', $result );
|
311 |
}
|
312 |
}
|
315 |
$input = stripslashes_deep( $request_data['wds-twitter'] );
|
316 |
$twitter = array();
|
317 |
|
318 |
+
$twitter_disabled = ! empty( $input['disabled'] );
|
319 |
+
if ( $twitter_disabled ) {
|
320 |
+
$twitter['disabled'] = true;
|
321 |
+
}
|
322 |
if ( ! empty( $input['title'] ) ) {
|
323 |
$twitter['title'] = sanitize_text_field( $input['title'] );
|
324 |
}
|
333 |
}
|
334 |
}
|
335 |
|
336 |
+
if ( empty( $twitter ) ) {
|
337 |
+
delete_post_meta( $post_id, '_wds_twitter' );
|
338 |
+
} else {
|
339 |
update_post_meta( $post_id, '_wds_twitter', $twitter );
|
340 |
}
|
341 |
}
|
342 |
|
343 |
if ( isset( $request_data['wds_focus'] ) ) {
|
344 |
$focus = stripslashes_deep( $request_data['wds_focus'] );
|
345 |
+
if ( trim( $focus ) === '' ) {
|
346 |
+
delete_post_meta( $post_id, '_wds_focus-keywords' );
|
347 |
+
} else {
|
348 |
+
update_post_meta( $post_id, '_wds_focus-keywords', sanitize_text_field( $focus ) );
|
349 |
+
}
|
350 |
}
|
351 |
|
352 |
foreach ( $request_data as $key => $value ) {
|
includes/admin/settings.php
CHANGED
@@ -421,18 +421,33 @@ abstract class Smartcrawl_Settings_Admin extends Smartcrawl_Settings {
|
|
421 |
};
|
422 |
|
423 |
if ( class_exists( 'Smartcrawl_Settings_Settings' ) && ! wp_script_is( 'wds-admin-settings', 'registered' ) ) {
|
424 |
-
wp_register_script( 'wds-
|
425 |
'wds-admin',
|
426 |
-
'
|
427 |
'jquery',
|
428 |
), $version );
|
429 |
|
430 |
-
wp_localize_script( 'wds-
|
431 |
-
'
|
432 |
-
'
|
433 |
-
'import'
|
|
|
|
|
|
|
434 |
),
|
|
|
|
|
|
|
|
|
|
|
435 |
) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
436 |
};
|
437 |
}
|
438 |
|
@@ -580,26 +595,6 @@ abstract class Smartcrawl_Settings_Admin extends Smartcrawl_Settings {
|
|
580 |
}
|
581 |
}
|
582 |
|
583 |
-
if ( ! empty( $_GET['imported'] ) ) {
|
584 |
-
$plugin = smartcrawl_get_array_value( $_GET, 'plugin' );
|
585 |
-
$plugin_label = 'yoast' === $plugin ? __( 'Yoast SEO', 'wds' ) : __( 'All In One SEO', 'wds' );
|
586 |
-
|
587 |
-
$plugins_link = sprintf(
|
588 |
-
'<a href="%s">%s</a>',
|
589 |
-
admin_url( 'plugins.php' ),
|
590 |
-
sprintf(
|
591 |
-
__( 'deactivate %s', 'wds' ),
|
592 |
-
$plugin_label
|
593 |
-
)
|
594 |
-
);
|
595 |
-
|
596 |
-
$this->msg = sprintf(
|
597 |
-
__( 'Your %1$s configuration has been successfully imported! We recommend you %2$s to avoid any potential conflicts.', 'wds' ),
|
598 |
-
$plugin_label,
|
599 |
-
$plugins_link
|
600 |
-
);
|
601 |
-
}
|
602 |
-
|
603 |
$errors = get_settings_errors( $this->option_name );
|
604 |
if ( $errors ) {
|
605 |
set_transient( 'wds-settings-save-errors', $errors, 3 );
|
421 |
};
|
422 |
|
423 |
if ( class_exists( 'Smartcrawl_Settings_Settings' ) && ! wp_script_is( 'wds-admin-settings', 'registered' ) ) {
|
424 |
+
wp_register_script( 'wds-third-party-import', SMARTCRAWL_PLUGIN_URL . 'js/wds-third-party-import.js', array(
|
425 |
'wds-admin',
|
426 |
+
'underscore',
|
427 |
'jquery',
|
428 |
), $version );
|
429 |
|
430 |
+
wp_localize_script( 'wds-third-party-import', '_wds_import', array(
|
431 |
+
'templates' => array(
|
432 |
+
'import-options' => $this->_load( 'settings/underscore-import-options' ),
|
433 |
+
'import-error' => $this->_load( 'settings/underscore-import-error' ),
|
434 |
+
'import-progress' => $this->_load( 'settings/underscore-import-progress' ),
|
435 |
+
'import-progress-reset' => $this->_load( 'settings/underscore-progress-reset' ),
|
436 |
+
'import-success' => $this->_load( 'settings/underscore-import-success' ),
|
437 |
),
|
438 |
+
'strings' => array(
|
439 |
+
'Yoast' => esc_html__( 'Yoast', 'wds' ),
|
440 |
+
'All In One SEO' => esc_html__( 'All In One SEO', 'wds' ),
|
441 |
+
),
|
442 |
+
'nonce' => wp_create_nonce( 'wds-io-nonce' ),
|
443 |
) );
|
444 |
+
|
445 |
+
wp_register_script( 'wds-admin-settings', SMARTCRAWL_PLUGIN_URL . 'js/wds-admin-settings.js', array(
|
446 |
+
'wds-admin',
|
447 |
+
'wds-third-party-import',
|
448 |
+
'wds-qtip2-script',
|
449 |
+
'jquery',
|
450 |
+
), $version );
|
451 |
};
|
452 |
}
|
453 |
|
595 |
}
|
596 |
}
|
597 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
598 |
$errors = get_settings_errors( $this->option_name );
|
599 |
if ( $errors ) {
|
600 |
set_transient( 'wds-settings-save-errors', $errors, 3 );
|
includes/admin/settings/onpage.php
CHANGED
@@ -328,6 +328,19 @@ class Smartcrawl_Onpage_Settings extends Smartcrawl_Settings_Admin {
|
|
328 |
}
|
329 |
break;
|
330 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
331 |
case 'bp-group':
|
332 |
$group = $this->_get_random_bp_group();
|
333 |
if ( ! empty( $group ) ) {
|
@@ -522,8 +535,6 @@ class Smartcrawl_Onpage_Settings extends Smartcrawl_Settings_Admin {
|
|
522 |
$arguments['separators'] = smartcrawl_get_separators();
|
523 |
|
524 |
$arguments['show_homepage_options'] = $this->_show_homepage_options();
|
525 |
-
$arguments['homepage_title'] = $this->_get_homepage_title( $smartcrawl_options );
|
526 |
-
$arguments['homepage_description'] = $this->_get_homepage_description( $smartcrawl_options );
|
527 |
|
528 |
$arguments['active_tab'] = $this->_get_last_active_tab( 'tab_homepage' );
|
529 |
|
@@ -591,39 +602,6 @@ class Smartcrawl_Onpage_Settings extends Smartcrawl_Settings_Admin {
|
|
591 |
return $show_homepage_options;
|
592 |
}
|
593 |
|
594 |
-
private function _get_homepage_title( $options ) {
|
595 |
-
$front_page_id = (int) get_option( 'page_on_front' );
|
596 |
-
|
597 |
-
if ( ! $this->_show_homepage_options() && $front_page_id ) {
|
598 |
-
|
599 |
-
$homepage_title = smartcrawl_get_value( 'title', $front_page_id );
|
600 |
-
if ( empty( $homepage_title ) ) {
|
601 |
-
$front_page = get_post( $front_page_id );
|
602 |
-
$homepage_title = $front_page->post_title;
|
603 |
-
}
|
604 |
-
|
605 |
-
return $homepage_title;
|
606 |
-
} else {
|
607 |
-
return $options['title-home'];
|
608 |
-
}
|
609 |
-
}
|
610 |
-
|
611 |
-
private function _get_homepage_description( $options ) {
|
612 |
-
$front_page_id = (int) get_option( 'page_on_front' );
|
613 |
-
|
614 |
-
if ( ! $this->_show_homepage_options() && $front_page_id ) {
|
615 |
-
$homepage_description = smartcrawl_get_value( 'metadesc', $front_page_id );
|
616 |
-
if ( empty( $homepage_description ) ) {
|
617 |
-
$front_page = get_post( $front_page_id );
|
618 |
-
$homepage_description = substr( strip_tags( $front_page->post_content ), 0, 130 );
|
619 |
-
}
|
620 |
-
|
621 |
-
return $homepage_description;
|
622 |
-
} else {
|
623 |
-
return $options['metadesc-home'];
|
624 |
-
}
|
625 |
-
}
|
626 |
-
|
627 |
/**
|
628 |
* Default settings
|
629 |
*/
|
328 |
}
|
329 |
break;
|
330 |
|
331 |
+
case 'static-homepage':
|
332 |
+
$resolver = Smartcrawl_Endpoint_Resolver::resolve();
|
333 |
+
$front_page = get_post( (int) get_option( 'page_on_front' ) );
|
334 |
+
$resolver->simulate( Smartcrawl_Endpoint_Resolver::L_SINGULAR, is_a( $front_page, 'WP_Post' ) ? $front_page : null );
|
335 |
+
|
336 |
+
$title = Smartcrawl_OnPage::get()->get_title();
|
337 |
+
$description = Smartcrawl_OnPage::get()->get_description();
|
338 |
+
$link = get_home_url();
|
339 |
+
$updated = true;
|
340 |
+
|
341 |
+
$resolver->stop_simulation();
|
342 |
+
break;
|
343 |
+
|
344 |
case 'bp-group':
|
345 |
$group = $this->_get_random_bp_group();
|
346 |
if ( ! empty( $group ) ) {
|
535 |
$arguments['separators'] = smartcrawl_get_separators();
|
536 |
|
537 |
$arguments['show_homepage_options'] = $this->_show_homepage_options();
|
|
|
|
|
538 |
|
539 |
$arguments['active_tab'] = $this->_get_last_active_tab( 'tab_homepage' );
|
540 |
|
602 |
return $show_homepage_options;
|
603 |
}
|
604 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
605 |
/**
|
606 |
* Default settings
|
607 |
*/
|
includes/admin/settings/settings.php
CHANGED
@@ -465,15 +465,13 @@ class Smartcrawl_Settings_Settings extends Smartcrawl_Settings_Admin {
|
|
465 |
$this->show_import_notice(
|
466 |
new Smartcrawl_Yoast_Importer(),
|
467 |
'yoast-seo',
|
468 |
-
esc_html__( 'Yoast SEO', 'wds' )
|
469 |
-
'wordpress-seo/wp-seo.php'
|
470 |
);
|
471 |
|
472 |
$this->show_import_notice(
|
473 |
new Smartcrawl_AIOSEOP_Importer(),
|
474 |
'all-in-one-seo',
|
475 |
-
esc_html__( 'All In One SEO', 'wds' )
|
476 |
-
'all-in-one-seo-pack/all_in_one_seo_pack.php'
|
477 |
);
|
478 |
}
|
479 |
|
@@ -483,8 +481,8 @@ class Smartcrawl_Settings_Settings extends Smartcrawl_Settings_Admin {
|
|
483 |
* @param $plugin_name string
|
484 |
* @param $plugin
|
485 |
*/
|
486 |
-
private function show_import_notice( $importer, $plugin_key, $plugin_name
|
487 |
-
if ( ! $importer->data_exists()
|
488 |
return;
|
489 |
}
|
490 |
|
@@ -494,7 +492,7 @@ class Smartcrawl_Settings_Settings extends Smartcrawl_Settings_Admin {
|
|
494 |
esc_html__( 'auto-import', 'wds' )
|
495 |
);
|
496 |
$message = sprintf(
|
497 |
-
esc_html__( "We've detected you have %1\$s
|
498 |
$plugin_name,
|
499 |
$auto_import_url
|
500 |
);
|
465 |
$this->show_import_notice(
|
466 |
new Smartcrawl_Yoast_Importer(),
|
467 |
'yoast-seo',
|
468 |
+
esc_html__( 'Yoast SEO', 'wds' )
|
|
|
469 |
);
|
470 |
|
471 |
$this->show_import_notice(
|
472 |
new Smartcrawl_AIOSEOP_Importer(),
|
473 |
'all-in-one-seo',
|
474 |
+
esc_html__( 'All In One SEO', 'wds' )
|
|
|
475 |
);
|
476 |
}
|
477 |
|
481 |
* @param $plugin_name string
|
482 |
* @param $plugin
|
483 |
*/
|
484 |
+
private function show_import_notice( $importer, $plugin_key, $plugin_name ) {
|
485 |
+
if ( ! $importer->data_exists() ) {
|
486 |
return;
|
487 |
}
|
488 |
|
492 |
esc_html__( 'auto-import', 'wds' )
|
493 |
);
|
494 |
$message = sprintf(
|
495 |
+
esc_html__( "We've detected you have %1\$s settings. Do you want to %2\$s your configuration into SmartCrawl?" ),
|
496 |
$plugin_name,
|
497 |
$auto_import_url
|
498 |
);
|
includes/admin/templates/advanced-tools/advanced-tools-settings.php
CHANGED
@@ -23,9 +23,9 @@
|
|
23 |
'section_args' => array(
|
24 |
'content' => sprintf(
|
25 |
'%s<br/>%s<br/>%s',
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
),
|
30 |
'image' => 'autolinking-disabled.png',
|
31 |
'component' => 'autolinks',
|
23 |
'section_args' => array(
|
24 |
'content' => sprintf(
|
25 |
'%s<br/>%s<br/>%s',
|
26 |
+
_x( 'Configure SmartCrawl to automatically link certain key words to a page on your blog or even', 'part of a larger text', 'wds' ),
|
27 |
+
_x( 'a whole new site all together. Internal linking can help boost SEO by giving search engines', 'part of a larger text', 'wds' ),
|
28 |
+
_x( 'ample ways to index your site.', 'part of a larger text', 'wds' )
|
29 |
),
|
30 |
'image' => 'autolinking-disabled.png',
|
31 |
'component' => 'autolinks',
|
includes/admin/templates/checkup/checkup-checkup-results.php
CHANGED
@@ -74,7 +74,7 @@ $show_upsell_message = isset( $show_upsell_message ) ? $show_upsell_message : tr
|
|
74 |
'dismissible' => false,
|
75 |
'message' => sprintf(
|
76 |
'%s <a href="#upgrade-to-pro">%s</a>',
|
77 |
-
esc_html__( 'Grab the Pro version of SmartCrawl to unlock unlimited SEO Checkups plus automated scheduled reports to always stay on top of any issues
|
78 |
esc_html__( '- Try it all FREE today', 'wds' )
|
79 |
),
|
80 |
) );
|
74 |
'dismissible' => false,
|
75 |
'message' => sprintf(
|
76 |
'%s <a href="#upgrade-to-pro">%s</a>',
|
77 |
+
esc_html__( 'Grab the Pro version of SmartCrawl to unlock unlimited SEO Checkups plus automated scheduled reports to always stay on top of any issues. These features are included in a WPMU DEV membership along with 100+ plugins, 24/7 support and lots of handy site management tools.', 'wds' ),
|
78 |
esc_html__( '- Try it all FREE today', 'wds' )
|
79 |
),
|
80 |
) );
|
includes/admin/templates/dashboard/onboarding.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
data-title="<?php esc_attr_e( 'Quick setup', 'wds' ); ?>">
|
3 |
<div class="intro">
|
4 |
<p>
|
5 |
-
<?php esc_html_e( "Welcome to SmartCrawl, the hottest SEO plugin for WordPress! Let's quickly set up the basics for you, then you can fine
|
6 |
</p>
|
7 |
</div>
|
8 |
|
2 |
data-title="<?php esc_attr_e( 'Quick setup', 'wds' ); ?>">
|
3 |
<div class="intro">
|
4 |
<p>
|
5 |
+
<?php esc_html_e( "Welcome to SmartCrawl, the hottest SEO plugin for WordPress! Let's quickly set up the basics for you, then you can fine tune each setting as you go - our recommendations are on by default.", 'wds' ); ?>
|
6 |
</p>
|
7 |
</div>
|
8 |
|
includes/admin/templates/metabox/analysis-readability.php
CHANGED
@@ -62,61 +62,69 @@ $refresh_analysis_disabled = 'auto-draft' === get_post_status() ? 'disabled' : '
|
|
62 |
</div>
|
63 |
</div>
|
64 |
|
65 |
-
<div class="wds-
|
66 |
-
<
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
</div>
|
71 |
|
72 |
-
|
73 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
74 |
<button type="button"
|
75 |
-
class="wds-
|
76 |
data-check_id="readability">
|
77 |
-
<?php esc_html_e( '
|
78 |
</button>
|
79 |
</div>
|
80 |
-
<?php else : ?>
|
81 |
-
<div class="wds-readability-level wds-accordion-handle-part">
|
82 |
-
<span class="wds-check-item-indicator"><?php echo esc_html( $readability_level ); ?></span>
|
83 |
-
</div>
|
84 |
-
<?php endif; ?>
|
85 |
-
</div>
|
86 |
-
<div class="wds-accordion-content">
|
87 |
-
<div class="wds-small-text"><strong><?php esc_html_e( 'Overview', 'wds' ); ?></strong></div>
|
88 |
-
<p class="wds-small-text"><?php esc_html_e( 'The Flesch-Kincaid readability tests are readability tests designed to indicate how difficult a passage in English is to understand. Here are the benchmarks.', 'wds' ); ?></p>
|
89 |
-
<table class="wds-list-table">
|
90 |
-
<tbody>
|
91 |
-
<tr>
|
92 |
-
<th><?php esc_html_e( 'Score', 'wds' ); ?></th>
|
93 |
-
<th><?php esc_html_e( 'Description', 'wds' ); ?></th>
|
94 |
-
</tr>
|
95 |
-
|
96 |
-
<?php foreach ( $readability_levels_map as $label => $level ) : ?>
|
97 |
-
<tr>
|
98 |
-
<?php
|
99 |
-
if ( ! is_array( $level ) || ! isset( $level['max'] ) || ! isset( $level['min'] ) ) {
|
100 |
-
continue;
|
101 |
-
}
|
102 |
-
?>
|
103 |
-
<td><?php echo esc_html( (int) ceil( $level['min'] ) ); ?>
|
104 |
-
- <?php echo esc_html( (int) ceil( $level['max'] ) ); ?></td>
|
105 |
-
<td><?php echo esc_html( $label ); ?></td>
|
106 |
-
</tr>
|
107 |
-
<?php endforeach; ?>
|
108 |
-
</tbody>
|
109 |
-
</table>
|
110 |
-
|
111 |
-
<div class="wds-small-text"><strong><?php esc_html_e( 'How to fix', 'wds' ); ?></strong></div>
|
112 |
-
<p class="wds-small-text"><?php esc_html_e( 'Try to use shorter sentences, with less difficult words to improve readability.', 'wds' ); ?></p>
|
113 |
-
|
114 |
-
<div class="wds-ignore-container">
|
115 |
-
<button type="button"
|
116 |
-
class="wds-ignore wds-button-with-loader wds-button-with-right-loader wds-disabled-during-request button button-small button-dark button-dark-o"
|
117 |
-
data-check_id="readability">
|
118 |
-
<?php esc_html_e( 'Ignore', 'wds' ); ?>
|
119 |
-
</button>
|
120 |
</div>
|
121 |
</div>
|
122 |
</div>
|
62 |
</div>
|
63 |
</div>
|
64 |
|
65 |
+
<div class="wds-analysis-working">
|
66 |
+
<p>
|
67 |
+
<?php esc_html_e( 'Analyzing content, please wait a few moments', 'wds' ); ?>
|
68 |
+
</p>
|
69 |
+
</div>
|
|
|
70 |
|
71 |
+
<div class="wds-report-inner">
|
72 |
+
<div class="wds-accordion">
|
73 |
+
<div class="wds-check-item wds-accordion-section <?php echo esc_attr( $classes ); ?>">
|
74 |
+
<div class="wds-accordion-handle">
|
75 |
+
<div class="wds-accordion-handle-part">
|
76 |
+
<?php esc_html_e( 'Flesch-Kincaid Test', 'wds' ); ?>
|
77 |
+
</div>
|
78 |
+
|
79 |
+
<?php if ( $readability_ignored ) : ?>
|
80 |
+
<div class="wds-unignore-container wds-accordion-handle-part">
|
81 |
+
<button type="button"
|
82 |
+
class="wds-unignore wds-button-with-loader wds-button-with-left-loader wds-disabled-during-request button button-small button-dark-o"
|
83 |
+
data-check_id="readability">
|
84 |
+
<?php esc_html_e( 'Restore', 'wds' ); ?>
|
85 |
+
</button>
|
86 |
+
</div>
|
87 |
+
<?php else : ?>
|
88 |
+
<div class="wds-readability-level wds-accordion-handle-part">
|
89 |
+
<span class="wds-check-item-indicator"><?php echo esc_html( $readability_level ); ?></span>
|
90 |
+
</div>
|
91 |
+
<?php endif; ?>
|
92 |
+
</div>
|
93 |
+
<div class="wds-accordion-content">
|
94 |
+
<div class="wds-small-text"><strong><?php esc_html_e( 'Overview', 'wds' ); ?></strong></div>
|
95 |
+
<p class="wds-small-text"><?php esc_html_e( 'The Flesch-Kincaid readability tests are readability tests designed to indicate how difficult a passage in English is to understand. Here are the benchmarks.', 'wds' ); ?></p>
|
96 |
+
<table class="wds-list-table">
|
97 |
+
<tbody>
|
98 |
+
<tr>
|
99 |
+
<th><?php esc_html_e( 'Score', 'wds' ); ?></th>
|
100 |
+
<th><?php esc_html_e( 'Description', 'wds' ); ?></th>
|
101 |
+
</tr>
|
102 |
+
|
103 |
+
<?php foreach ( $readability_levels_map as $label => $level ) : ?>
|
104 |
+
<tr>
|
105 |
+
<?php
|
106 |
+
if ( ! is_array( $level ) || ! isset( $level['max'] ) || ! isset( $level['min'] ) ) {
|
107 |
+
continue;
|
108 |
+
}
|
109 |
+
?>
|
110 |
+
<td><?php echo esc_html( (int) ceil( $level['min'] ) ); ?>
|
111 |
+
- <?php echo esc_html( (int) ceil( $level['max'] ) ); ?></td>
|
112 |
+
<td><?php echo esc_html( $label ); ?></td>
|
113 |
+
</tr>
|
114 |
+
<?php endforeach; ?>
|
115 |
+
</tbody>
|
116 |
+
</table>
|
117 |
+
|
118 |
+
<div class="wds-small-text"><strong><?php esc_html_e( 'How to fix', 'wds' ); ?></strong></div>
|
119 |
+
<p class="wds-small-text"><?php esc_html_e( 'Try to use shorter sentences, with less difficult words to improve readability.', 'wds' ); ?></p>
|
120 |
+
|
121 |
+
<div class="wds-ignore-container">
|
122 |
<button type="button"
|
123 |
+
class="wds-ignore wds-button-with-loader wds-button-with-right-loader wds-disabled-during-request button button-small button-dark button-dark-o"
|
124 |
data-check_id="readability">
|
125 |
+
<?php esc_html_e( 'Ignore', 'wds' ); ?>
|
126 |
</button>
|
127 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
128 |
</div>
|
129 |
</div>
|
130 |
</div>
|
includes/admin/templates/metabox/analysis-seo-analysis.php
CHANGED
@@ -19,76 +19,84 @@ $focus_keywords_available = empty( $focus_keywords_available ) ? false : $focus_
|
|
19 |
|
20 |
<div class="wds-seo-analysis wds-report" data-errors="<?php echo esc_attr( $error_count ); ?>">
|
21 |
|
22 |
-
<div class="wds-
|
23 |
<p>
|
24 |
-
<?php
|
25 |
-
<?php printf( esc_html__( 'You have %d SEO recommendations. We recommend you satisfy as many improvements as possible to ensure your content gets found.', 'wds' ), intval( $error_count ) ); ?>
|
26 |
-
<?php else : ?>
|
27 |
-
<?php esc_html_e( 'You have optimized your SEO to the max. Bravo!', 'wds' ); ?>
|
28 |
-
<?php endif; ?>
|
29 |
</p>
|
30 |
</div>
|
31 |
-
<div class="wds-accordion">
|
32 |
-
<?php foreach ( $checks as $check_id => $result ) : ?>
|
33 |
-
<?php
|
34 |
-
$passed = $result['status'];
|
35 |
-
$ignored = $result['ignored'];
|
36 |
-
$recommendation = $result['recommendation'];
|
37 |
-
$more_info = $result['more_info'];
|
38 |
-
$status_msg = $result['status_msg'];
|
39 |
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
59 |
</div>
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
|
|
|
|
66 |
</div>
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
|
|
74 |
</div>
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
</div>
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
</div>
|
94 |
</div>
|
19 |
|
20 |
<div class="wds-seo-analysis wds-report" data-errors="<?php echo esc_attr( $error_count ); ?>">
|
21 |
|
22 |
+
<div class="wds-analysis-working">
|
23 |
<p>
|
24 |
+
<?php esc_html_e( 'Analyzing content, please wait a few moments', 'wds' ); ?>
|
|
|
|
|
|
|
|
|
25 |
</p>
|
26 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
|
28 |
+
<div class="wds-report-inner">
|
29 |
+
<div class="wds-notice <?php echo $error_count > 0 ? 'wds-notice-warning' : 'wds-notice-success'; ?>">
|
30 |
+
<p>
|
31 |
+
<?php if ( $error_count > 0 ) : ?>
|
32 |
+
<?php printf( esc_html__( 'You have %d SEO recommendations. We recommend you satisfy as many improvements as possible to ensure your content gets found.', 'wds' ), intval( $error_count ) ); ?>
|
33 |
+
<?php else : ?>
|
34 |
+
<?php esc_html_e( 'You have optimized your SEO to the max. Bravo!', 'wds' ); ?>
|
35 |
+
<?php endif; ?>
|
36 |
+
</p>
|
37 |
+
</div>
|
38 |
+
<div class="wds-accordion">
|
39 |
+
<?php foreach ( $checks as $check_id => $result ) : ?>
|
40 |
+
<?php
|
41 |
+
$passed = $result['status'];
|
42 |
+
$ignored = $result['ignored'];
|
43 |
+
$recommendation = $result['recommendation'];
|
44 |
+
$more_info = $result['more_info'];
|
45 |
+
$status_msg = $result['status_msg'];
|
46 |
+
|
47 |
+
$classes_array = array();
|
48 |
+
$classes_array[] = $passed ? 'wds-check-success' : 'wds-check-warning';
|
49 |
+
$classes_array[] = $ignored ? 'wds-check-invalid disabled' : '';
|
50 |
+
$classes = implode( ' ', $classes_array );
|
51 |
+
?>
|
52 |
+
<div id="wds-check-<?php echo esc_attr( $check_id ); ?>"
|
53 |
+
class="wds-check-item wds-accordion-section <?php echo esc_attr( $classes ); ?>">
|
54 |
+
<div class="wds-accordion-handle">
|
55 |
+
<div class="wds-accordion-handle-part">
|
56 |
+
<?php echo wp_kses_post( $status_msg ); ?>
|
57 |
</div>
|
58 |
+
<?php if ( $ignored ) : ?>
|
59 |
+
<div class="wds-unignore-container wds-accordion-handle-part">
|
60 |
+
<button type="button"
|
61 |
+
id="wds-unignore-check-<?php echo esc_attr( $check_id ); ?>"
|
62 |
+
class="wds-unignore wds-button-with-loader wds-button-with-left-loader wds-disabled-during-request button button-small button-dark-o"
|
63 |
+
data-check_id="<?php echo esc_attr( $check_id ); ?>">
|
64 |
+
<?php esc_html_e( 'Restore', 'wds' ); ?>
|
65 |
+
</button>
|
66 |
</div>
|
67 |
+
<?php endif; ?>
|
68 |
+
</div>
|
69 |
+
<div class="wds-accordion-content">
|
70 |
+
<?php if ( $recommendation ) : ?>
|
71 |
+
<div class="wds-recommendation">
|
72 |
+
<div class="wds-small-text"><strong><?php esc_html_e( 'Recommendation', 'wds' ); ?></strong>
|
73 |
+
</div>
|
74 |
+
<p class="wds-small-text"><?php echo wp_kses_post( $recommendation ); ?></p>
|
75 |
</div>
|
76 |
+
<?php endif; ?>
|
77 |
+
|
78 |
+
<?php if ( $more_info ) : ?>
|
79 |
+
<div class="wds-more-info">
|
80 |
+
<div class="wds-small-text"><strong><?php esc_html_e( 'More Info', 'wds' ); ?></strong>
|
81 |
+
</div>
|
82 |
+
<p class="wds-small-text"><?php echo wp_kses_post( $more_info ); ?></p>
|
83 |
+
</div>
|
84 |
+
<?php endif; ?>
|
85 |
+
|
86 |
+
<?php if ( ! $ignored ) : ?>
|
87 |
+
<div class="wds-ignore-container">
|
88 |
+
<button type="button"
|
89 |
+
id="wds-ignore-check-<?php echo esc_attr( $check_id ); ?>"
|
90 |
+
class="wds-ignore wds-button-with-loader wds-button-with-right-loader wds-disabled-during-request button button-small button-dark-o"
|
91 |
+
data-check_id="<?php echo esc_attr( $check_id ); ?>">
|
92 |
+
<?php esc_html_e( 'Ignore', 'wds' ); ?>
|
93 |
+
</button>
|
94 |
+
</div>
|
95 |
+
<?php endif; ?>
|
96 |
+
</div>
|
97 |
</div>
|
98 |
+
<?php endforeach; ?>
|
99 |
+
<div class="cf"></div>
|
100 |
+
</div>
|
101 |
</div>
|
102 |
</div>
|
includes/admin/templates/metabox/metabox-dummy-preview.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<div class="wds-metabox-preview">
|
2 |
+
<label class="wds-label"><?php esc_html_e( 'Google Preview' ); ?></label>
|
3 |
+
|
4 |
+
<?php
|
5 |
+
if ( apply_filters( 'wds-metabox-visible_parts-preview_area', true ) ) {
|
6 |
+
$this->_render( 'onpage/onpage-preview' );
|
7 |
+
}
|
8 |
+
?>
|
9 |
+
</div>
|
includes/admin/templates/metabox/metabox-main.php
CHANGED
@@ -34,7 +34,7 @@ if ( ! Smartcrawl_Settings::get_setting( 'analysis-readability' ) ) {
|
|
34 |
}
|
35 |
?>
|
36 |
<div class="wpmud wds-metabox">
|
37 |
-
|
38 |
<?php wp_nonce_field( 'wds-metabox-nonce', '_wds_nonce' ); ?>
|
39 |
<?php
|
40 |
$this->_render( 'metabox/horizontal-tab-nav', array( 'tabs' => $tabs ) );
|
@@ -83,6 +83,7 @@ if ( ! Smartcrawl_Settings::get_setting( 'analysis-readability' ) ) {
|
|
83 |
'tab_id' => 'wds_advanced',
|
84 |
'content_template' => 'metabox/metabox-tab-advanced',
|
85 |
'content_args' => array(
|
|
|
86 |
'robots_noindex_value' => $robots_noindex_value,
|
87 |
'robots_nofollow_value' => $robots_nofollow_value,
|
88 |
'robots_index_value' => $robots_index_value,
|
34 |
}
|
35 |
?>
|
36 |
<div class="wpmud wds-metabox">
|
37 |
+
<div id="container" class="wds-horizontal-tabs">
|
38 |
<?php wp_nonce_field( 'wds-metabox-nonce', '_wds_nonce' ); ?>
|
39 |
<?php
|
40 |
$this->_render( 'metabox/horizontal-tab-nav', array( 'tabs' => $tabs ) );
|
83 |
'tab_id' => 'wds_advanced',
|
84 |
'content_template' => 'metabox/metabox-tab-advanced',
|
85 |
'content_args' => array(
|
86 |
+
'post' => $post,
|
87 |
'robots_noindex_value' => $robots_noindex_value,
|
88 |
'robots_nofollow_value' => $robots_nofollow_value,
|
89 |
'robots_index_value' => $robots_index_value,
|
includes/admin/templates/metabox/metabox-meta-edit-form.php
CHANGED
@@ -1,3 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<div class="wds-toggleable inactive wds-edit-meta-toggleable">
|
2 |
<label>
|
3 |
<a class="button button-dark button-small"><?php esc_html_e( 'Edit Meta', 'wds' ); ?></a>
|
@@ -6,17 +14,6 @@
|
|
6 |
|
7 |
<div class="wds-toggleable-inside wds-toggleable-inside-box">
|
8 |
<div class="wds-table-fields wds-table-fields-stacked">
|
9 |
-
<?php
|
10 |
-
$title_placeholder = smartcrawl_get_seo_title();
|
11 |
-
if ( ! $title_placeholder ) {
|
12 |
-
$title_placeholder = '';
|
13 |
-
}
|
14 |
-
|
15 |
-
$desc_placeholder = smartcrawl_get_seo_desc();
|
16 |
-
if ( ! $desc_placeholder ) {
|
17 |
-
$desc_placeholder = '';
|
18 |
-
}
|
19 |
-
?>
|
20 |
|
21 |
<?php if ( apply_filters( 'wds-metabox-visible_parts-title_area', true ) ) : ?>
|
22 |
<div class="label">
|
@@ -28,9 +25,8 @@
|
|
28 |
<div class="fields">
|
29 |
<input type='text'
|
30 |
id='wds_title'
|
31 |
-
placeholder='<?php echo esc_html( $title_placeholder ); ?>'
|
32 |
name='wds_title'
|
33 |
-
value='<?php echo esc_html( smartcrawl_get_value( 'title' ) ); ?>'
|
34 |
class='wds wds-meta-field'/>
|
35 |
</div>
|
36 |
<?php endif; ?>
|
@@ -45,9 +41,8 @@
|
|
45 |
<div class="fields">
|
46 |
<textarea rows='2'
|
47 |
name='wds_metadesc'
|
48 |
-
placeholder='<?php echo esc_html( $desc_placeholder ); ?>'
|
49 |
id='wds_metadesc'
|
50 |
-
class='wds wds-meta-field'><?php echo esc_html( smartcrawl_get_value( 'metadesc' ) ); ?></textarea>
|
51 |
</div>
|
52 |
<?php endif; ?>
|
53 |
|
@@ -62,7 +57,7 @@
|
|
62 |
<input type='text'
|
63 |
id='wds_keywords'
|
64 |
name='wds_keywords'
|
65 |
-
value='<?php echo esc_html( smartcrawl_get_value( 'keywords' ) ); ?>'
|
66 |
class='wds'/>
|
67 |
</div>
|
68 |
|
@@ -77,7 +72,7 @@
|
|
77 |
<input type='text'
|
78 |
id='wds_news_keywords'
|
79 |
name='wds_news_keywords'
|
80 |
-
value='<?php echo esc_attr( smartcrawl_get_value( 'news_keywords' ) ); ?>'
|
81 |
class='wds'/>
|
82 |
</div>
|
83 |
|
@@ -85,7 +80,7 @@
|
|
85 |
<?php
|
86 |
$this->_render( 'toggle-item', array(
|
87 |
'field_name' => 'wds_tags_to_keywords',
|
88 |
-
'checked' => smartcrawl_get_value( 'tags_to_keywords' ) ? 'checked="checked"' : '',
|
89 |
'item_label' => esc_html__( 'Tags As Keywords' ),
|
90 |
'item_description' => esc_html__( 'If you enable using tags, post tags will be merged in with any other keywords you enter in the text box.' ),
|
91 |
) );
|
1 |
+
<?php
|
2 |
+
$post = empty( $post ) ? null : $post;
|
3 |
+
if ( $post ) {
|
4 |
+
$post_id = $post->ID;
|
5 |
+
} else {
|
6 |
+
return;
|
7 |
+
}
|
8 |
+
?>
|
9 |
<div class="wds-toggleable inactive wds-edit-meta-toggleable">
|
10 |
<label>
|
11 |
<a class="button button-dark button-small"><?php esc_html_e( 'Edit Meta', 'wds' ); ?></a>
|
14 |
|
15 |
<div class="wds-toggleable-inside wds-toggleable-inside-box">
|
16 |
<div class="wds-table-fields wds-table-fields-stacked">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
|
18 |
<?php if ( apply_filters( 'wds-metabox-visible_parts-title_area', true ) ) : ?>
|
19 |
<div class="label">
|
25 |
<div class="fields">
|
26 |
<input type='text'
|
27 |
id='wds_title'
|
|
|
28 |
name='wds_title'
|
29 |
+
value='<?php echo esc_html( smartcrawl_get_value( 'title', $post_id ) ); ?>'
|
30 |
class='wds wds-meta-field'/>
|
31 |
</div>
|
32 |
<?php endif; ?>
|
41 |
<div class="fields">
|
42 |
<textarea rows='2'
|
43 |
name='wds_metadesc'
|
|
|
44 |
id='wds_metadesc'
|
45 |
+
class='wds wds-meta-field'><?php echo esc_html( smartcrawl_get_value( 'metadesc', $post_id ) ); ?></textarea>
|
46 |
</div>
|
47 |
<?php endif; ?>
|
48 |
|
57 |
<input type='text'
|
58 |
id='wds_keywords'
|
59 |
name='wds_keywords'
|
60 |
+
value='<?php echo esc_html( smartcrawl_get_value( 'keywords', $post_id ) ); ?>'
|
61 |
class='wds'/>
|
62 |
</div>
|
63 |
|
72 |
<input type='text'
|
73 |
id='wds_news_keywords'
|
74 |
name='wds_news_keywords'
|
75 |
+
value='<?php echo esc_attr( smartcrawl_get_value( 'news_keywords', $post_id ) ); ?>'
|
76 |
class='wds'/>
|
77 |
</div>
|
78 |
|
80 |
<?php
|
81 |
$this->_render( 'toggle-item', array(
|
82 |
'field_name' => 'wds_tags_to_keywords',
|
83 |
+
'checked' => smartcrawl_get_value( 'tags_to_keywords', $post_id ) ? 'checked="checked"' : '',
|
84 |
'item_label' => esc_html__( 'Tags As Keywords' ),
|
85 |
'item_description' => esc_html__( 'If you enable using tags, post tags will be merged in with any other keywords you enter in the text box.' ),
|
86 |
) );
|
includes/admin/templates/metabox/metabox-preview.php
CHANGED
@@ -6,53 +6,23 @@
|
|
6 |
*/
|
7 |
|
8 |
$post = empty( $post ) ? null : $post;
|
9 |
-
|
10 |
-
|
11 |
-
$date = $post ? date( 'M j, Y', strtotime( $post->post_date ) ) : date( 'M j, Y' );
|
12 |
-
// Title.
|
13 |
-
$title = empty( $title ) ? smartcrawl_get_value( 'title' ) : $title;
|
14 |
-
if ( empty( $title ) && $post ) {
|
15 |
-
$title = $post->post_title;
|
16 |
-
}
|
17 |
-
if ( empty( $title ) ) {
|
18 |
-
$title = esc_html__( 'Dummy Title', 'wds' );
|
19 |
-
}
|
20 |
-
if ( is_object( $post ) ) {
|
21 |
-
$title = smartcrawl_replace_vars( $title, (array) $post );
|
22 |
}
|
23 |
|
24 |
-
|
25 |
-
$
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
}
|
32 |
-
if ( empty( $description ) ) {
|
33 |
-
$description = __( 'Dummy description', 'wds' );
|
34 |
-
}
|
35 |
-
if ( is_object( $post ) ) {
|
36 |
-
$description = smartcrawl_replace_vars( $description, (array) $post );
|
37 |
-
}
|
38 |
-
|
39 |
-
// Slug.
|
40 |
-
$slug = ! empty( $post->post_name ) ? $post->post_name : sanitize_title( $title );
|
41 |
?>
|
42 |
<div class="wds-metabox-preview">
|
43 |
<label class="wds-label"><?php esc_html_e( 'Google Preview' ); ?></label>
|
44 |
|
45 |
<?php
|
46 |
if ( apply_filters( 'wds-metabox-visible_parts-preview_area', true ) ) {
|
47 |
-
$link = sprintf(
|
48 |
-
'%s/%s/',
|
49 |
-
str_replace( 'http://', '', get_bloginfo( 'url' ) ),
|
50 |
-
$slug
|
51 |
-
);
|
52 |
-
if ( ! empty( $post ) && is_object( $post ) && ! empty( $post->ID ) ) {
|
53 |
-
$link = get_permalink( $post->ID );
|
54 |
-
}
|
55 |
-
|
56 |
$this->_render( 'onpage/onpage-preview', array(
|
57 |
'link' => esc_url( $link ),
|
58 |
'title' => esc_html( $title ),
|
6 |
*/
|
7 |
|
8 |
$post = empty( $post ) ? null : $post;
|
9 |
+
if ( ! $post ) {
|
10 |
+
return;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
}
|
12 |
|
13 |
+
$post_parent = wp_is_post_revision( $post->ID );
|
14 |
+
$link = empty( $post_parent ) ? get_permalink( $post->ID ) : get_permalink( $post_parent );
|
15 |
+
$resolver = Smartcrawl_Endpoint_Resolver::resolve();
|
16 |
+
$resolver->simulate_post( $post->ID );
|
17 |
+
$title = Smartcrawl_OnPage::get()->get_title();
|
18 |
+
$description = Smartcrawl_OnPage::get()->get_description();
|
19 |
+
$resolver->stop_simulation();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
?>
|
21 |
<div class="wds-metabox-preview">
|
22 |
<label class="wds-label"><?php esc_html_e( 'Google Preview' ); ?></label>
|
23 |
|
24 |
<?php
|
25 |
if ( apply_filters( 'wds-metabox-visible_parts-preview_area', true ) ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
$this->_render( 'onpage/onpage-preview', array(
|
27 |
'link' => esc_url( $link ),
|
28 |
'title' => esc_html( $title ),
|
includes/admin/templates/metabox/metabox-seo-analysis-container.php
CHANGED
@@ -1,6 +1,11 @@
|
|
1 |
<?php
|
2 |
$post = empty( $post ) ? null : $post;
|
3 |
$refresh_button_disabled = 'auto-draft' === get_post_status() ? 'disabled' : '';
|
|
|
|
|
|
|
|
|
|
|
4 |
?>
|
5 |
|
6 |
<div class="wds-seo-analysis-container">
|
@@ -8,8 +13,8 @@ $refresh_button_disabled = 'auto-draft' === get_post_status() ? 'disabled' : '';
|
|
8 |
<label class="wds-label"><?php esc_html_e( 'SEO Analysis', 'wds' ); ?></label>
|
9 |
|
10 |
<button <?php esc_attr( $refresh_button_disabled ); ?>
|
11 |
-
|
12 |
-
|
13 |
<span><?php esc_html_e( 'Refresh', 'wds' ); ?></span>
|
14 |
</button>
|
15 |
</div>
|
@@ -33,7 +38,7 @@ $refresh_button_disabled = 'auto-draft' === get_post_status() ? 'disabled' : '';
|
|
33 |
<input type='text'
|
34 |
id='wds_focus'
|
35 |
name='wds_focus'
|
36 |
-
value='<?php echo esc_html( smartcrawl_get_value( 'focus-keywords' ) ); ?>'
|
37 |
class='wds wds-disabled-during-request'
|
38 |
placeholder="<?php esc_html_e( 'E.g. broken iphone screen', 'wds' ); ?>"/>
|
39 |
</div>
|
1 |
<?php
|
2 |
$post = empty( $post ) ? null : $post;
|
3 |
$refresh_button_disabled = 'auto-draft' === get_post_status() ? 'disabled' : '';
|
4 |
+
if ( $post ) {
|
5 |
+
$post_id = $post->ID;
|
6 |
+
} else {
|
7 |
+
return;
|
8 |
+
}
|
9 |
?>
|
10 |
|
11 |
<div class="wds-seo-analysis-container">
|
13 |
<label class="wds-label"><?php esc_html_e( 'SEO Analysis', 'wds' ); ?></label>
|
14 |
|
15 |
<button <?php esc_attr( $refresh_button_disabled ); ?>
|
16 |
+
class="button button-small button-dark button-dark-o wds-refresh-analysis wds-analysis-seo wds-disabled-during-request"
|
17 |
+
type="button">
|
18 |
<span><?php esc_html_e( 'Refresh', 'wds' ); ?></span>
|
19 |
</button>
|
20 |
</div>
|
38 |
<input type='text'
|
39 |
id='wds_focus'
|
40 |
name='wds_focus'
|
41 |
+
value='<?php echo esc_html( smartcrawl_get_value( 'focus-keywords', $post_id ) ); ?>'
|
42 |
class='wds wds-disabled-during-request'
|
43 |
placeholder="<?php esc_html_e( 'E.g. broken iphone screen', 'wds' ); ?>"/>
|
44 |
</div>
|
includes/admin/templates/metabox/metabox-tab-advanced.php
CHANGED
@@ -8,6 +8,12 @@ $advanced_options = empty( $advanced_options ) ? array() : $advanced_options;
|
|
8 |
$sitemap_priority_options = empty( $sitemap_priority_options ) ? array() : $sitemap_priority_options;
|
9 |
$post_type_noindexed = empty( $post_type_noindexed ) ? false : true;
|
10 |
$post_type_nofollowed = empty( $post_type_nofollowed ) ? false : true;
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
?>
|
12 |
|
13 |
<div class="wds-metabox-section wds-advanced-metabox-section wds-form">
|
@@ -94,9 +100,10 @@ $post_type_nofollowed = empty( $post_type_nofollowed ) ? false : true;
|
|
94 |
</div>
|
95 |
<div class="fields">
|
96 |
<input type='text' id='wds_canonical' name='wds_canonical'
|
97 |
-
value='<?php echo esc_attr( smartcrawl_get_value( 'canonical' ) ); ?>'
|
|
|
98 |
<span
|
99 |
-
|
100 |
</div>
|
101 |
</div>
|
102 |
<?php endif; ?>
|
@@ -111,9 +118,9 @@ $post_type_nofollowed = empty( $post_type_nofollowed ) ? false : true;
|
|
111 |
</div>
|
112 |
<div class="fields">
|
113 |
<input type='text' id='wds_redirect' name='wds_redirect'
|
114 |
-
value='<?php echo esc_attr( smartcrawl_get_value( 'redirect' ) ); ?>' class='wds'/>
|
115 |
<span
|
116 |
-
|
117 |
</div>
|
118 |
</div>
|
119 |
<?php endif; ?>
|
@@ -130,7 +137,7 @@ $post_type_nofollowed = empty( $post_type_nofollowed ) ? false : true;
|
|
130 |
class="select-container"
|
131 |
style="width: 100%">
|
132 |
|
133 |
-
<?php $priority_value = smartcrawl_get_value( 'sitemap-priority' ); ?>
|
134 |
|
135 |
<?php foreach ( $sitemap_priority_options as $key => $label ) : ?>
|
136 |
<option value='<?php echo esc_attr( $key ); ?>' <?php selected( $key, $priority_value ); ?>>
|
@@ -156,7 +163,7 @@ $post_type_nofollowed = empty( $post_type_nofollowed ) ? false : true;
|
|
156 |
$this->_render( 'toggle-item', array(
|
157 |
'inverted' => true,
|
158 |
'field_name' => 'wds_autolinks-exclude',
|
159 |
-
'checked' => smartcrawl_get_value( 'autolinks-exclude' ) ? 'checked="checked"' : '',
|
160 |
'item_label' => esc_html__( 'Enable automatic linking for this post', 'wds' ),
|
161 |
) );
|
162 |
?>
|
8 |
$sitemap_priority_options = empty( $sitemap_priority_options ) ? array() : $sitemap_priority_options;
|
9 |
$post_type_noindexed = empty( $post_type_noindexed ) ? false : true;
|
10 |
$post_type_nofollowed = empty( $post_type_nofollowed ) ? false : true;
|
11 |
+
$post = empty( $post ) ? null : $post;
|
12 |
+
if ( $post ) {
|
13 |
+
$post_id = $post->ID;
|
14 |
+
} else {
|
15 |
+
return;
|
16 |
+
}
|
17 |
?>
|
18 |
|
19 |
<div class="wds-metabox-section wds-advanced-metabox-section wds-form">
|
100 |
</div>
|
101 |
<div class="fields">
|
102 |
<input type='text' id='wds_canonical' name='wds_canonical'
|
103 |
+
value='<?php echo esc_attr( smartcrawl_get_value( 'canonical', $post_id ) ); ?>'
|
104 |
+
class='wds'/>
|
105 |
<span
|
106 |
+
class="wds-field-legend"><?php esc_html_e( 'Enter the full canonical URL including http:// or https://', 'wds' ); ?></span>
|
107 |
</div>
|
108 |
</div>
|
109 |
<?php endif; ?>
|
118 |
</div>
|
119 |
<div class="fields">
|
120 |
<input type='text' id='wds_redirect' name='wds_redirect'
|
121 |
+
value='<?php echo esc_attr( smartcrawl_get_value( 'redirect', $post_id ) ); ?>' class='wds'/>
|
122 |
<span
|
123 |
+
class="wds-field-legend"><?php esc_html_e( 'Enter the URL to send traffic to including http:// or https://', 'wds' ); ?></span>
|
124 |
</div>
|
125 |
</div>
|
126 |
<?php endif; ?>
|
137 |
class="select-container"
|
138 |
style="width: 100%">
|
139 |
|
140 |
+
<?php $priority_value = smartcrawl_get_value( 'sitemap-priority', $post_id ); ?>
|
141 |
|
142 |
<?php foreach ( $sitemap_priority_options as $key => $label ) : ?>
|
143 |
<option value='<?php echo esc_attr( $key ); ?>' <?php selected( $key, $priority_value ); ?>>
|
163 |
$this->_render( 'toggle-item', array(
|
164 |
'inverted' => true,
|
165 |
'field_name' => 'wds_autolinks-exclude',
|
166 |
+
'checked' => smartcrawl_get_value( 'autolinks-exclude', $post_id ) ? 'checked="checked"' : '',
|
167 |
'item_label' => esc_html__( 'Enable automatic linking for this post', 'wds' ),
|
168 |
) );
|
169 |
?>
|
includes/admin/templates/metabox/metabox-tab-seo.php
CHANGED
@@ -5,12 +5,12 @@ $post = empty( $post ) ? null : $post;
|
|
5 |
<div class="wds-form">
|
6 |
<div class="wds-metabox-section">
|
7 |
<?php
|
8 |
-
$this->_render( 'metabox/metabox-preview'
|
9 |
-
'post' => $post,
|
10 |
-
) );
|
11 |
?>
|
12 |
|
13 |
-
<?php $this->_render( 'metabox/metabox-meta-edit-form'
|
|
|
|
|
14 |
</div>
|
15 |
|
16 |
<?php if ( Smartcrawl_Settings::get_setting( 'analysis-seo' ) ) { ?>
|
5 |
<div class="wds-form">
|
6 |
<div class="wds-metabox-section">
|
7 |
<?php
|
8 |
+
$this->_render( 'metabox/metabox-dummy-preview' );
|
|
|
|
|
9 |
?>
|
10 |
|
11 |
+
<?php $this->_render( 'metabox/metabox-meta-edit-form', array(
|
12 |
+
'post' => $post,
|
13 |
+
) ); ?>
|
14 |
</div>
|
15 |
|
16 |
<?php if ( Smartcrawl_Settings::get_setting( 'analysis-seo' ) ) { ?>
|
includes/admin/templates/metabox/metabox-tab-social.php
CHANGED
@@ -6,11 +6,13 @@ $twitter_setting_enabled = empty( $twitter_setting_enabled ) ? false : $twitter_
|
|
6 |
$twitter_post_type_enabled = empty( $twitter_post_type_enabled ) ? false : $twitter_post_type_enabled;
|
7 |
$onpage_url = Smartcrawl_Settings_Admin::admin_url( Smartcrawl_Settings::TAB_ONPAGE );
|
8 |
|
9 |
-
if (
|
|
|
|
|
10 |
return;
|
11 |
}
|
12 |
|
13 |
-
$og = smartcrawl_get_value( 'opengraph' );
|
14 |
if ( ! is_array( $og ) ) {
|
15 |
$og = array();
|
16 |
}
|
@@ -22,10 +24,14 @@ $og = wp_parse_args( $og, array(
|
|
22 |
'disabled' => false,
|
23 |
) );
|
24 |
|
25 |
-
$
|
|
|
|
|
|
|
|
|
26 |
$og_meta_disabled = (bool) smartcrawl_get_array_value( $og, 'disabled' );
|
27 |
|
28 |
-
$twitter = smartcrawl_get_value( 'twitter' );
|
29 |
if ( ! is_array( $twitter ) ) {
|
30 |
$twitter = array();
|
31 |
}
|
@@ -40,8 +46,6 @@ $twitter = wp_parse_args( $twitter, array(
|
|
40 |
$twitter_printer = Smartcrawl_Twitter_Printer::get();
|
41 |
$twitter_meta_disabled = smartcrawl_get_array_value( $twitter, 'disabled' );
|
42 |
|
43 |
-
$resolver = Smartcrawl_Endpoint_Resolver::resolve();
|
44 |
-
$resolver->simulate_post( $post->ID );
|
45 |
?>
|
46 |
<div class="wds-metabox-section wds-social-settings-metabox-section wds-form">
|
47 |
<p>
|
@@ -65,9 +69,9 @@ $resolver->simulate_post( $post->ID );
|
|
65 |
'field_name' => 'wds-opengraph',
|
66 |
'disabled' => $og_meta_disabled,
|
67 |
'current_title' => $og['title'],
|
68 |
-
'title_placeholder' => $
|
69 |
'current_description' => $og['description'],
|
70 |
-
'description_placeholder' => $
|
71 |
'images' => $og['images'],
|
72 |
'single_image' => false,
|
73 |
) );
|
6 |
$twitter_post_type_enabled = empty( $twitter_post_type_enabled ) ? false : $twitter_post_type_enabled;
|
7 |
$onpage_url = Smartcrawl_Settings_Admin::admin_url( Smartcrawl_Settings::TAB_ONPAGE );
|
8 |
|
9 |
+
if ( $post ) {
|
10 |
+
$post_id = $post->ID;
|
11 |
+
} else {
|
12 |
return;
|
13 |
}
|
14 |
|
15 |
+
$og = smartcrawl_get_value( 'opengraph', $post_id );
|
16 |
if ( ! is_array( $og ) ) {
|
17 |
$og = array();
|
18 |
}
|
24 |
'disabled' => false,
|
25 |
) );
|
26 |
|
27 |
+
$resolver = Smartcrawl_Endpoint_Resolver::resolve();
|
28 |
+
$resolver->simulate_post( $post );
|
29 |
+
$og_helper = new Smartcrawl_OpenGraph_Value_Helper();
|
30 |
+
$title_placeholder = $og_helper->get_title();
|
31 |
+
$description_placeholder = $og_helper->get_description();
|
32 |
$og_meta_disabled = (bool) smartcrawl_get_array_value( $og, 'disabled' );
|
33 |
|
34 |
+
$twitter = smartcrawl_get_value( 'twitter', $post_id );
|
35 |
if ( ! is_array( $twitter ) ) {
|
36 |
$twitter = array();
|
37 |
}
|
46 |
$twitter_printer = Smartcrawl_Twitter_Printer::get();
|
47 |
$twitter_meta_disabled = smartcrawl_get_array_value( $twitter, 'disabled' );
|
48 |
|
|
|
|
|
49 |
?>
|
50 |
<div class="wds-metabox-section wds-social-settings-metabox-section wds-form">
|
51 |
<p>
|
69 |
'field_name' => 'wds-opengraph',
|
70 |
'disabled' => $og_meta_disabled,
|
71 |
'current_title' => $og['title'],
|
72 |
+
'title_placeholder' => $title_placeholder,
|
73 |
'current_description' => $og['description'],
|
74 |
+
'description_placeholder' => $description_placeholder,
|
75 |
'images' => $og['images'],
|
76 |
'single_image' => false,
|
77 |
) );
|
includes/admin/templates/onpage/onpage-preview.php
CHANGED
@@ -1,15 +1,15 @@
|
|
1 |
<?php
|
2 |
$smartcrawl_options = Smartcrawl_Settings::get_options();
|
3 |
$link = ! isset( $link ) ? home_url() : $link;
|
4 |
-
$title = ! isset( $title ) ?
|
5 |
-
$description = ! isset( $description ) ?
|
6 |
?>
|
7 |
<div class="wds-preview-container">
|
8 |
<div class="wds-preview">
|
9 |
<div class="wds-preview-title">
|
10 |
<h3>
|
11 |
<a href="<?php echo esc_url( $link ); ?>">
|
12 |
-
<?php echo esc_html( $title ); ?>
|
13 |
</a>
|
14 |
</h3>
|
15 |
</div>
|
@@ -19,7 +19,7 @@ $description = ! isset( $description ) ? smartcrawl_replace_vars( $smartcrawl_op
|
|
19 |
</a>
|
20 |
</div>
|
21 |
<div class="wds-preview-meta">
|
22 |
-
<?php echo esc_html( $description ); ?>
|
23 |
</div>
|
24 |
</div>
|
25 |
<p class="wds-preview-description"><?php esc_html_e( 'A preview of how your title and meta will appear in Google Search.', 'wds' ); ?></p>
|
1 |
<?php
|
2 |
$smartcrawl_options = Smartcrawl_Settings::get_options();
|
3 |
$link = ! isset( $link ) ? home_url() : $link;
|
4 |
+
$title = ! isset( $title ) ? get_bloginfo( 'name' ) : $title;
|
5 |
+
$description = ! isset( $description ) ? get_bloginfo( 'description' ) : $description;
|
6 |
?>
|
7 |
<div class="wds-preview-container">
|
8 |
<div class="wds-preview">
|
9 |
<div class="wds-preview-title">
|
10 |
<h3>
|
11 |
<a href="<?php echo esc_url( $link ); ?>">
|
12 |
+
<?php echo esc_html( smartcrawl_truncate_meta_title( $title ) ); ?>
|
13 |
</a>
|
14 |
</h3>
|
15 |
</div>
|
19 |
</a>
|
20 |
</div>
|
21 |
<div class="wds-preview-meta">
|
22 |
+
<?php echo esc_html( smartcrawl_truncate_meta_description( $description ) ); ?>
|
23 |
</div>
|
24 |
</div>
|
25 |
<p class="wds-preview-description"><?php esc_html_e( 'A preview of how your title and meta will appear in Google Search.', 'wds' ); ?></p>
|
includes/admin/templates/onpage/onpage-section-homepage.php
CHANGED
@@ -6,16 +6,7 @@ $meta_robots_main_blog_archive = empty( $meta_robots_main_blog_archive ) ? '' :
|
|
6 |
$option_name = empty( $_view['option_name'] ) ? '' : '';
|
7 |
?>
|
8 |
|
9 |
-
<?php
|
10 |
-
$this->_render(
|
11 |
-
'onpage/onpage-preview',
|
12 |
-
array(
|
13 |
-
'link' => home_url(),
|
14 |
-
'title' => smartcrawl_replace_vars( $homepage_title, array() ),
|
15 |
-
'description' => smartcrawl_replace_vars( $homepage_description, array() ),
|
16 |
-
)
|
17 |
-
);
|
18 |
-
?>
|
19 |
|
20 |
<?php if ( $show_homepage_options ) : ?>
|
21 |
|
6 |
$option_name = empty( $_view['option_name'] ) ? '' : '';
|
7 |
?>
|
8 |
|
9 |
+
<?php $this->_render('onpage/onpage-preview'); ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
|
11 |
<?php if ( $show_homepage_options ) : ?>
|
12 |
|
includes/admin/templates/onpage/onpage-settings.php
CHANGED
@@ -61,11 +61,9 @@
|
|
61 |
'tab_sections' => array(
|
62 |
array(
|
63 |
'section_description' => __( 'Customize your homepage title, description and meta.', 'wds' ),
|
64 |
-
'section_type' => 'homepage',
|
65 |
'section_template' => 'onpage/onpage-section-homepage',
|
66 |
'section_args' => array(
|
67 |
-
'homepage_title' => $homepage_title,
|
68 |
-
'homepage_description' => $homepage_description,
|
69 |
'show_homepage_options' => $show_homepage_options,
|
70 |
'meta_robots_main_blog_archive' => $meta_robots_main_blog_archive,
|
71 |
),
|
61 |
'tab_sections' => array(
|
62 |
array(
|
63 |
'section_description' => __( 'Customize your homepage title, description and meta.', 'wds' ),
|
64 |
+
'section_type' => $show_homepage_options ? 'homepage' : 'static-homepage',
|
65 |
'section_template' => 'onpage/onpage-section-homepage',
|
66 |
'section_args' => array(
|
|
|
|
|
67 |
'show_homepage_options' => $show_homepage_options,
|
68 |
'meta_robots_main_blog_archive' => $meta_robots_main_blog_archive,
|
69 |
),
|
includes/admin/templates/progress-bar.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
$progress = empty( $progress ) ? 0 : $progress;
|
3 |
?>
|
4 |
|
5 |
-
<div class="wds-progress">
|
6 |
<span class="wds-progress-bar-current-percent"><?php echo (int) $progress; ?>%</span>
|
7 |
<div class="wds-progress-bar">
|
8 |
<div class="wds-progress-bar-inside" style="width:<?php echo (int) $progress; ?>%;"></div>
|
2 |
$progress = empty( $progress ) ? 0 : $progress;
|
3 |
?>
|
4 |
|
5 |
+
<div class="wds-progress" data-progress="<?php echo (int) $progress; ?>">
|
6 |
<span class="wds-progress-bar-current-percent"><?php echo (int) $progress; ?>%</span>
|
7 |
<div class="wds-progress-bar">
|
8 |
<div class="wds-progress-bar-inside" style="width:<?php echo (int) $progress; ?>%;"></div>
|
includes/admin/templates/settings/import-status-modal.php
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<dialog class="wds-modal wds-import-status-dialog"
|
2 |
+
id="wds-import-status"
|
3 |
+
title="<?php esc_attr_e( 'Import', 'wds' ); ?>">
|
4 |
+
|
5 |
+
<div class="wds-import-placeholder">
|
6 |
+
<?php $this->_render( 'settings/underscore-import-options' ); ?>
|
7 |
+
</div>
|
8 |
+
</dialog>
|
includes/admin/templates/settings/settings-section-import-export.php
CHANGED
@@ -64,3 +64,4 @@
|
|
64 |
</div>
|
65 |
</div>
|
66 |
</div>
|
|
64 |
</div>
|
65 |
</div>
|
66 |
</div>
|
67 |
+
<?php $this->_render( 'settings/import-status-modal' ); ?>
|
includes/admin/templates/settings/underscore-import-error.php
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<p><?php esc_html_e( "We have encountered an error while importing your data. You may retry the import or contact our support if the problem persists.", 'wds' ); ?></p>
|
2 |
+
{{ if(error) { }}
|
3 |
+
<div class="wds-notice wds-notice-error">
|
4 |
+
<p>{{- error }}</p>
|
5 |
+
</div>
|
6 |
+
{{ } }}
|
7 |
+
|
8 |
+
<div class="action wds-box-footer">
|
9 |
+
<button type="button" class="button button-dark button-dark-o wds-import-skip">
|
10 |
+
<?php esc_html_e( 'Cancel', 'wds' ); ?>
|
11 |
+
</button>
|
12 |
+
|
13 |
+
<button class="button wds-import-main-action wds-reattempt-import">
|
14 |
+
<?php esc_html_e( 'Try Again', 'wds' ); ?>
|
15 |
+
</button>
|
16 |
+
</div>
|
includes/admin/templates/settings/underscore-import-options.php
ADDED
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<div class="box-content modal">
|
2 |
+
<p><?php printf( esc_html__( "Choose what you'd like to import from %s.", 'wds' ), '{{- plugin_name }}' ); ?></p>
|
3 |
+
|
4 |
+
<div class="wds-separator-top wds-import-item">
|
5 |
+
<?php $this->_render( 'toggle-item', array(
|
6 |
+
'field_name' => 'import-options',
|
7 |
+
'checked' => 'checked',
|
8 |
+
'item_label' => esc_html__( 'Plugin Options', 'wds' ),
|
9 |
+
'item_description' => sprintf( esc_html__( 'Import %s settings that are relevant to SmartCrawl.', 'wds' ), '{{- plugin_name }}' ),
|
10 |
+
) ); ?>
|
11 |
+
</div>
|
12 |
+
|
13 |
+
<div class="wds-separator-top wds-import-item">
|
14 |
+
<?php
|
15 |
+
$this->_render( 'toggle-item', array(
|
16 |
+
'field_name' => 'import-term-meta',
|
17 |
+
'checked' => 'checked',
|
18 |
+
'item_label' => esc_html__( 'Term Meta', 'wds' ),
|
19 |
+
'item_description' => esc_html__( 'Import your title & meta settings for categories, tags and custom taxonomies.', 'wds' ),
|
20 |
+
) );
|
21 |
+
?>
|
22 |
+
</div>
|
23 |
+
|
24 |
+
<div class="wds-separator-top wds-import-item">
|
25 |
+
<?php
|
26 |
+
$this->_render( 'toggle-item', array(
|
27 |
+
'field_name' => 'import-post-meta',
|
28 |
+
'checked' => 'checked',
|
29 |
+
'attributes' => array( 'data-dependent' => 'keep-existing-post-meta' ),
|
30 |
+
'item_label' => esc_html__( 'Post Meta', 'wds' ),
|
31 |
+
'item_description' => esc_html__( 'Import your title & meta settings for posts and pages.', 'wds' ),
|
32 |
+
) );
|
33 |
+
?>
|
34 |
+
</div>
|
35 |
+
|
36 |
+
<div class="wds-advanced-import-options">
|
37 |
+
<span><?php esc_html_e( 'Advanced', 'wds' ); ?></span>
|
38 |
+
<div class="wds-advanced-import-options-inner">
|
39 |
+
<div class="wds-separator-top wds-import-item">
|
40 |
+
<?php
|
41 |
+
$this->_render( 'toggle-item', array(
|
42 |
+
'field_name' => 'keep-existing-post-meta',
|
43 |
+
'checked' => '',
|
44 |
+
'item_label' => esc_html__( 'Keep Existing Post Meta', 'wds' ),
|
45 |
+
'item_description' => esc_html__( 'If you have already set up SmartCrawl on some posts and pages then enable this option to keep those values from getting overwritten.', 'wds' ),
|
46 |
+
) );
|
47 |
+
?>
|
48 |
+
</div>
|
49 |
+
</div>
|
50 |
+
</div>
|
51 |
+
</div>
|
52 |
+
|
53 |
+
<div class="action wds-box-footer">
|
54 |
+
<button type="button" class="button wds-import-main-action wds-import-start">
|
55 |
+
<?php esc_html_e( 'Begin Import', 'wds' ); ?>
|
56 |
+
</button>
|
57 |
+
|
58 |
+
<span class="wds-box-footer-description" type="button">
|
59 |
+
<?php esc_html_e( 'Note: Importing can take a while if you have a large amount of content on your website.', 'wds' ); ?>
|
60 |
+
</span>
|
61 |
+
</div>
|
includes/admin/templates/settings/underscore-import-progress.php
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<p><?php printf(esc_html__( 'Importing your %s settings, please keep this window open …', 'wds' ), '{{- plugin_name }}'); ?></p>
|
2 |
+
<?php if ( is_multisite() ): ?>
|
3 |
+
<div class="wds-site-progress">
|
4 |
+
<label class="wds-label"><?php esc_html_e('Overall Progress', 'wds'); ?></label>
|
5 |
+
<?php $this->_render( 'progress-bar', array(
|
6 |
+
'progress' => 0,
|
7 |
+
) ); ?>
|
8 |
+
</div>
|
9 |
+
<?php endif; ?>
|
10 |
+
<div class="wds-post-progress">
|
11 |
+
<?php if ( is_multisite() ): ?>
|
12 |
+
<label class="wds-label"><?php esc_html_e('Current Subsite', 'wds'); ?></label>
|
13 |
+
<?php endif; ?>
|
14 |
+
<?php $this->_render( 'progress-bar', array(
|
15 |
+
'progress' => 0,
|
16 |
+
) ); ?>
|
17 |
+
</div>
|
includes/admin/templates/settings/underscore-import-success.php
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<p><?php esc_html_e( 'All done!', 'wds' ); ?></p>
|
2 |
+
<div class="wds-notice wds-notice-success">
|
3 |
+
<p>
|
4 |
+
<?php printf( esc_html__( 'Your %s settings have been imported successfully and are now active.', 'wds' ), '{{- plugin_name }}' ); ?>
|
5 |
+
{{ if(deactivation_url) { }}
|
6 |
+
<?php printf( esc_html__( 'We highly recommend you deactivate %s to avoid potential conflicts.', 'wds' ), '{{- plugin_name }}' ); ?>
|
7 |
+
{{ } }}
|
8 |
+
</p>
|
9 |
+
</div>
|
10 |
+
|
11 |
+
<div class="action wds-box-footer">
|
12 |
+
<button type="button" class="button button-dark button-dark-o wds-import-skip">
|
13 |
+
<?php esc_html_e( 'Close', 'wds' ); ?>
|
14 |
+
</button>
|
15 |
+
|
16 |
+
{{ if(deactivation_url) { }}
|
17 |
+
<a class="button wds-import-main-action" href="{{= deactivation_url }}">
|
18 |
+
<?php esc_html_e( 'Deactivate', 'wds' ); ?> {{- plugin_name }}
|
19 |
+
</a>
|
20 |
+
{{ } }}
|
21 |
+
</div>
|
includes/admin/templates/settings/underscore-progress-reset.php
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
<?php $this->_render( 'progress-bar', array(
|
2 |
+
'progress' => 0,
|
3 |
+
) );
|
includes/admin/templates/sitemap/sitemap-section-settings.php
CHANGED
@@ -30,8 +30,8 @@ $ignore_post_ids = empty( $ignore_post_ids ) ? '' : $ignore_post_ids;
|
|
30 |
<p>
|
31 |
<?php
|
32 |
printf(
|
33 |
-
esc_html__( 'Unable to write to sitemap file:
|
34 |
-
esc_html( smartcrawl_get_sitemap_path() )
|
35 |
);
|
36 |
?>
|
37 |
</p>
|
30 |
<p>
|
31 |
<?php
|
32 |
printf(
|
33 |
+
esc_html__( 'Unable to write to sitemap file: %s', 'wds' ),
|
34 |
+
sprintf( '<code>%s</code>', esc_html( smartcrawl_get_sitemap_path() ) )
|
35 |
);
|
36 |
?>
|
37 |
</p>
|
includes/admin/templates/sitemaps-dashboard-widget.php
DELETED
@@ -1,71 +0,0 @@
|
|
1 |
-
<div style='width:45%;float:left'>
|
2 |
-
<div>
|
3 |
-
<?php
|
4 |
-
printf(
|
5 |
-
esc_html__( 'Your sitemap contains %s.', 'wds' ),
|
6 |
-
sprintf(
|
7 |
-
'<a href="%1$s" target="_blank"><b>%2$d</b> %3$s</a>',
|
8 |
-
esc_url( $sitemap_url ),
|
9 |
-
(int) smartcrawl_get_array_value( $opts, 'items' ),
|
10 |
-
esc_html__( 'items' )
|
11 |
-
)
|
12 |
-
);
|
13 |
-
?>
|
14 |
-
</div>
|
15 |
-
<br/><?php echo esc_html( $datetime ); ?>
|
16 |
-
<p><a href='#update_sitemap' id='wds_update_now'><?php echo esc_html( $update_sitemap ); ?></a></p>
|
17 |
-
</div>
|
18 |
-
|
19 |
-
<div style='width:45%;float:right'>
|
20 |
-
<?php if ( $engines ) { ?>
|
21 |
-
<ul>
|
22 |
-
<?php
|
23 |
-
foreach ( $engines as $key => $engine ) {
|
24 |
-
$service = ucfirst( $key );
|
25 |
-
$edate = ! empty( $engine['time'] ) ? date( get_option( 'date_format' ), $engine['time'] ) : false;
|
26 |
-
$etime = ! empty( $engine['time'] ) ? date( get_option( 'time_format' ), $engine['time'] ) : false;
|
27 |
-
$edatetime = ( $edate && $etime ) ? sprintf( __( 'Last notified on %1$s, at %2$s.', 'wds' ), $date, $time ) : __( 'Not notified', 'wds' );
|
28 |
-
?>
|
29 |
-
<li><b><?php echo esc_html( $service ); ?>:</b> <?php echo esc_html( $edatetime ); ?></li>
|
30 |
-
<?php } ?>
|
31 |
-
|
32 |
-
</ul>
|
33 |
-
|
34 |
-
<?php } else { ?>
|
35 |
-
<div><?php esc_html_e( "Search engines haven't been recently updated.", 'wds' ); ?></div>
|
36 |
-
<?php } ?>
|
37 |
-
|
38 |
-
<p><a href='#update_search_engines' id='wds_update_engines'><?php echo esc_html( $update_engines ); ?></a></p>
|
39 |
-
</div>
|
40 |
-
<div style='clear:both'></div>
|
41 |
-
|
42 |
-
<script type="text/javascript">
|
43 |
-
;
|
44 |
-
(function ($) {
|
45 |
-
$(function () {
|
46 |
-
$("#wds_update_now").click(function () {
|
47 |
-
var me = $(this);
|
48 |
-
me.html("<?php echo esc_js( $working ); ?>");
|
49 |
-
|
50 |
-
$.post(ajaxurl, {"action": "wds_update_sitemap"}, function () {
|
51 |
-
me.html("<?php echo esc_js( $done_msg ); ?>");
|
52 |
-
window.location.reload();
|
53 |
-
});
|
54 |
-
|
55 |
-
return false;
|
56 |
-
});
|
57 |
-
|
58 |
-
$("#wds_update_engines").click(function () {
|
59 |
-
var me = $(this);
|
60 |
-
me.html("<?php echo esc_js( $working ); ?>");
|
61 |
-
|
62 |
-
$.post(ajaxurl, {"action": "wds_update_engines"}, function () {
|
63 |
-
me.html("<?php echo esc_js( $done_msg ); ?>");
|
64 |
-
window.location.reload();
|
65 |
-
});
|
66 |
-
|
67 |
-
return false;
|
68 |
-
});
|
69 |
-
});
|
70 |
-
})(jQuery);
|
71 |
-
</script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/admin/templates/social/social-section-twitter-cards.php
CHANGED
@@ -51,7 +51,7 @@ $options = empty( $options ) ? $_view['options'] : $options;
|
|
51 |
data-conditional-val="<?php echo esc_attr( Smartcrawl_Twitter_Printer::CARD_SUMMARY ); ?>">
|
52 |
<?php
|
53 |
$this->_render( 'social/social-twitter-embed', array(
|
54 |
-
'tweet_url' => 'https://twitter.com/
|
55 |
) );
|
56 |
?>
|
57 |
</div>
|
51 |
data-conditional-val="<?php echo esc_attr( Smartcrawl_Twitter_Printer::CARD_SUMMARY ); ?>">
|
52 |
<?php
|
53 |
$this->_render( 'social/social-twitter-embed', array(
|
54 |
+
'tweet_url' => 'https://twitter.com/WordPress/status/1046731890244374528',
|
55 |
) );
|
56 |
?>
|
57 |
</div>
|
includes/admin/templates/social/social-twitter-embed.php
CHANGED
@@ -19,7 +19,7 @@ if ( ! $tweet_url ) {
|
|
19 |
/**
|
20 |
* @var WP_Embed $wp_embed
|
21 |
*/
|
22 |
-
echo
|
23 |
?>
|
24 |
<?php endwhile; ?>
|
25 |
<?php wp_reset_postdata(); ?>
|
19 |
/**
|
20 |
* @var WP_Embed $wp_embed
|
21 |
*/
|
22 |
+
echo $wp_embed->autoembed( $tweet_url ); // phpcs:ignore -- The embed won't work if escaped
|
23 |
?>
|
24 |
<?php endwhile; ?>
|
25 |
<?php wp_reset_postdata(); ?>
|
includes/admin/templates/term-additions-form.php
CHANGED
@@ -1,3 +1,7 @@
|
|
|
|
|
|
|
|
|
|
1 |
<h2><?php esc_html_e( 'SmartCrawl Settings ', 'wds' ); ?></h2>
|
2 |
<table class="form-table">
|
3 |
|
@@ -25,7 +29,7 @@
|
|
25 |
$options = Smartcrawl_Settings::get_options();
|
26 |
?>
|
27 |
|
28 |
-
<?php if ( ! empty( $options['og-enable'] ) ) { ?>
|
29 |
<tr class="form-field">
|
30 |
<th scope="row" valign="top"><label for=""><?php esc_html_e( 'OpenGraph', 'wds' ); ?></label></th>
|
31 |
<td>
|
@@ -43,13 +47,9 @@
|
|
43 |
'disabled' => false,
|
44 |
) );
|
45 |
|
46 |
-
$
|
47 |
-
|
48 |
-
$
|
49 |
-
$default_title = ! empty( $default_title ) ? $default_title : $term->name;
|
50 |
-
|
51 |
-
$default_metadesc = $ogp->get_generic_og_tag_value( 'og-description', $taxonomy );
|
52 |
-
$default_metadesc = ! empty( $default_metadesc ) ? $default_metadesc : $term->name;
|
53 |
|
54 |
$og_meta_disabled = (bool) smartcrawl_get_array_value( $og, 'disabled' );
|
55 |
?>
|
@@ -74,11 +74,11 @@
|
|
74 |
class="wds-label"><?php esc_html_e( 'Title', 'wds' ); ?></label>
|
75 |
</div>
|
76 |
<div class="fields">
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
</div>
|
83 |
</div>
|
84 |
|
@@ -89,8 +89,8 @@
|
|
89 |
</div>
|
90 |
<div class="fields">
|
91 |
<textarea name="wds-opengraph[description]"
|
92 |
-
|
93 |
-
|
94 |
</div>
|
95 |
</div>
|
96 |
|
@@ -125,10 +125,10 @@
|
|
125 |
</div>
|
126 |
</td>
|
127 |
<tr>
|
128 |
-
|
129 |
|
130 |
|
131 |
-
|
132 |
<tr class="form-field">
|
133 |
<th scope="row" valign="top"><label for=""><?php esc_html_e( 'Twitter', 'wds' ); ?></label></th>
|
134 |
<td>
|
@@ -144,6 +144,9 @@
|
|
144 |
'description' => false,
|
145 |
'disabled' => false,
|
146 |
) );
|
|
|
|
|
|
|
147 |
|
148 |
$twitter_meta_disabled = (bool) smartcrawl_get_array_value( $twitter, 'disabled' );
|
149 |
?>
|
@@ -170,7 +173,7 @@
|
|
170 |
<input type="text"
|
171 |
id="twitter-title"
|
172 |
name="wds-twitter[title]"
|
173 |
-
placeholder="<?php echo $twitter['title'] ? '' : esc_attr(
|
174 |
value="<?php echo esc_attr( $twitter['title'] ); ?>"/>
|
175 |
</div>
|
176 |
</div>
|
@@ -182,7 +185,7 @@
|
|
182 |
</div>
|
183 |
<div class="fields">
|
184 |
<textarea name="wds-twitter[description]"
|
185 |
-
placeholder="<?php echo $twitter['description'] ? '' : esc_attr(
|
186 |
id="twitter-description"><?php echo esc_textarea( $twitter['description'] ); ?></textarea>
|
187 |
</div>
|
188 |
</div>
|
@@ -220,3 +223,5 @@
|
|
220 |
<?php } ?>
|
221 |
|
222 |
</table>
|
|
|
|
1 |
+
<?php
|
2 |
+
$resolver = Smartcrawl_Endpoint_Resolver::resolve();
|
3 |
+
$resolver->simulate_taxonomy_term( $term );
|
4 |
+
?>
|
5 |
<h2><?php esc_html_e( 'SmartCrawl Settings ', 'wds' ); ?></h2>
|
6 |
<table class="form-table">
|
7 |
|
29 |
$options = Smartcrawl_Settings::get_options();
|
30 |
?>
|
31 |
|
32 |
+
<?php if ( ! empty( $options['og-enable'] ) && ! empty( $smartcrawl_options["og-active-{$term->taxonomy}"] ) ) { ?>
|
33 |
<tr class="form-field">
|
34 |
<th scope="row" valign="top"><label for=""><?php esc_html_e( 'OpenGraph', 'wds' ); ?></label></th>
|
35 |
<td>
|
47 |
'disabled' => false,
|
48 |
) );
|
49 |
|
50 |
+
$value_helper = new Smartcrawl_OpenGraph_Value_Helper();
|
51 |
+
$default_title = $value_helper->get_title();
|
52 |
+
$default_metadesc = $value_helper->get_description();
|
|
|
|
|
|
|
|
|
53 |
|
54 |
$og_meta_disabled = (bool) smartcrawl_get_array_value( $og, 'disabled' );
|
55 |
?>
|
74 |
class="wds-label"><?php esc_html_e( 'Title', 'wds' ); ?></label>
|
75 |
</div>
|
76 |
<div class="fields">
|
77 |
+
<input type="text"
|
78 |
+
id="og-title"
|
79 |
+
name="wds-opengraph[title]"
|
80 |
+
placeholder="<?php echo $og['title'] ? '' : esc_attr( $default_title ); ?>"
|
81 |
+
value="<?php echo esc_attr( $og['title'] ); ?>"/>
|
82 |
</div>
|
83 |
</div>
|
84 |
|
89 |
</div>
|
90 |
<div class="fields">
|
91 |
<textarea name="wds-opengraph[description]"
|
92 |
+
placeholder="<?php echo $og['description'] ? '' : esc_attr( $default_metadesc ); ?>"
|
93 |
+
id="og-description"><?php echo esc_textarea( $og['description'] ); ?></textarea>
|
94 |
</div>
|
95 |
</div>
|
96 |
|
125 |
</div>
|
126 |
</td>
|
127 |
<tr>
|
128 |
+
<?php } ?>
|
129 |
|
130 |
|
131 |
+
<?php if ( ! empty( $options['twitter-card-enable'] ) && ! empty( $smartcrawl_options["twitter-active-{$term->taxonomy}"] ) ) { ?>
|
132 |
<tr class="form-field">
|
133 |
<th scope="row" valign="top"><label for=""><?php esc_html_e( 'Twitter', 'wds' ); ?></label></th>
|
134 |
<td>
|
144 |
'description' => false,
|
145 |
'disabled' => false,
|
146 |
) );
|
147 |
+
$twitter_printer = Smartcrawl_Twitter_Printer::get();
|
148 |
+
$default_twitter_title = $twitter_printer->get_title_content();
|
149 |
+
$default_twitter_metadesc = $twitter_printer->get_description_content();
|
150 |
|
151 |
$twitter_meta_disabled = (bool) smartcrawl_get_array_value( $twitter, 'disabled' );
|
152 |
?>
|
173 |
<input type="text"
|
174 |
id="twitter-title"
|
175 |
name="wds-twitter[title]"
|
176 |
+
placeholder="<?php echo $twitter['title'] ? '' : esc_attr( $default_twitter_title ); ?>"
|
177 |
value="<?php echo esc_attr( $twitter['title'] ); ?>"/>
|
178 |
</div>
|
179 |
</div>
|
185 |
</div>
|
186 |
<div class="fields">
|
187 |
<textarea name="wds-twitter[description]"
|
188 |
+
placeholder="<?php echo $twitter['description'] ? '' : esc_attr( $default_twitter_metadesc ); ?>"
|
189 |
id="twitter-description"><?php echo esc_textarea( $twitter['description'] ); ?></textarea>
|
190 |
</div>
|
191 |
</div>
|
223 |
<?php } ?>
|
224 |
|
225 |
</table>
|
226 |
+
<?php $resolver->stop_simulation(); ?>
|
227 |
+
|
includes/admin/templates/upsell-modal.php
CHANGED
@@ -20,7 +20,7 @@
|
|
20 |
</li>
|
21 |
<li>
|
22 |
<span class="wds-strong-text"><?php esc_attr_e( 'Smush Pro', 'wds' ); ?></span>
|
23 |
-
<p class="wds-small-text"><?php esc_attr_e( 'A membership for
|
24 |
</li>
|
25 |
</ul>
|
26 |
|
20 |
</li>
|
21 |
<li>
|
22 |
<span class="wds-strong-text"><?php esc_attr_e( 'Smush Pro', 'wds' ); ?></span>
|
23 |
+
<p class="wds-small-text"><?php esc_attr_e( 'A membership for SmartCrawl Pro also gets you the award winning Smush Pro with unlimited advanced lossy compression that’ll give image heavy websites a speed boost.', 'wds' ); ?></p>
|
24 |
</li>
|
25 |
</ul>
|
26 |
|
includes/admin/templates/wp-dashboard/sitemaps-widget-js.php
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
$updating = empty( $updating ) ? '' : $updating;
|
3 |
+
$updated = empty( $updated ) ? '' : $updated;
|
4 |
+
$notifying = empty( $notifying ) ? '' : $notifying;
|
5 |
+
$notified = empty( $notified ) ? '' : $notified;
|
6 |
+
?>
|
7 |
+
<script type="text/javascript">
|
8 |
+
;(function ($) {
|
9 |
+
$(function () {
|
10 |
+
$("#wds_update_now").click(function () {
|
11 |
+
var me = $(this);
|
12 |
+
me.html("<?php echo esc_js( $updating ); ?>");
|
13 |
+
|
14 |
+
$.post(ajaxurl, {"action": "wds_update_sitemap"}, function () {
|
15 |
+
me.html("<?php echo esc_js( $updated ); ?>");
|
16 |
+
window.location.reload();
|
17 |
+
});
|
18 |
+
|
19 |
+
return false;
|
20 |
+
});
|
21 |
+
|
22 |
+
$("#wds_update_engines").click(function () {
|
23 |
+
var me = $(this);
|
24 |
+
me.html("<?php echo esc_js( $notifying ); ?>");
|
25 |
+
|
26 |
+
$.post(ajaxurl, {"action": "wds_update_engines"}, function () {
|
27 |
+
me.html("<?php echo esc_js( $notified ); ?>");
|
28 |
+
window.location.reload();
|
29 |
+
});
|
30 |
+
|
31 |
+
return false;
|
32 |
+
});
|
33 |
+
});
|
34 |
+
})(jQuery);
|
35 |
+
</script>
|
includes/admin/templates/wp-dashboard/sitemaps-widget.php
ADDED
@@ -0,0 +1,64 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
$last_update_date = empty( $last_update_date ) ? '' : $last_update_date;
|
3 |
+
$last_update_time = empty( $last_update_time ) ? '' : $last_update_time;
|
4 |
+
$last_update_timestamp = empty( $last_update_timestamp ) ? '' : $last_update_timestamp;
|
5 |
+
$se_notifications_enabled = empty( $se_notifications_enabled ) ? '' : $se_notifications_enabled;
|
6 |
+
$engines = empty( $engines ) ? array() : $engines;
|
7 |
+
$sitemap_stats = empty( $sitemap_stats ) ? array() : $sitemap_stats;
|
8 |
+
?>
|
9 |
+
|
10 |
+
<div class="wpmud wds-sitemaps-widget">
|
11 |
+
<div class="wds-sitemaps-widget-left">
|
12 |
+
<div>
|
13 |
+
<?php
|
14 |
+
printf(
|
15 |
+
esc_html__( 'Your sitemap contains %s.', 'wds' ),
|
16 |
+
sprintf(
|
17 |
+
'<a href="%1$s" target="_blank"><b>%2$d</b> %3$s</a>',
|
18 |
+
esc_attr( smartcrawl_get_sitemap_url() ),
|
19 |
+
(int) smartcrawl_get_array_value( $sitemap_stats, 'items' ),
|
20 |
+
esc_html__( 'items' )
|
21 |
+
)
|
22 |
+
);
|
23 |
+
?>
|
24 |
+
</div>
|
25 |
+
<p>
|
26 |
+
<?php echo esc_html( $last_update_timestamp ); ?>
|
27 |
+
</p>
|
28 |
+
<p>
|
29 |
+
<a href='#update_sitemap' id='wds_update_now'><?php echo esc_html__( 'Update sitemap now', 'wds' ); ?></a>
|
30 |
+
</p>
|
31 |
+
</div>
|
32 |
+
|
33 |
+
<div class="wds-sitemaps-widget-right">
|
34 |
+
<?php if ( $engines ) { ?>
|
35 |
+
<ul>
|
36 |
+
<?php
|
37 |
+
foreach ( $engines as $key => $engine ) {
|
38 |
+
$service_name = ucfirst( $key );
|
39 |
+
$engine_date = ! empty( $engine['time'] ) ? date_i18n( get_option( 'date_format' ), $engine['time'] ) : false;
|
40 |
+
$engine_time = ! empty( $engine['time'] ) ? date_i18n( get_option( 'time_format' ), $engine['time'] ) : false;
|
41 |
+
$engine_timestamp = ( $engine_date && $engine_time ) ? sprintf( __( 'Last notified on %1$s, at %2$s.', 'wds' ), $engine_date, $engine_time ) : __( 'Not notified', 'wds' );
|
42 |
+
?>
|
43 |
+
<li>
|
44 |
+
<b><?php echo esc_html( $service_name ); ?>:</b> <?php echo esc_html( $engine_timestamp ); ?>
|
45 |
+
</li>
|
46 |
+
<?php } ?>
|
47 |
+
|
48 |
+
</ul>
|
49 |
+
|
50 |
+
<?php } else { ?>
|
51 |
+
<div><?php esc_html_e( "Search engines haven't been recently updated.", 'wds' ); ?></div>
|
52 |
+
<?php } ?>
|
53 |
+
|
54 |
+
<?php if ( $se_notifications_enabled ): ?>
|
55 |
+
<p>
|
56 |
+
<a href='#update_search_engines' id='wds_update_engines'>
|
57 |
+
<?php echo esc_html__( 'Force search engines notification', 'wds' ); ?>
|
58 |
+
</a>
|
59 |
+
</p>
|
60 |
+
<?php else: ?>
|
61 |
+
<p><?php esc_html_e( 'Search engine notifications are disabled. You can enable them in the sitemap settings.', 'wds' ); ?></p>
|
62 |
+
<?php endif; ?>
|
63 |
+
</div>
|
64 |
+
</div>
|
includes/core/checks/class-wds-check-keywords-used.php
CHANGED
@@ -94,7 +94,7 @@ class Smartcrawl_Check_Keywords_Used extends Smartcrawl_Check_Post_Abstract {
|
|
94 |
<br/><br/>
|
95 |
|
96 |
<?php printf(
|
97 |
-
|
98 |
esc_html__( "Note: If you happen to have two pages with the same content, it's important to tell search engines which one to show in search results using the Canonical URL feature. You can read more about this", 'wds' ),
|
99 |
esc_html__( 'here' )
|
100 |
); ?>
|
94 |
<br/><br/>
|
95 |
|
96 |
<?php printf(
|
97 |
+
"%s <a href='https://premium.wpmudev.org/blog/wordpress-canonicalization-guide/' target='_blank'>%s</a>.",
|
98 |
esc_html__( "Note: If you happen to have two pages with the same content, it's important to tell search engines which one to show in search results using the Canonical URL feature. You can read more about this", 'wds' ),
|
99 |
esc_html__( 'here' )
|
100 |
); ?>
|
includes/core/checks/class-wds-check-metadesc-length.php
CHANGED
@@ -18,7 +18,7 @@ class Smartcrawl_Check_Metadesc_Length extends Smartcrawl_Check_Post_Abstract {
|
|
18 |
|
19 |
public function get_status_msg() {
|
20 |
if ( ! is_numeric( $this->_state ) ) {
|
21 |
-
return __( 'Description
|
22 |
}
|
23 |
|
24 |
return 0 === $this->_state
|
18 |
|
19 |
public function get_status_msg() {
|
20 |
if ( ! is_numeric( $this->_state ) ) {
|
21 |
+
return __( 'Description has a good length', 'wds' );
|
22 |
}
|
23 |
|
24 |
return 0 === $this->_state
|
includes/core/checks/class-wds-check-subheadings-keywords.php
CHANGED
@@ -16,10 +16,10 @@ class Smartcrawl_Check_Subheadings_Keywords extends Smartcrawl_Check_Abstract {
|
|
16 |
return true;
|
17 |
} // No subheadings, nothing to check.
|
18 |
|
19 |
-
$status =
|
20 |
foreach ( $subjects as $subject ) {
|
21 |
$status = $this->has_focus( $subject );
|
22 |
-
if (
|
23 |
break;
|
24 |
}
|
25 |
}
|
16 |
return true;
|
17 |
} // No subheadings, nothing to check.
|
18 |
|
19 |
+
$status = false;
|
20 |
foreach ( $subjects as $subject ) {
|
21 |
$status = $this->has_focus( $subject );
|
22 |
+
if ( $status ) {
|
23 |
break;
|
24 |
}
|
25 |
}
|
includes/core/checks/class-wds-check-title-length.php
CHANGED
@@ -12,7 +12,7 @@ class Smartcrawl_Check_Title_Length extends Smartcrawl_Check_Post_Abstract {
|
|
12 |
|
13 |
public function get_status_msg() {
|
14 |
if ( ! is_numeric( $this->_state ) ) {
|
15 |
-
return __( 'Title
|
16 |
}
|
17 |
|
18 |
return 0 === $this->_state
|
12 |
|
13 |
public function get_status_msg() {
|
14 |
if ( ! is_numeric( $this->_state ) ) {
|
15 |
+
return __( 'Title has a good length', 'wds' );
|
16 |
}
|
17 |
|
18 |
return 0 === $this->_state
|
includes/core/class-wds-aioseop-importer.php
CHANGED
@@ -23,7 +23,7 @@ class Smartcrawl_AIOSEOP_Importer extends Smartcrawl_Importer {
|
|
23 |
return false;
|
24 |
}
|
25 |
|
26 |
-
return strpos( $version, '2.' ) === 0;
|
27 |
}
|
28 |
|
29 |
public function import_options() {
|
@@ -339,6 +339,11 @@ class Smartcrawl_AIOSEOP_Importer extends Smartcrawl_Importer {
|
|
339 |
$this->import_post_meta_opengraph( $post_id );
|
340 |
}
|
341 |
|
|
|
|
|
|
|
|
|
|
|
342 |
return count( $all_posts ) === count( $batch_posts );
|
343 |
}
|
344 |
|
@@ -462,6 +467,9 @@ class Smartcrawl_AIOSEOP_Importer extends Smartcrawl_Importer {
|
|
462 |
'instagram.com' => 'instagram_url',
|
463 |
'linkedin.com' => 'linkedin_url',
|
464 |
'plus.google' => 'gplus_url',
|
|
|
|
|
|
|
465 |
);
|
466 |
$social_links = empty( $source_value ) ? array() : explode( "\n", $source_value );
|
467 |
|
@@ -670,4 +678,11 @@ class Smartcrawl_AIOSEOP_Importer extends Smartcrawl_Importer {
|
|
670 |
|
671 |
return ! $use_home_meta_as_social;
|
672 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
673 |
}
|
23 |
return false;
|
24 |
}
|
25 |
|
26 |
+
return strpos( $version, '2.9' ) === 0;
|
27 |
}
|
28 |
|
29 |
public function import_options() {
|
339 |
$this->import_post_meta_opengraph( $post_id );
|
340 |
}
|
341 |
|
342 |
+
$this->update_status( array(
|
343 |
+
'remaining_posts' => count( $this->get_posts_with_aioseop_metas() ),
|
344 |
+
'completed_posts' => count( $this->get_posts_with_target_metas() ),
|
345 |
+
) );
|
346 |
+
|
347 |
return count( $all_posts ) === count( $batch_posts );
|
348 |
}
|
349 |
|
467 |
'instagram.com' => 'instagram_url',
|
468 |
'linkedin.com' => 'linkedin_url',
|
469 |
'plus.google' => 'gplus_url',
|
470 |
+
'pinterest.com' => 'pinterest_url',
|
471 |
+
'youtu.be' => 'youtube_url',
|
472 |
+
'youtube.com' => 'youtube_url',
|
473 |
);
|
474 |
$social_links = empty( $source_value ) ? array() : explode( "\n", $source_value );
|
475 |
|
678 |
|
679 |
return ! $use_home_meta_as_social;
|
680 |
}
|
681 |
+
|
682 |
+
protected function get_source_plugins() {
|
683 |
+
return array(
|
684 |
+
'all-in-one-seo-pack/all_in_one_seo_pack.php',
|
685 |
+
'all-in-one-seo-pack-pro/all_in_one_seo_pack.php',
|
686 |
+
);
|
687 |
+
}
|
688 |
}
|
includes/core/class-wds-canonical-value-helper.php
ADDED
@@ -0,0 +1,133 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Smartcrawl_Canonical_Value_Helper extends Smartcrawl_Type_Traverser {
|
4 |
+
|
5 |
+
/**
|
6 |
+
* @var string
|
7 |
+
*/
|
8 |
+
private $canonical;
|
9 |
+
|
10 |
+
public function __construct() {
|
11 |
+
$this->traverse();
|
12 |
+
}
|
13 |
+
|
14 |
+
public function get_canonical() {
|
15 |
+
return apply_filters( 'wds_filter_canonical', $this->canonical );
|
16 |
+
}
|
17 |
+
|
18 |
+
public function handle_bp_groups() {
|
19 |
+
$this->canonical = bp_get_group_link( bp_get_group_id() );
|
20 |
+
}
|
21 |
+
|
22 |
+
public function handle_bp_profile() {
|
23 |
+
$this->canonical = bp_get_displayed_user_link();
|
24 |
+
}
|
25 |
+
|
26 |
+
public function handle_woo_shop() {
|
27 |
+
$this->handle_singular( wc_get_page_id( 'shop' ) );
|
28 |
+
}
|
29 |
+
|
30 |
+
public function handle_blog_home() {
|
31 |
+
$this->canonical = trailingslashit( get_bloginfo( 'url' ) );
|
32 |
+
}
|
33 |
+
|
34 |
+
public function handle_static_home() {
|
35 |
+
$this->handle_singular( get_option( 'page_for_posts' ) );
|
36 |
+
}
|
37 |
+
|
38 |
+
public function handle_search() {
|
39 |
+
// Not needed
|
40 |
+
}
|
41 |
+
|
42 |
+
public function handle_404() {
|
43 |
+
// Not needed
|
44 |
+
}
|
45 |
+
|
46 |
+
public function handle_date_archive() {
|
47 |
+
$wp_query = $this->get_query_context();
|
48 |
+
|
49 |
+
$requested_year = $wp_query->get( 'year' );
|
50 |
+
$requested_month = $wp_query->get( 'monthnum' );
|
51 |
+
$date_callback = ! empty( $requested_year ) && empty( $requested_month )
|
52 |
+
? 'get_year_link'
|
53 |
+
: 'get_month_link';
|
54 |
+
$this->canonical = $date_callback( $requested_year, $requested_month );
|
55 |
+
|
56 |
+
$this->append_page_number();
|
57 |
+
}
|
58 |
+
|
59 |
+
public function handle_pt_archive() {
|
60 |
+
/**
|
61 |
+
* @var $post_type WP_Post_Type
|
62 |
+
*/
|
63 |
+
$post_type = $this->get_queried_object();
|
64 |
+
if ( is_a( $post_type, 'WP_Post_Type' ) ) {
|
65 |
+
$this->canonical = get_post_type_archive_link( $post_type->name );
|
66 |
+
|
67 |
+
$this->append_page_number();
|
68 |
+
}
|
69 |
+
}
|
70 |
+
|
71 |
+
public function handle_tax_archive() {
|
72 |
+
$wp_query = $this->get_query_context();
|
73 |
+
$term = $wp_query->get_queried_object();
|
74 |
+
$canonical = smartcrawl_get_term_meta( $term, $term->taxonomy, 'wds_canonical' );
|
75 |
+
$this->canonical = $canonical ? $canonical : get_term_link( $term, $term->taxonomy );
|
76 |
+
|
77 |
+
$this->append_page_number();
|
78 |
+
}
|
79 |
+
|
80 |
+
public function handle_author_archive() {
|
81 |
+
$user = $this->get_queried_object();
|
82 |
+
$this->canonical = get_author_posts_url( $user->ID );
|
83 |
+
|
84 |
+
$this->append_page_number();
|
85 |
+
}
|
86 |
+
|
87 |
+
public function handle_archive() {
|
88 |
+
// Not needed. More specific archives handled already.
|
89 |
+
}
|
90 |
+
|
91 |
+
public function handle_singular( $post_id = 0 ) {
|
92 |
+
$post = $post_id ? get_post( $post_id ) : null;
|
93 |
+
if ( ! $post ) {
|
94 |
+
$post = $this->get_context();
|
95 |
+
}
|
96 |
+
|
97 |
+
$canonical = smartcrawl_get_value( 'canonical', $post->ID );
|
98 |
+
if ( empty( $canonical ) ) {
|
99 |
+
$canonical = $this->get_post_canonical( $post->ID );
|
100 |
+
}
|
101 |
+
|
102 |
+
$this->canonical = $canonical;
|
103 |
+
}
|
104 |
+
|
105 |
+
private function get_post_canonical( $id ) {
|
106 |
+
$link = get_permalink( $id );
|
107 |
+
$query = $this->get_query_context();
|
108 |
+
$comment_page = $query->get( 'cpage' );
|
109 |
+
if ( $comment_page ) {
|
110 |
+
$link = get_comments_pagenum_link( $comment_page );
|
111 |
+
}
|
112 |
+
|
113 |
+
return $link;
|
114 |
+
}
|
115 |
+
|
116 |
+
private function append_page_number() {
|
117 |
+
/**
|
118 |
+
* @var $wp_rewrite WP_Rewrite
|
119 |
+
*/
|
120 |
+
global $wp_rewrite;
|
121 |
+
|
122 |
+
$wp_query = $this->get_query_context();
|
123 |
+
$paged = $wp_query->get( 'paged', 1 );
|
124 |
+
|
125 |
+
if ( $paged > 1 ) {
|
126 |
+
if ( $wp_rewrite->using_permalinks() ) {
|
127 |
+
$this->canonical = trailingslashit( $this->canonical ) . sprintf( $wp_rewrite->pagination_base . '/%d/', $paged );
|
128 |
+
} else {
|
129 |
+
$this->canonical = esc_url_raw( add_query_arg( 'paged', $paged, $this->canonical ) );
|
130 |
+
}
|
131 |
+
}
|
132 |
+
}
|
133 |
+
}
|
includes/core/class-wds-compatibility.php
ADDED
@@ -0,0 +1,152 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Class Smartcrawl_Compatibility
|
5 |
+
*
|
6 |
+
* Fixes third-party compatibility issues
|
7 |
+
*/
|
8 |
+
class Smartcrawl_Compatibility {
|
9 |
+
/**
|
10 |
+
* Singleton instance
|
11 |
+
*
|
12 |
+
* @var Smartcrawl_Compatibility
|
13 |
+
*/
|
14 |
+
private static $_instance;
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Currently running state flag
|
18 |
+
*
|
19 |
+
* @var bool
|
20 |
+
*/
|
21 |
+
private $_is_running = false;
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Constructor
|
25 |
+
*/
|
26 |
+
private function __construct() {
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Boot controller listeners
|
31 |
+
*
|
32 |
+
* Do it only once, if they're already up do nothing
|
33 |
+
*
|
34 |
+
* @return bool Status
|
35 |
+
*/
|
36 |
+
public static function run() {
|
37 |
+
$me = self::get();
|
38 |
+
if ( $me->is_running() ) {
|
39 |
+
return false;
|
40 |
+
}
|
41 |
+
|
42 |
+
return $me->_add_hooks();
|
43 |
+
}
|
44 |
+
|
45 |
+
/**
|
46 |
+
* Obtain instance without booting up
|
47 |
+
*
|
48 |
+
* @return Smartcrawl_Compatibility instance
|
49 |
+
*/
|
50 |
+
public static function get() {
|
51 |
+
if ( empty( self::$_instance ) ) {
|
52 |
+
self::$_instance = new self();
|
53 |
+
}
|
54 |
+
|
55 |
+
return self::$_instance;
|
56 |
+
}
|
57 |
+
|
58 |
+
/**
|
59 |
+
* Check if we already have the actions bound
|
60 |
+
*
|
61 |
+
* @return bool Status
|
62 |
+
*/
|
63 |
+
public function is_running() {
|
64 |
+
return $this->_is_running;
|
65 |
+
}
|
66 |
+
|
67 |
+
/**
|
68 |
+
* Bind listening actions
|
69 |
+
*
|
70 |
+
* @return bool
|
71 |
+
*/
|
72 |
+
private function _add_hooks() {
|
73 |
+
add_action( 'init', array( $this, 'load_divi_in_ajax' ), - 10 );
|
74 |
+
add_action( 'init', array( $this, 'load_wp_bakery_shortcodes' ), - 10 );
|
75 |
+
add_filter( 'wds-omitted-shortcodes', array( $this, 'avada_omitted_shortcodes' ) );
|
76 |
+
add_filter( 'wds-omitted-shortcodes', array( $this, 'divi_omitted_shortcodes' ) );
|
77 |
+
add_filter( 'wds-omitted-shortcodes', array( $this, 'wpbakery_omitted_shortcodes' ) );
|
78 |
+
add_filter( 'wds-omitted-shortcodes', array( $this, 'swift_omitted_shortcodes' ) );
|
79 |
+
|
80 |
+
$this->_is_running = true;
|
81 |
+
|
82 |
+
return true;
|
83 |
+
}
|
84 |
+
|
85 |
+
public function avada_omitted_shortcodes( $omitted ) {
|
86 |
+
return array_merge( $omitted, array(
|
87 |
+
'fusion_code',
|
88 |
+
'fusion_imageframe',
|
89 |
+
'fusion_slide',
|
90 |
+
'fusion_syntax_highlighter',
|
91 |
+
) );
|
92 |
+
}
|
93 |
+
|
94 |
+
public function divi_omitted_shortcodes( $omitted ) {
|
95 |
+
return array_merge( $omitted, array(
|
96 |
+
'et_pb_code',
|
97 |
+
'et_pb_fullwidth_code',
|
98 |
+
) );
|
99 |
+
}
|
100 |
+
|
101 |
+
public function wpbakery_omitted_shortcodes( $omitted ) {
|
102 |
+
return array_merge( $omitted, array(
|
103 |
+
'vc_raw_js',
|
104 |
+
'vc_raw_html',
|
105 |
+
) );
|
106 |
+
}
|
107 |
+
|
108 |
+
public function swift_omitted_shortcodes( $omitted ) {
|
109 |
+
return array_merge( $omitted, array(
|
110 |
+
'spb_raw_js',
|
111 |
+
'spb_raw_html',
|
112 |
+
) );
|
113 |
+
}
|
114 |
+
|
115 |
+
/**
|
116 |
+
* Divi doesn't usually load its shortcodes during ajax requests but we need these shortcodes in order to
|
117 |
+
* render an accurate preview.
|
118 |
+
*
|
119 |
+
* Force Divi to load during our requests.
|
120 |
+
*/
|
121 |
+
public function load_divi_in_ajax() {
|
122 |
+
if ( $this->is_preview_request() ) {
|
123 |
+
$_POST['et_load_builder_modules'] = '1';
|
124 |
+
}
|
125 |
+
}
|
126 |
+
|
127 |
+
/**
|
128 |
+
* Force WPBakery to load its shortcodes so we can render an accurate preview
|
129 |
+
*/
|
130 |
+
public function load_wp_bakery_shortcodes() {
|
131 |
+
if ( $this->is_preview_request() ) {
|
132 |
+
$load_shortcodes_callback = array(
|
133 |
+
'WPBMap',
|
134 |
+
'addAllMappedShortcodes',
|
135 |
+
);
|
136 |
+
|
137 |
+
if ( is_callable( $load_shortcodes_callback ) ) {
|
138 |
+
add_action( 'init', $load_shortcodes_callback );
|
139 |
+
}
|
140 |
+
}
|
141 |
+
}
|
142 |
+
|
143 |
+
private function is_preview_request() {
|
144 |
+
return is_admin()
|
145 |
+
&& smartcrawl_is_switch_active( 'DOING_AJAX' )
|
146 |
+
&& isset( $_POST['_wds_nonce'] )
|
147 |
+
&& (
|
148 |
+
wp_verify_nonce( $_POST['_wds_nonce'], 'wds-metabox-nonce' )
|
149 |
+
|| wp_verify_nonce( $_POST['_wds_nonce'], 'wds-onpage-nonce' )
|
150 |
+
);
|
151 |
+
}
|
152 |
+
}
|
includes/core/class-wds-controller-analysis.php
CHANGED
@@ -79,9 +79,6 @@ class Smartcrawl_Controller_Analysis extends Smartcrawl_Renderable {
|
|
79 |
* @return bool
|
80 |
*/
|
81 |
private function _add_hooks() {
|
82 |
-
// Run fresh analysis on each post save.
|
83 |
-
add_action( 'save_post', array( $this, 'analyze_post' ) );
|
84 |
-
|
85 |
// Fetch analysis data via AJAX POST request.
|
86 |
add_action( 'wp_ajax_wds-analysis-get-data', array( $this, 'json_get_post_analysis_data' ) );
|
87 |
add_action( 'wp_ajax_wds-analysis-get-markup', array( $this, 'json_get_post_analysis_markup' ) );
|
@@ -130,7 +127,6 @@ class Smartcrawl_Controller_Analysis extends Smartcrawl_Renderable {
|
|
130 |
* @return bool
|
131 |
*/
|
132 |
private function _remove_hooks() {
|
133 |
-
remove_action( 'save_post', array( $this, 'analyze_post' ) );
|
134 |
remove_action( 'wp_ajax_wds-analysis-get-data', array( $this, 'json_get_post_analysis_data' ) );
|
135 |
remove_action( 'wp_ajax_wds-analysis-get-markup', array( $this, 'json_get_post_analysis_markup' ) );
|
136 |
remove_action( 'wp_ajax_wds-analysis-recheck', array( $this, 'json_get_post_analysis_recheck' ) );
|
@@ -536,6 +532,12 @@ class Smartcrawl_Controller_Analysis extends Smartcrawl_Renderable {
|
|
536 |
return true;
|
537 |
}
|
538 |
|
|
|
|
|
|
|
|
|
|
|
|
|
539 |
/**
|
540 |
* Update post analysis data
|
541 |
*
|
@@ -547,7 +549,11 @@ class Smartcrawl_Controller_Analysis extends Smartcrawl_Renderable {
|
|
547 |
* @return bool Status
|
548 |
*/
|
549 |
public function analyze_post( $post_id ) {
|
550 |
-
if (
|
|
|
|
|
|
|
|
|
551 |
return false;
|
552 |
}
|
553 |
|
79 |
* @return bool
|
80 |
*/
|
81 |
private function _add_hooks() {
|
|
|
|
|
|
|
82 |
// Fetch analysis data via AJAX POST request.
|
83 |
add_action( 'wp_ajax_wds-analysis-get-data', array( $this, 'json_get_post_analysis_data' ) );
|
84 |
add_action( 'wp_ajax_wds-analysis-get-markup', array( $this, 'json_get_post_analysis_markup' ) );
|
127 |
* @return bool
|
128 |
*/
|
129 |
private function _remove_hooks() {
|
|
|
130 |
remove_action( 'wp_ajax_wds-analysis-get-data', array( $this, 'json_get_post_analysis_data' ) );
|
131 |
remove_action( 'wp_ajax_wds-analysis-get-markup', array( $this, 'json_get_post_analysis_markup' ) );
|
132 |
remove_action( 'wp_ajax_wds-analysis-recheck', array( $this, 'json_get_post_analysis_recheck' ) );
|
532 |
return true;
|
533 |
}
|
534 |
|
535 |
+
private function post_type_requires_analysis( $post_id ) {
|
536 |
+
$post_type = get_post_type_object( get_post_type( $post_id ) );
|
537 |
+
|
538 |
+
return $post_type->name === 'revision' || $post_type->public;
|
539 |
+
}
|
540 |
+
|
541 |
/**
|
542 |
* Update post analysis data
|
543 |
*
|
549 |
* @return bool Status
|
550 |
*/
|
551 |
public function analyze_post( $post_id ) {
|
552 |
+
if (
|
553 |
+
empty( $post_id )
|
554 |
+
|| ! is_numeric( $post_id )
|
555 |
+
|| ! $this->post_type_requires_analysis( $post_id )
|
556 |
+
) {
|
557 |
return false;
|
558 |
}
|
559 |
|
includes/core/class-wds-controller-io.php
CHANGED
@@ -284,18 +284,16 @@ class Smartcrawl_Controller_IO extends Smartcrawl_WorkUnit {
|
|
284 |
}
|
285 |
|
286 |
public function import_yoast_data() {
|
287 |
-
$this->
|
|
|
288 |
}
|
289 |
|
290 |
/**
|
291 |
* @param $importer Smartcrawl_Importer
|
292 |
* @param $plugin
|
293 |
*/
|
294 |
-
private function do_import( $importer, $
|
295 |
-
$result = array(
|
296 |
-
'success' => false,
|
297 |
-
'url' => $this->get_success_url( $plugin ),
|
298 |
-
);
|
299 |
|
300 |
if ( ! $this->user_has_permission_to_import() ) {
|
301 |
$result['message'] = __( "You don't have permission to perform this operation.", 'wds' );
|
@@ -308,22 +306,20 @@ class Smartcrawl_Controller_IO extends Smartcrawl_WorkUnit {
|
|
308 |
}
|
309 |
|
310 |
if ( is_multisite() ) {
|
311 |
-
$importer->import_for_all_sites();
|
312 |
$in_progress = $importer->is_network_import_in_progress();
|
313 |
} else {
|
314 |
-
$importer->import();
|
315 |
$in_progress = $importer->is_import_in_progress();
|
316 |
}
|
317 |
$result['success'] = true;
|
318 |
$result['in_progress'] = $in_progress;
|
|
|
|
|
319 |
|
320 |
die( wp_json_encode( $result ) );
|
321 |
}
|
322 |
|
323 |
-
private function get_success_url( $plugin ) {
|
324 |
-
return Smartcrawl_Settings_Admin::admin_url( Smartcrawl_Settings::TAB_SETTINGS ) . "&imported=true&plugin={$plugin}#tab_import_export";
|
325 |
-
}
|
326 |
-
|
327 |
private function user_has_permission_to_import() {
|
328 |
if ( ! is_network_admin() && ! is_admin() ) {
|
329 |
return false;
|
@@ -339,7 +335,8 @@ class Smartcrawl_Controller_IO extends Smartcrawl_WorkUnit {
|
|
339 |
}
|
340 |
|
341 |
public function import_aioseop_data() {
|
342 |
-
$this->
|
|
|
343 |
}
|
344 |
|
345 |
private function get_request_data() {
|
@@ -353,5 +350,13 @@ class Smartcrawl_Controller_IO extends Smartcrawl_WorkUnit {
|
|
353 |
|
354 |
return array();
|
355 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
356 |
}
|
357 |
|
284 |
}
|
285 |
|
286 |
public function import_yoast_data() {
|
287 |
+
$options = $this->get_import_options_from_request();
|
288 |
+
$this->do_import( new Smartcrawl_Yoast_Importer(), $options );
|
289 |
}
|
290 |
|
291 |
/**
|
292 |
* @param $importer Smartcrawl_Importer
|
293 |
* @param $plugin
|
294 |
*/
|
295 |
+
private function do_import( $importer, $options = array() ) {
|
296 |
+
$result = array( 'success' => false );
|
|
|
|
|
|
|
297 |
|
298 |
if ( ! $this->user_has_permission_to_import() ) {
|
299 |
$result['message'] = __( "You don't have permission to perform this operation.", 'wds' );
|
306 |
}
|
307 |
|
308 |
if ( is_multisite() ) {
|
309 |
+
$importer->import_for_all_sites( $options );
|
310 |
$in_progress = $importer->is_network_import_in_progress();
|
311 |
} else {
|
312 |
+
$importer->import( $options );
|
313 |
$in_progress = $importer->is_import_in_progress();
|
314 |
}
|
315 |
$result['success'] = true;
|
316 |
$result['in_progress'] = $in_progress;
|
317 |
+
$result['status'] = $importer->get_status();
|
318 |
+
$result['deactivation_url'] = $importer->get_deactivation_link();
|
319 |
|
320 |
die( wp_json_encode( $result ) );
|
321 |
}
|
322 |
|
|
|
|
|
|
|
|
|
323 |
private function user_has_permission_to_import() {
|
324 |
if ( ! is_network_admin() && ! is_admin() ) {
|
325 |
return false;
|
335 |
}
|
336 |
|
337 |
public function import_aioseop_data() {
|
338 |
+
$options = $this->get_import_options_from_request();
|
339 |
+
$this->do_import( new Smartcrawl_AIOSEOP_Importer(), $options );
|
340 |
}
|
341 |
|
342 |
private function get_request_data() {
|
350 |
|
351 |
return array();
|
352 |
}
|
353 |
+
|
354 |
+
private function get_import_options_from_request() {
|
355 |
+
$request_data = $this->get_request_data();
|
356 |
+
$options = smartcrawl_get_array_value( $request_data, 'items_to_import' );
|
357 |
+
$options['force-restart'] = (boolean) smartcrawl_get_array_value( $request_data, 'restart' );
|
358 |
+
|
359 |
+
return empty( $options ) ? array() : $options;
|
360 |
+
}
|
361 |
}
|
362 |
|
includes/core/class-wds-controller-pointers.php
ADDED
@@ -0,0 +1,150 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Smartcrawl_Controller_Pointers {
|
4 |
+
/**
|
5 |
+
* Singleton instance holder
|
6 |
+
*
|
7 |
+
* @var Smartcrawl_Controller_Pointers
|
8 |
+
*/
|
9 |
+
private static $_instance;
|
10 |
+
|
11 |
+
/**
|
12 |
+
* Controller state flag
|
13 |
+
*
|
14 |
+
* @var bool
|
15 |
+
*/
|
16 |
+
private $_is_running = false;
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Boot controller listeners
|
20 |
+
*
|
21 |
+
* Do it only once, if they're already up do nothing
|
22 |
+
*
|
23 |
+
* @return bool Status
|
24 |
+
*/
|
25 |
+
public static function run() {
|
26 |
+
$me = self::get();
|
27 |
+
if ( $me->is_running() ) {
|
28 |
+
return false;
|
29 |
+
}
|
30 |
+
|
31 |
+
$me->_add_hooks();
|
32 |
+
|
33 |
+
return true;
|
34 |
+
}
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Obtain instance without booting up
|
38 |
+
*
|
39 |
+
* @return Smartcrawl_Controller_Pointers instance
|
40 |
+
*/
|
41 |
+
public static function get() {
|
42 |
+
if ( empty( self::$_instance ) ) {
|
43 |
+
self::$_instance = new self();
|
44 |
+
}
|
45 |
+
|
46 |
+
return self::$_instance;
|
47 |
+
}
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Check if we already have the actions bound
|
51 |
+
*
|
52 |
+
* @return bool Status
|
53 |
+
*/
|
54 |
+
public function is_running() {
|
55 |
+
return $this->_is_running;
|
56 |
+
}
|
57 |
+
|
58 |
+
/**
|
59 |
+
* Bind listening actions
|
60 |
+
*/
|
61 |
+
private function _add_hooks() {
|
62 |
+
if ( get_bloginfo( 'version' ) < '3.3' ) {
|
63 |
+
return;
|
64 |
+
}
|
65 |
+
|
66 |
+
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue' ) );
|
67 |
+
add_action( 'admin_footer', array( $this, 'print_styles' ) );
|
68 |
+
// add_action( 'wds_admin_pointers-plugins', array( $this, 'smartcrawl_activation_pointer' ) );
|
69 |
+
|
70 |
+
$this->_is_running = true;
|
71 |
+
}
|
72 |
+
|
73 |
+
public function enqueue() {
|
74 |
+
if ( ! $this->get_valid_pointers() ) {
|
75 |
+
return;
|
76 |
+
}
|
77 |
+
|
78 |
+
wp_enqueue_script( 'wp-pointer' );
|
79 |
+
wp_enqueue_style( 'wp-pointer' );
|
80 |
+
wp_enqueue_script(
|
81 |
+
'wds-admin-pointers',
|
82 |
+
SMARTCRAWL_PLUGIN_URL . 'js/wds-admin-pointers.js',
|
83 |
+
array( 'jquery' ),
|
84 |
+
Smartcrawl_Loader::get_version()
|
85 |
+
);
|
86 |
+
wp_localize_script( 'wds-admin-pointers', '_wds_pointers', $this->get_valid_pointers() );
|
87 |
+
}
|
88 |
+
|
89 |
+
private function get_valid_pointers() {
|
90 |
+
$dismissed = explode(
|
91 |
+
',',
|
92 |
+
(string) get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ) );
|
93 |
+
// Get the screen ID
|
94 |
+
$screen = get_current_screen();
|
95 |
+
$screen_id = $screen->id;
|
96 |
+
$pointers = apply_filters( 'wds_admin_pointers-' . $screen_id, array() );
|
97 |
+
|
98 |
+
// Check pointers and remove dismissed ones.
|
99 |
+
foreach ( $pointers as $pointer_id => $pointer ) {
|
100 |
+
|
101 |
+
// Sanity check
|
102 |
+
if ( in_array( $pointer_id, $dismissed ) || empty( $pointer ) || empty( $pointer_id ) || empty( $pointer['target'] ) || empty( $pointer['options'] ) ) {
|
103 |
+
continue;
|
104 |
+
}
|
105 |
+
|
106 |
+
$pointer['pointer_id'] = $pointer_id;
|
107 |
+
|
108 |
+
// Add the pointer to $valid_pointers array
|
109 |
+
$valid_pointers['pointers'][ $pointer_id ] = $pointer;
|
110 |
+
}
|
111 |
+
|
112 |
+
// No valid pointers? Stop here.
|
113 |
+
if ( empty( $valid_pointers ) ) {
|
114 |
+
return array();
|
115 |
+
} else {
|
116 |
+
return $valid_pointers;
|
117 |
+
}
|
118 |
+
}
|
119 |
+
|
120 |
+
public function smartcrawl_activation_pointer( $pointers ) {
|
121 |
+
$pointers['wds-activation-pointer'] = array(
|
122 |
+
'target' => '#toplevel_page_wds_wizard',
|
123 |
+
'options' => array(
|
124 |
+
'content' => sprintf( '<h3> %s </h3> <p> %s </p>',
|
125 |
+
esc_html__( 'Optimize your SEO', 'wds' ),
|
126 |
+
esc_html__( 'Configure your SEO Titles & Meta, enable OpenGraph and activate readability analysis here.', 'wds' )
|
127 |
+
),
|
128 |
+
'position' => array( 'edge' => 'left', 'align' => 'right' ),
|
129 |
+
),
|
130 |
+
);
|
131 |
+
|
132 |
+
return $pointers;
|
133 |
+
}
|
134 |
+
|
135 |
+
public function print_styles() {
|
136 |
+
if ( ! $this->get_valid_pointers() ) {
|
137 |
+
return;
|
138 |
+
}
|
139 |
+
|
140 |
+
?>
|
141 |
+
<style>
|
142 |
+
@media screen and (max-width: 782px) {
|
143 |
+
.wds-pointer {
|
144 |
+
display: none !important;
|
145 |
+
}
|
146 |
+
}
|
147 |
+
</style>
|
148 |
+
<?php
|
149 |
+
}
|
150 |
+
}
|
includes/core/class-wds-controller-sitemap.php
CHANGED
@@ -32,11 +32,11 @@ class Smartcrawl_Controller_Sitemap extends Smartcrawl_Renderable {
|
|
32 |
|
33 |
$smartcrawl_options = Smartcrawl_Settings::get_options();
|
34 |
if ( isset( $smartcrawl_options['sitemap-disable-automatic-regeneration'] ) && empty( $smartcrawl_options['sitemap-disable-automatic-regeneration'] ) ) {
|
35 |
-
add_action( 'delete_post', array( $this, '
|
36 |
-
add_action( 'publish_post', array( $this, '
|
37 |
|
38 |
-
add_action( 'delete_page', array( $this, '
|
39 |
-
add_action( 'publish_page', array( $this, '
|
40 |
}
|
41 |
}
|
42 |
|
@@ -224,6 +224,33 @@ class Smartcrawl_Controller_Sitemap extends Smartcrawl_Renderable {
|
|
224 |
: $raw;
|
225 |
}
|
226 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
227 |
public function update_engines() {
|
228 |
Smartcrawl_Xml_Sitemap::notify_engines( 1 );
|
229 |
}
|
32 |
|
33 |
$smartcrawl_options = Smartcrawl_Settings::get_options();
|
34 |
if ( isset( $smartcrawl_options['sitemap-disable-automatic-regeneration'] ) && empty( $smartcrawl_options['sitemap-disable-automatic-regeneration'] ) ) {
|
35 |
+
add_action( 'delete_post', array( $this, 'drop_sitemap_cache' ) );
|
36 |
+
add_action( 'publish_post', array( $this, 'drop_sitemap_cache' ) );
|
37 |
|
38 |
+
add_action( 'delete_page', array( $this, 'drop_sitemap_cache' ) );
|
39 |
+
add_action( 'publish_page', array( $this, 'drop_sitemap_cache' ) );
|
40 |
}
|
41 |
}
|
42 |
|
224 |
: $raw;
|
225 |
}
|
226 |
|
227 |
+
/**
|
228 |
+
* Drops generated sitemap cache files
|
229 |
+
*
|
230 |
+
* This is so the next sitemap request re-generates the caches.
|
231 |
+
* Serves as performance improvement for post-based action listeners.
|
232 |
+
*
|
233 |
+
* On setups with large posts table, fully regenerating sitemap can take a
|
234 |
+
* while. So instead, we just drop the cache and potentially ping the
|
235 |
+
* search engines to notify them about the change.
|
236 |
+
*/
|
237 |
+
public function drop_sitemap_cache() {
|
238 |
+
$file = smartcrawl_get_sitemap_path();
|
239 |
+
$gzipped = "{$file}.gz";
|
240 |
+
|
241 |
+
if ( file_exists( $file ) ) {
|
242 |
+
@unlink( $file );
|
243 |
+
}
|
244 |
+
|
245 |
+
if ( file_exists( $gzipped ) ) {
|
246 |
+
@unlink( $gzipped );
|
247 |
+
}
|
248 |
+
|
249 |
+
// Also notify engines of changes.
|
250 |
+
// Do *not* forcefully do so, respect settings.
|
251 |
+
Smartcrawl_Xml_Sitemap::notify_engines();
|
252 |
+
}
|
253 |
+
|
254 |
public function update_engines() {
|
255 |
Smartcrawl_Xml_Sitemap::notify_engines( 1 );
|
256 |
}
|
includes/core/class-wds-core-request.php
CHANGED
@@ -52,6 +52,22 @@ class Smartcrawl_Core_Request {
|
|
52 |
'value' => $cvalue,
|
53 |
) );
|
54 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55 |
if ( ! empty( $cookies ) ) {
|
56 |
$params['cookies'] = $cookies;
|
57 |
}
|
52 |
'value' => $cvalue,
|
53 |
) );
|
54 |
}
|
55 |
+
|
56 |
+
// Post password cookie.
|
57 |
+
$post = $is_post_revision
|
58 |
+
? get_post( $post_parent )
|
59 |
+
: get_post( $post_id );
|
60 |
+
if ( ! empty( $post->post_password ) ) {
|
61 |
+
if ( ! class_exists( 'PasswordHash' ) ) {
|
62 |
+
require_once ABSPATH . WPINC . '/class-phpass.php';
|
63 |
+
}
|
64 |
+
$hasher = new PasswordHash( 8, true );
|
65 |
+
$cookies[] = new WP_Http_Cookie( array(
|
66 |
+
'name' => 'wp-postpass_' . COOKIEHASH,
|
67 |
+
'value' => $hasher->HashPassword( $post->post_password ),
|
68 |
+
));
|
69 |
+
}
|
70 |
+
|
71 |
if ( ! empty( $cookies ) ) {
|
72 |
$params['cookies'] = $cookies;
|
73 |
}
|
includes/core/class-wds-endpoint-resolver.php
CHANGED
@@ -75,7 +75,7 @@ class Smartcrawl_Endpoint_Resolver {
|
|
75 |
public function resolve_location() {
|
76 |
if ( is_front_page() && 'posts' === get_option( 'show_on_front' ) ) {
|
77 |
$this->set_location( self::L_BLOG_HOME );
|
78 |
-
|
79 |
$this->set_location( self::L_STATIC_HOME );
|
80 |
} elseif ( is_category() || is_tag() || is_tax() ) {
|
81 |
$this->set_location( self::L_TAX_ARCHIVE );
|
@@ -139,14 +139,43 @@ class Smartcrawl_Endpoint_Resolver {
|
|
139 |
* @return bool
|
140 |
*/
|
141 |
public function simulate_post( $pid ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
142 |
$this->_presimulation_data[] = array(
|
143 |
-
'location'
|
144 |
-
'context'
|
|
|
145 |
);
|
146 |
|
147 |
-
$
|
148 |
-
$this->
|
149 |
-
$this->
|
150 |
|
151 |
return true;
|
152 |
}
|
75 |
public function resolve_location() {
|
76 |
if ( is_front_page() && 'posts' === get_option( 'show_on_front' ) ) {
|
77 |
$this->set_location( self::L_BLOG_HOME );
|
78 |
+
} elseif ( is_home() && 'posts' !== get_option( 'show_on_front' ) ) {
|
79 |
$this->set_location( self::L_STATIC_HOME );
|
80 |
} elseif ( is_category() || is_tag() || is_tax() ) {
|
81 |
$this->set_location( self::L_TAX_ARCHIVE );
|
139 |
* @return bool
|
140 |
*/
|
141 |
public function simulate_post( $pid ) {
|
142 |
+
$post = get_post( $pid );
|
143 |
+
$query = new WP_Query();
|
144 |
+
$query->queried_object = $post;
|
145 |
+
$query->queried_object_id = $post->ID;
|
146 |
+
|
147 |
+
return $this->simulate( self::L_SINGULAR, $post, $query );
|
148 |
+
}
|
149 |
+
|
150 |
+
public function simulate_taxonomy_term( $term_id ) {
|
151 |
+
$term = get_term( $term_id );
|
152 |
+
$query = new WP_Query();
|
153 |
+
$query->queried_object = $term;
|
154 |
+
$query->queried_object_id = $term->term_id;
|
155 |
+
|
156 |
+
return $this->simulate( self::L_TAX_ARCHIVE, null, $query );
|
157 |
+
}
|
158 |
+
|
159 |
+
public function simulate_post_type( $post_type ) {
|
160 |
+
if ( is_a( $post_type, 'WP_Post_Type' ) ) {
|
161 |
+
$post_type = get_post_type_object( $post_type );
|
162 |
+
}
|
163 |
+
$query = new WP_Query();
|
164 |
+
$query->queried_object = $post_type;
|
165 |
+
|
166 |
+
$this->simulate( self::L_PT_ARCHIVE, null, $query );
|
167 |
+
}
|
168 |
+
|
169 |
+
public function simulate( $location, $context, $query_context = null ) {
|
170 |
$this->_presimulation_data[] = array(
|
171 |
+
'location' => $this->get_location(),
|
172 |
+
'context' => $this->get_context(),
|
173 |
+
'query_context' => $this->get_query_context(),
|
174 |
);
|
175 |
|
176 |
+
$this->set_context( $context );
|
177 |
+
$this->set_location( $location );
|
178 |
+
$this->set_query_context( $query_context );
|
179 |
|
180 |
return true;
|
181 |
}
|
includes/core/class-wds-importer.php
CHANGED
@@ -1,10 +1,41 @@
|
|
1 |
<?php
|
2 |
|
3 |
abstract class Smartcrawl_Importer {
|
|
|
|
|
4 |
abstract public function data_exists();
|
5 |
|
6 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
$processed_sites = $this->get_processed_sites_count();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
$next_site = $this->get_next_site_to_process();
|
9 |
if ( ! $next_site ) {
|
10 |
$this->reset_network_import_flag();
|
@@ -13,7 +44,7 @@ abstract class Smartcrawl_Importer {
|
|
13 |
}
|
14 |
|
15 |
switch_to_blog( $next_site );
|
16 |
-
$site_import_complete = $this->import();
|
17 |
switch_to_blog( get_main_site_id() );
|
18 |
|
19 |
if ( $site_import_complete ) {
|
@@ -23,6 +54,18 @@ abstract class Smartcrawl_Importer {
|
|
23 |
$this->turn_sitewide_mode_off();
|
24 |
}
|
25 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
private function get_processed_sites_count() {
|
27 |
return (int) get_site_option( $this->get_next_network_site_option_id(), 0 );
|
28 |
}
|
@@ -44,16 +87,37 @@ abstract class Smartcrawl_Importer {
|
|
44 |
delete_site_option( $this->get_next_network_site_option_id() );
|
45 |
}
|
46 |
|
47 |
-
public function import( $
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
if ( ! $this->is_import_in_progress() || $force_restart ) {
|
49 |
$this->set_import_flag();
|
50 |
-
$
|
51 |
-
|
52 |
-
|
53 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
54 |
}
|
55 |
|
56 |
-
|
|
|
57 |
if ( $complete ) {
|
58 |
$this->reset_import_flag();
|
59 |
}
|
@@ -78,6 +142,10 @@ abstract class Smartcrawl_Importer {
|
|
78 |
$wpdb->query( "DELETE FROM {$wpdb->options} WHERE option_name LIKE '%wds-sitemap%'" );
|
79 |
}
|
80 |
|
|
|
|
|
|
|
|
|
81 |
abstract public function import_options();
|
82 |
|
83 |
abstract public function import_taxonomy_meta();
|
@@ -119,10 +187,10 @@ abstract class Smartcrawl_Importer {
|
|
119 |
return $wpdb->get_col( $meta_query ); // phpcs:ignore -- Preparation difficult due to % escaping and complex IN clause
|
120 |
}
|
121 |
|
122 |
-
|
123 |
global $wpdb;
|
124 |
|
125 |
-
return $wpdb->get_col( "SELECT post_id FROM {$wpdb->postmeta} WHERE meta_key LIKE '_wds_%' GROUP BY post_id" );
|
126 |
}
|
127 |
|
128 |
protected function load_mapping_file( $file ) {
|
1 |
<?php
|
2 |
|
3 |
abstract class Smartcrawl_Importer {
|
4 |
+
private $status = null;
|
5 |
+
|
6 |
abstract public function data_exists();
|
7 |
|
8 |
+
abstract protected function get_source_plugins();
|
9 |
+
|
10 |
+
public function get_active_source_plugin() {
|
11 |
+
$source_plugin = $this->get_source_plugins();
|
12 |
+
foreach ( $source_plugin as $plugin ) {
|
13 |
+
if ( is_plugin_active( $plugin ) ) {
|
14 |
+
return $plugin;
|
15 |
+
}
|
16 |
+
}
|
17 |
+
|
18 |
+
return false;
|
19 |
+
}
|
20 |
+
|
21 |
+
public function get_deactivation_link() {
|
22 |
+
$active_plugin = $this->get_active_source_plugin();
|
23 |
+
if ( ! $active_plugin ) {
|
24 |
+
return false;
|
25 |
+
}
|
26 |
+
|
27 |
+
return wp_nonce_url( 'plugins.php?action=deactivate&plugin=' . $active_plugin . '&plugin_status=all', 'deactivate-plugin_' . $active_plugin );
|
28 |
+
}
|
29 |
+
|
30 |
+
public function import_for_all_sites( $options = array() ) {
|
31 |
$processed_sites = $this->get_processed_sites_count();
|
32 |
+
$this->update_status( array(
|
33 |
+
'total_sites' => get_sites( array(
|
34 |
+
'count' => true,
|
35 |
+
'number' => PHP_INT_MAX,
|
36 |
+
) ),
|
37 |
+
'completed_sites' => $processed_sites,
|
38 |
+
) );
|
39 |
$next_site = $this->get_next_site_to_process();
|
40 |
if ( ! $next_site ) {
|
41 |
$this->reset_network_import_flag();
|
44 |
}
|
45 |
|
46 |
switch_to_blog( $next_site );
|
47 |
+
$site_import_complete = $this->import( $options );
|
48 |
switch_to_blog( get_main_site_id() );
|
49 |
|
50 |
if ( $site_import_complete ) {
|
54 |
$this->turn_sitewide_mode_off();
|
55 |
}
|
56 |
|
57 |
+
public function get_status() {
|
58 |
+
return empty( $this->status ) ? array() : $this->status;
|
59 |
+
}
|
60 |
+
|
61 |
+
protected function set_status( $status ) {
|
62 |
+
$this->status = $status;
|
63 |
+
}
|
64 |
+
|
65 |
+
protected function update_status( $status ) {
|
66 |
+
$this->status = wp_parse_args( $status, $this->get_status() );
|
67 |
+
}
|
68 |
+
|
69 |
private function get_processed_sites_count() {
|
70 |
return (int) get_site_option( $this->get_next_network_site_option_id(), 0 );
|
71 |
}
|
87 |
delete_site_option( $this->get_next_network_site_option_id() );
|
88 |
}
|
89 |
|
90 |
+
public function import( $options = array() ) {
|
91 |
+
$options = wp_parse_args( $options, array(
|
92 |
+
'import-options' => true,
|
93 |
+
'import-term-meta' => true,
|
94 |
+
'import-post-meta' => true,
|
95 |
+
'force-restart' => false,
|
96 |
+
'keep-existing-post-meta' => false,
|
97 |
+
) );
|
98 |
+
$import_options = (boolean) smartcrawl_get_array_value( $options, 'import-options' );
|
99 |
+
$import_term_meta = (boolean) smartcrawl_get_array_value( $options, 'import-term-meta' );
|
100 |
+
$import_post_meta = (boolean) smartcrawl_get_array_value( $options, 'import-post-meta' );
|
101 |
+
$force_restart = (boolean) smartcrawl_get_array_value( $options, 'force-restart' );
|
102 |
+
$keep_post_meta = (boolean) smartcrawl_get_array_value( $options, 'keep-existing-post-meta' );
|
103 |
+
|
104 |
if ( ! $this->is_import_in_progress() || $force_restart ) {
|
105 |
$this->set_import_flag();
|
106 |
+
if ( $import_options ) {
|
107 |
+
$this->remove_existing_wds_options();
|
108 |
+
$this->import_options();
|
109 |
+
}
|
110 |
+
if ( $import_term_meta ) {
|
111 |
+
$this->remove_existing_wds_taxonomy_meta();
|
112 |
+
$this->import_taxonomy_meta();
|
113 |
+
}
|
114 |
+
if ( $import_post_meta && ! $keep_post_meta ) {
|
115 |
+
$this->remove_existing_wds_post_meta();
|
116 |
+
}
|
117 |
}
|
118 |
|
119 |
+
// If post meta doesn't need to be imported then we're done.
|
120 |
+
$complete = $import_post_meta ? $this->import_post_meta() : true;
|
121 |
if ( $complete ) {
|
122 |
$this->reset_import_flag();
|
123 |
}
|
142 |
$wpdb->query( "DELETE FROM {$wpdb->options} WHERE option_name LIKE '%wds-sitemap%'" );
|
143 |
}
|
144 |
|
145 |
+
private function remove_existing_wds_taxonomy_meta() {
|
146 |
+
delete_option( 'wds_taxonomy_meta' );
|
147 |
+
}
|
148 |
+
|
149 |
abstract public function import_options();
|
150 |
|
151 |
abstract public function import_taxonomy_meta();
|
187 |
return $wpdb->get_col( $meta_query ); // phpcs:ignore -- Preparation difficult due to % escaping and complex IN clause
|
188 |
}
|
189 |
|
190 |
+
protected function get_posts_with_target_metas() {
|
191 |
global $wpdb;
|
192 |
|
193 |
+
return $wpdb->get_col( "SELECT post_id FROM {$wpdb->postmeta} WHERE meta_key LIKE '_wds_%' AND meta_key NOT IN ('_wds_analysis','_wds_readability') GROUP BY post_id" );
|
194 |
}
|
195 |
|
196 |
protected function load_mapping_file( $file ) {
|
includes/core/class-wds-opengraph-value-helper.php
ADDED
@@ -0,0 +1,169 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Smartcrawl_OpenGraph_Value_Helper extends Smartcrawl_Type_Traverser {
|
4 |
+
|
5 |
+
private $title = '';
|
6 |
+
private $description = '';
|
7 |
+
private $images = array();
|
8 |
+
private $enabled = false;
|
9 |
+
|
10 |
+
public function __construct() {
|
11 |
+
$this->traverse();
|
12 |
+
}
|
13 |
+
|
14 |
+
public function get_title() {
|
15 |
+
return $this->title;
|
16 |
+
}
|
17 |
+
|
18 |
+
public function get_description() {
|
19 |
+
return $this->description;
|
20 |
+
}
|
21 |
+
|
22 |
+
public function get_images() {
|
23 |
+
return array_unique( array_map( 'trim', $this->images ) );
|
24 |
+
}
|
25 |
+
|
26 |
+
public function is_enabled() {
|
27 |
+
return $this->enabled;
|
28 |
+
}
|
29 |
+
|
30 |
+
private function get_options() {
|
31 |
+
return Smartcrawl_Settings::get_options();
|
32 |
+
}
|
33 |
+
|
34 |
+
private function from_options( $location ) {
|
35 |
+
$options = $this->get_options();
|
36 |
+
|
37 |
+
$title = smartcrawl_get_array_value( $options, 'og-title-' . $location );
|
38 |
+
$description = smartcrawl_get_array_value( $options, 'og-description-' . $location );
|
39 |
+
$images = smartcrawl_get_array_value( $options, 'og-images-' . $location );
|
40 |
+
$enabled = smartcrawl_get_array_value( $options, 'og-active-' . $location );
|
41 |
+
|
42 |
+
$title = smartcrawl_replace_vars( wp_strip_all_tags( strval( $title ) ), $this->get_queried_object() );
|
43 |
+
$description = smartcrawl_replace_vars( wp_strip_all_tags( strval( $description ) ), $this->get_queried_object() );
|
44 |
+
|
45 |
+
$this->title = empty( $title ) ? Smartcrawl_OnPage::get()->get_title() : $title;
|
46 |
+
$this->description = empty( $description ) ? Smartcrawl_OnPage::get()->get_description() : $description;
|
47 |
+
$this->images = is_array( $images ) ? $images : array();
|
48 |
+
$this->enabled = (bool) $enabled;
|
49 |
+
}
|
50 |
+
|
51 |
+
private function from_post_meta( $post ) {
|
52 |
+
$post_meta = smartcrawl_get_value( 'opengraph', $post->ID );
|
53 |
+
$title = smartcrawl_get_array_value( $post_meta, 'title' );
|
54 |
+
$description = smartcrawl_get_array_value( $post_meta, 'description' );
|
55 |
+
$images = smartcrawl_get_array_value( $post_meta, 'images' );
|
56 |
+
$disabled = smartcrawl_get_array_value( $post_meta, 'disabled' );
|
57 |
+
|
58 |
+
if ( ! empty( $title ) ) {
|
59 |
+
$this->title = $title;
|
60 |
+
}
|
61 |
+
if ( ! empty( $description ) ) {
|
62 |
+
$this->description = $description;
|
63 |
+
}
|
64 |
+
if ( is_array( $images ) && ! empty( $images ) ) {
|
65 |
+
$this->images = $images;
|
66 |
+
}
|
67 |
+
|
68 |
+
// Add featured image as the last resort
|
69 |
+
if ( has_post_thumbnail( $post ) ) {
|
70 |
+
$this->images[] = get_the_post_thumbnail_url($post);
|
71 |
+
}
|
72 |
+
|
73 |
+
$this->enabled = ! $disabled;
|
74 |
+
}
|
75 |
+
|
76 |
+
private function from_term_meta( $term ) {
|
77 |
+
$term_meta = smartcrawl_get_term_meta( $term, $term->taxonomy, 'opengraph' );
|
78 |
+
$title = smartcrawl_get_array_value( $term_meta, 'title' );
|
79 |
+
$description = smartcrawl_get_array_value( $term_meta, 'description' );
|
80 |
+
$images = smartcrawl_get_array_value( $term_meta, 'images' );
|
81 |
+
$disabled = smartcrawl_get_array_value( $term_meta, 'disabled' );
|
82 |
+
|
83 |
+
if ( ! empty( $title ) ) {
|
84 |
+
$this->title = $title;
|
85 |
+
}
|
86 |
+
if ( ! empty( $description ) ) {
|
87 |
+
$this->description = $description;
|
88 |
+
}
|
89 |
+
if ( is_array( $images ) && ! empty( $images ) ) {
|
90 |
+
$this->images = $images;
|
91 |
+
}
|
92 |
+
$this->enabled = ! $disabled;
|
93 |
+
}
|
94 |
+
|
95 |
+
public function handle_bp_groups() {
|
96 |
+
// TODO: Implement handle_bp_groups() method.
|
97 |
+
}
|
98 |
+
|
99 |
+
public function handle_bp_profile() {
|
100 |
+
// TODO: Implement handle_bp_profile() method.
|
101 |
+
}
|
102 |
+
|
103 |
+
public function handle_woo_shop() {
|
104 |
+
$this->handle_singular( wc_get_page_id( 'shop' ) );
|
105 |
+
}
|
106 |
+
|
107 |
+
public function handle_blog_home() {
|
108 |
+
$this->from_options( 'home' );
|
109 |
+
}
|
110 |
+
|
111 |
+
public function handle_static_home() {
|
112 |
+
$this->handle_singular( get_option( 'page_for_posts' ) );
|
113 |
+
}
|
114 |
+
|
115 |
+
public function handle_search() {
|
116 |
+
$this->from_options( 'search' );
|
117 |
+
}
|
118 |
+
|
119 |
+
public function handle_404() {
|
120 |
+
// No OG for 404 page
|
121 |
+
}
|
122 |
+
|
123 |
+
public function handle_date_archive() {
|
124 |
+
$this->from_options( 'date' );
|
125 |
+
}
|
126 |
+
|
127 |
+
public function handle_pt_archive() {
|
128 |
+
$post_type = $this->get_queried_object();
|
129 |
+
if ( is_a( $post_type, 'WP_Post_Type' ) ) {
|
130 |
+
$location = Smartcrawl_Onpage_Settings::PT_ARCHIVE_PREFIX . $post_type->name;
|
131 |
+
$this->from_options( $location );
|
132 |
+
}
|
133 |
+
}
|
134 |
+
|
135 |
+
public function handle_tax_archive() {
|
136 |
+
$term = $this->get_queried_object();
|
137 |
+
if ( is_a( $term, 'WP_Term' ) ) {
|
138 |
+
$this->from_options( $term->taxonomy );
|
139 |
+
|
140 |
+
if ( $this->enabled ) {
|
141 |
+
// Now apply any overrides from the term taxonomy
|
142 |
+
$this->from_term_meta( $term );
|
143 |
+
}
|
144 |
+
}
|
145 |
+
}
|
146 |
+
|
147 |
+
public function handle_author_archive() {
|
148 |
+
$this->from_options( 'author' );
|
149 |
+
}
|
150 |
+
|
151 |
+
public function handle_archive() {
|
152 |
+
// TODO: Implement handle_archive() method.
|
153 |
+
}
|
154 |
+
|
155 |
+
public function handle_singular( $post_id = 0 ) {
|
156 |
+
$post = $post_id ? get_post( $post_id ) : null;
|
157 |
+
if ( ! $post ) {
|
158 |
+
$post = $this->get_context();
|
159 |
+
}
|
160 |
+
if ( is_a( $post, 'WP_Post' ) ) {
|
161 |
+
$this->from_options( $post->post_type );
|
162 |
+
|
163 |
+
if ( $this->enabled ) {
|
164 |
+
// Now apply any overrides from the individual post's meta
|
165 |
+
$this->from_post_meta( $post );
|
166 |
+
}
|
167 |
+
}
|
168 |
+
}
|
169 |
+
}
|
includes/core/class-wds-replacement-helper.php
ADDED
@@ -0,0 +1,425 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Smartcrawl_Replacement_Helper extends Smartcrawl_Type_Traverser {
|
4 |
+
|
5 |
+
private $specific_replacements;
|
6 |
+
private $bp_data;
|
7 |
+
private $subject;
|
8 |
+
|
9 |
+
/**
|
10 |
+
* Singleton instance
|
11 |
+
*
|
12 |
+
* @var Smartcrawl_Replacement_Helper
|
13 |
+
*/
|
14 |
+
private static $_instance;
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Constructor
|
18 |
+
*/
|
19 |
+
private function __construct() {
|
20 |
+
}
|
21 |
+
|
22 |
+
/**
|
23 |
+
* Singleton instance getter
|
24 |
+
*
|
25 |
+
* @return Smartcrawl_Replacement_Helper instance
|
26 |
+
*/
|
27 |
+
private static function get() {
|
28 |
+
if ( empty( self::$_instance ) ) {
|
29 |
+
self::$_instance = new self();
|
30 |
+
}
|
31 |
+
|
32 |
+
return self::$_instance;
|
33 |
+
}
|
34 |
+
|
35 |
+
public static function replace( $subject, $context_object = null ) {
|
36 |
+
if ( ! is_string( $subject ) ) {
|
37 |
+
return $subject;
|
38 |
+
}
|
39 |
+
|
40 |
+
$instance = self::get();
|
41 |
+
$instance->subject = $subject;
|
42 |
+
$resolver = $instance->get_resolver();
|
43 |
+
|
44 |
+
if ( $context_object ) {
|
45 |
+
if ( $instance->is_post_object( $context_object ) ) {
|
46 |
+
$resolver->simulate_post( $context_object );
|
47 |
+
} elseif ( $instance->is_term_object( $context_object ) ) {
|
48 |
+
$resolver->simulate_taxonomy_term( $context_object );
|
49 |
+
} elseif ( $instance->is_post_type_object( $context_object ) ) {
|
50 |
+
$resolver->simulate_post_type( $context_object );
|
51 |
+
}
|
52 |
+
}
|
53 |
+
|
54 |
+
$instance->traverse();
|
55 |
+
$replacements = array_merge(
|
56 |
+
$instance->get_general_replacements(),
|
57 |
+
$instance->get_specific_replacements()
|
58 |
+
);
|
59 |
+
|
60 |
+
foreach ( $replacements as $macro => $replacement ) {
|
61 |
+
$subject = str_replace( $macro, $instance->process_replacement_value( $replacement ), $subject );
|
62 |
+
}
|
63 |
+
|
64 |
+
if ( $context_object ) {
|
65 |
+
$resolver->stop_simulation();
|
66 |
+
}
|
67 |
+
|
68 |
+
return preg_replace( '/%%[a-zA-Z_]*%%/', '', $subject );
|
69 |
+
}
|
70 |
+
|
71 |
+
public static function get_dynamic_replacements( $subject, $context_object ) {
|
72 |
+
if ( ! is_string( $subject ) ) {
|
73 |
+
return array();
|
74 |
+
}
|
75 |
+
$instance = self::get();
|
76 |
+
|
77 |
+
return $instance->find_dynamic_replacements( $subject, $context_object );
|
78 |
+
}
|
79 |
+
|
80 |
+
private function is_post_type_object( $object ) {
|
81 |
+
return is_a( $object, 'WP_Post_Type' );
|
82 |
+
}
|
83 |
+
|
84 |
+
private function is_term_object( $context_object ) {
|
85 |
+
return is_a( $context_object, 'WP_Term' );
|
86 |
+
}
|
87 |
+
|
88 |
+
private function is_post_object( $context_object ) {
|
89 |
+
return is_a( $context_object, 'WP_Post' );
|
90 |
+
}
|
91 |
+
|
92 |
+
private function process_replacement_value( $replacement ) {
|
93 |
+
return wp_strip_all_tags( $replacement );
|
94 |
+
}
|
95 |
+
|
96 |
+
public function get_bp_data() {
|
97 |
+
if ( empty( $this->bp_data ) && function_exists( 'buddypress' ) ) {
|
98 |
+
$this->bp_data = buddypress();
|
99 |
+
}
|
100 |
+
|
101 |
+
return $this->bp_data;
|
102 |
+
}
|
103 |
+
|
104 |
+
public function set_bp_data( $bp_data ) {
|
105 |
+
$this->bp_data = $bp_data;
|
106 |
+
}
|
107 |
+
|
108 |
+
private function get_specific_replacements() {
|
109 |
+
return empty( $this->specific_replacements ) ? array() : $this->specific_replacements;
|
110 |
+
}
|
111 |
+
|
112 |
+
private function get_general_replacements() {
|
113 |
+
$query = $this->get_query_context();
|
114 |
+
$paged = intval( $query->get( 'paged' ) );
|
115 |
+
$max_num_pages = isset( $query->max_num_pages ) ? $query->max_num_pages : 1;
|
116 |
+
$page_x_of_y = esc_html__( 'Page %1$s of %2$s' );
|
117 |
+
$smartcrawl_options = Smartcrawl_Settings::get_options();
|
118 |
+
$preset_sep = ! empty( $smartcrawl_options['preset-separator'] ) ? $smartcrawl_options['preset-separator'] : 'pipe';
|
119 |
+
$separator = ! empty( $smartcrawl_options['separator'] ) ? $smartcrawl_options['separator'] : smartcrawl_get_separators( $preset_sep );
|
120 |
+
$pagenum = $paged;
|
121 |
+
if ( 0 === $pagenum ) {
|
122 |
+
$pagenum = $max_num_pages > 1 ? 1 : '';
|
123 |
+
}
|
124 |
+
|
125 |
+
return array(
|
126 |
+
'%%sitename%%' => get_bloginfo( 'name' ),
|
127 |
+
'%%sitedesc%%' => get_bloginfo( 'description' ),
|
128 |
+
'%%page%%' => $paged !== 0 ? sprintf( $page_x_of_y, $paged, $max_num_pages ) : '',
|
129 |
+
'%%spell_page%%' => $paged !== 0 ? sprintf( $page_x_of_y, smartcrawl_spell_number( $paged ), smartcrawl_spell_number( $max_num_pages ) ) : '',
|
130 |
+
'%%pagetotal%%' => $max_num_pages > 1 ? $max_num_pages : '',
|
131 |
+
'%%spell_pagetotal%%' => $max_num_pages > 1 ? smartcrawl_spell_number( $max_num_pages ) : '',
|
132 |
+
'%%pagenumber%%' => empty( $pagenum ) ? '' : $pagenum,
|
133 |
+
'%%spell_pagenumber%%' => empty( $pagenum ) ? '' : smartcrawl_spell_number( $pagenum ),
|
134 |
+
'%%currenttime%%' => date_i18n( get_option( 'time_format' ) ),
|
135 |
+
'%%currentdate%%' => date_i18n( get_option( 'date_format' ) ),
|
136 |
+
'%%currentmonth%%' => date_i18n( 'F' ),
|
137 |
+
'%%currentyear%%' => date_i18n( 'Y' ),
|
138 |
+
'%%sep%%' => $separator,
|
139 |
+
);
|
140 |
+
}
|
141 |
+
|
142 |
+
public function handle_bp_groups() {
|
143 |
+
$bp = $this->get_bp_data();
|
144 |
+
$current_group = empty( $bp->groups->current_group ) ? null : $bp->groups->current_group;
|
145 |
+
|
146 |
+
$this->specific_replacements = array(
|
147 |
+
'%%bp_group_name%%' => $current_group ? $current_group->name : '',
|
148 |
+
'%%bp_group_description%%' => $current_group ? $current_group->description : '',
|
149 |
+
);
|
150 |
+
}
|
151 |
+
|
152 |
+
public function handle_bp_profile() {
|
153 |
+
$bp_active = function_exists( 'buddypress' );
|
154 |
+
|
155 |
+
$this->specific_replacements = array(
|
156 |
+
'%%bp_user_username%%' => $bp_active ? bp_get_displayed_user_username() : '',
|
157 |
+
'%%bp_user_full_name%%' => $bp_active ? bp_get_displayed_user_fullname() : '',
|
158 |
+
);
|
159 |
+
}
|
160 |
+
|
161 |
+
public function handle_woo_shop() {
|
162 |
+
// TODO: Implement handle_woo_shop() method.
|
163 |
+
}
|
164 |
+
|
165 |
+
public function handle_blog_home() {
|
166 |
+
// No context specific values available on blog index page
|
167 |
+
}
|
168 |
+
|
169 |
+
public function handle_static_home() {
|
170 |
+
$this->handle_singular();
|
171 |
+
}
|
172 |
+
|
173 |
+
public function handle_search() {
|
174 |
+
$query = $this->get_query_context();
|
175 |
+
|
176 |
+
$this->specific_replacements = array(
|
177 |
+
'%%searchphrase%%' => esc_html( $query->get( 's' ) ),
|
178 |
+
);
|
179 |
+
}
|
180 |
+
|
181 |
+
public function handle_404() {
|
182 |
+
// No context specific values available on the 404 page
|
183 |
+
}
|
184 |
+
|
185 |
+
public function handle_date_archive() {
|
186 |
+
$this->specific_replacements = array(
|
187 |
+
'%%date%%' => $this->get_date_for_archive(),
|
188 |
+
);
|
189 |
+
}
|
190 |
+
|
191 |
+
public function handle_pt_archive() {
|
192 |
+
$post_type = $this->get_queried_object();
|
193 |
+
$is_pt_archive = $this->is_post_type_object( $post_type );
|
194 |
+
|
195 |
+
$this->specific_replacements = array(
|
196 |
+
'%%pt_plural%%' => $is_pt_archive ? $post_type->labels->name : '',
|
197 |
+
'%%pt_single%%' => $is_pt_archive ? $post_type->labels->singular_name : '',
|
198 |
+
);
|
199 |
+
}
|
200 |
+
|
201 |
+
public function handle_tax_archive() {
|
202 |
+
$term = $this->get_queried_object();
|
203 |
+
$term_data = $this->is_term_object( $term ) ? (array) $term : array();
|
204 |
+
$term_data = wp_parse_args( $term_data, $this->get_term_defaults() );
|
205 |
+
|
206 |
+
$this->specific_replacements = array(
|
207 |
+
'%%id%%' => $term_data['term_id'],
|
208 |
+
'%%term_title%%' => $term_data['name'],
|
209 |
+
'%%term_description%%' => $term_data['description'],
|
210 |
+
);
|
211 |
+
|
212 |
+
$custom_replacements = $this->find_dynamic_replacements( $this->subject, $term );
|
213 |
+
$this->specific_replacements = wp_parse_args( $this->specific_replacements, $custom_replacements );
|
214 |
+
|
215 |
+
if ( $term_data['taxonomy'] === 'category' ) {
|
216 |
+
$this->specific_replacements['%%category%%'] = $term_data['name'];
|
217 |
+
$this->specific_replacements['%%category_description%%'] = $term_data['description'];
|
218 |
+
} elseif ( $term_data['taxonomy'] === 'post_tag' ) {
|
219 |
+
$this->specific_replacements['%%tag%%'] = $term_data['name'];
|
220 |
+
$this->specific_replacements['%%tag_description%%'] = $term_data['description'];
|
221 |
+
}
|
222 |
+
}
|
223 |
+
|
224 |
+
public function handle_author_archive() {
|
225 |
+
$query = $this->get_query_context();
|
226 |
+
$user_id = $query->get( 'author' );
|
227 |
+
|
228 |
+
$this->specific_replacements = array(
|
229 |
+
'%%name%%' => empty( $user_id ) ? '' : get_the_author_meta( 'display_name', $user_id ),
|
230 |
+
'%%userid%%' => (string) $user_id,
|
231 |
+
);
|
232 |
+
}
|
233 |
+
|
234 |
+
public function handle_archive() {
|
235 |
+
// No context specific values available on the archive page
|
236 |
+
}
|
237 |
+
|
238 |
+
public function handle_singular() {
|
239 |
+
$post = $this->get_context();
|
240 |
+
$post_data = $this->is_post_object( $post ) ? (array) $post : array();
|
241 |
+
$post_data = wp_parse_args( $post_data, $this->get_post_defaults() );
|
242 |
+
|
243 |
+
$this->specific_replacements = array(
|
244 |
+
'%%date%%' => mysql2date( get_option( 'date_format' ), $post_data['post_date'] ),
|
245 |
+
'%%excerpt%%' => smartcrawl_get_trimmed_excerpt( $post_data['post_excerpt'], $post_data['post_content'] ),
|
246 |
+
'%%excerpt_only%%' => $post_data['post_excerpt'],
|
247 |
+
'%%id%%' => $post_data['ID'],
|
248 |
+
'%%modified%%' => $post_data['post_modified'],
|
249 |
+
'%%name%%' => empty( $post_data['post_author'] ) ? '' : get_the_author_meta( 'display_name', $post_data['post_author'] ),
|
250 |
+
'%%title%%' => $post_data['post_title'],
|
251 |
+
'%%userid%%' => $post_data['post_author'],
|
252 |
+
);
|
253 |
+
|
254 |
+
$custom_replacements = $this->find_dynamic_replacements( $this->subject, $post );
|
255 |
+
$this->specific_replacements = wp_parse_args( $this->specific_replacements, $custom_replacements );
|
256 |
+
|
257 |
+
if ( $post_data['post_type'] === 'attachment' ) {
|
258 |
+
$this->specific_replacements['%%caption%%'] = $post_data['post_excerpt'];
|
259 |
+
} elseif ( $post_data['post_type'] === 'post' ) {
|
260 |
+
$this->specific_replacements['%%category%%'] = get_the_category_list( ', ', '', $post_data['ID'] );
|
261 |
+
}
|
262 |
+
}
|
263 |
+
|
264 |
+
private function get_hierarchical_terms_for_post_type( $post ) {
|
265 |
+
$custom_taxonomy = $this->get_post_type_taxonomy( $post );
|
266 |
+
if ( $custom_taxonomy ) {
|
267 |
+
$terms = wp_get_post_terms( $post->ID, $custom_taxonomy, array( 'fields' => 'names' ) );
|
268 |
+
if ( ! is_wp_error( $terms ) ) {
|
269 |
+
return implode( ', ', $terms );
|
270 |
+
}
|
271 |
+
}
|
272 |
+
|
273 |
+
return '';
|
274 |
+
}
|
275 |
+
|
276 |
+
private function get_post_type_taxonomy( $post ) {
|
277 |
+
$taxonomies = get_object_taxonomies( $post );
|
278 |
+
|
279 |
+
return empty( $taxonomies ) ? '' : array_shift( $taxonomies );
|
280 |
+
}
|
281 |
+
|
282 |
+
private function get_post_defaults() {
|
283 |
+
return array(
|
284 |
+
'ID' => '',
|
285 |
+
'post_author' => '',
|
286 |
+
'post_name' => '',
|
287 |
+
'post_type' => '',
|
288 |
+
'post_title' => '',
|
289 |
+
'post_date' => '',
|
290 |
+
'post_date_gmt' => '',
|
291 |
+
'post_content' => '',
|
292 |
+
'post_excerpt' => '',
|
293 |
+
'post_status' => '',
|
294 |
+
'comment_status' => '',
|
295 |
+
'ping_status' => '',
|
296 |
+
'post_password' => '',
|
297 |
+
'post_parent' => '',
|
298 |
+
'post_modified' => '',
|
299 |
+
'post_modified_gmt' => '',
|
300 |
+
'comment_count' => '',
|
301 |
+
'menu_order' => '',
|
302 |
+
);
|
303 |
+
}
|
304 |
+
|
305 |
+
private function get_term_defaults() {
|
306 |
+
return array(
|
307 |
+
'name' => '',
|
308 |
+
'term_taxonomy_id' => '',
|
309 |
+
'count' => '',
|
310 |
+
'description' => '',
|
311 |
+
'term_id' => '',
|
312 |
+
'taxonomy' => '',
|
313 |
+
'term_group' => '',
|
314 |
+
'slug' => '',
|
315 |
+
);
|
316 |
+
}
|
317 |
+
|
318 |
+
private function get_date_for_archive() {
|
319 |
+
$query = $this->get_query_context();
|
320 |
+
$day = $query->get( 'day' );
|
321 |
+
$month = $query->get( 'monthnum' );
|
322 |
+
$year = $query->get( 'year' );
|
323 |
+
$format = '';
|
324 |
+
if ( empty( $year ) ) {
|
325 |
+
// At the very least we need an year
|
326 |
+
return '';
|
327 |
+
}
|
328 |
+
$timestamp = mktime( 0, 0, 0,
|
329 |
+
empty( $month ) ? 1 : $month,
|
330 |
+
empty( $day ) ? 1 : $day,
|
331 |
+
$year
|
332 |
+
);
|
333 |
+
|
334 |
+
if ( ! empty( $day ) ) {
|
335 |
+
$format = get_option( 'date_format' );
|
336 |
+
} elseif ( ! empty( $month ) ) {
|
337 |
+
$format = 'F Y';
|
338 |
+
} elseif ( ! empty( $year ) ) {
|
339 |
+
$format = 'Y';
|
340 |
+
}
|
341 |
+
|
342 |
+
$date = date_i18n( $format, $timestamp );
|
343 |
+
|
344 |
+
return $date;
|
345 |
+
}
|
346 |
+
|
347 |
+
private function find_dynamic_replacements( $subject, $context_object ) {
|
348 |
+
$term_desc_replacements = $this->find_term_field_replacements( $subject, $context_object, 'ct_desc_', 'description' );
|
349 |
+
$subject = str_replace( array_keys( $term_desc_replacements ), '', $subject );
|
350 |
+
|
351 |
+
$term_name_replacements = $this->find_term_field_replacements( $subject, $context_object, 'ct_', 'name' );
|
352 |
+
$subject = str_replace( array_keys( $term_name_replacements ), '', $subject );
|
353 |
+
|
354 |
+
$meta_replacements = $this->find_meta_replacements( $subject, $context_object );
|
355 |
+
|
356 |
+
return array_merge( $term_desc_replacements, $term_name_replacements, $meta_replacements );
|
357 |
+
}
|
358 |
+
|
359 |
+
private function find_term_field_replacements( $subject, $context_object, $prefix, $term_field ) {
|
360 |
+
$pattern = "/(%%{$prefix}[a-z_]+%%)/";
|
361 |
+
$matches = array();
|
362 |
+
$replacements = array();
|
363 |
+
$match_result = preg_match_all( $pattern, $subject, $matches, PREG_PATTERN_ORDER );
|
364 |
+
if ( ! empty( $match_result ) ) {
|
365 |
+
$placeholders = array_shift( $matches );
|
366 |
+
foreach ( array_unique( $placeholders ) as $placeholder ) {
|
367 |
+
$taxonomy_name = str_replace( array( "%%$prefix", '%%' ), '', $placeholder );
|
368 |
+
|
369 |
+
$taxonomy = get_taxonomy( $taxonomy_name );
|
370 |
+
if ( empty( $taxonomy ) ) {
|
371 |
+
continue;
|
372 |
+
}
|
373 |
+
|
374 |
+
$terms = $this->get_linked_terms( $context_object, $taxonomy_name );
|
375 |
+
if ( ! empty( $terms ) ) {
|
376 |
+
$term = array_shift( $terms );
|
377 |
+
$replacements[ $placeholder ] = wp_strip_all_tags( get_term_field( $term_field, $term, $taxonomy_name ) );
|
378 |
+
}
|
379 |
+
}
|
380 |
+
}
|
381 |
+
|
382 |
+
return $replacements;
|
383 |
+
}
|
384 |
+
|
385 |
+
private function find_meta_replacements( $subject, $context_object ) {
|
386 |
+
$prefix = 'cf_';
|
387 |
+
$pattern = "/(%%{$prefix}[a-z_]+%%)/";
|
388 |
+
$matches = array();
|
389 |
+
$replacements = array();
|
390 |
+
$match_result = preg_match_all( $pattern, $subject, $matches, PREG_PATTERN_ORDER );
|
391 |
+
if ( ! empty( $match_result ) ) {
|
392 |
+
$placeholders = array_shift( $matches );
|
393 |
+
foreach ( array_unique( $placeholders ) as $placeholder ) {
|
394 |
+
$meta_key = str_replace( array( "%%$prefix", '%%' ), '', $placeholder );
|
395 |
+
|
396 |
+
$meta_value = $this->get_meta( $context_object, $meta_key );
|
397 |
+
if ( ! empty( $meta_value ) && ! is_array( $meta_value ) && ! is_object( $meta_value ) ) {
|
398 |
+
$replacements[ $placeholder ] = wp_strip_all_tags( $meta_value );
|
399 |
+
}
|
400 |
+
}
|
401 |
+
}
|
402 |
+
|
403 |
+
return $replacements;
|
404 |
+
}
|
405 |
+
|
406 |
+
private function get_meta( $context_object, $meta_key ) {
|
407 |
+
if ( $this->is_post_object( $context_object ) ) {
|
408 |
+
return get_post_meta( $context_object->ID, $meta_key, true );
|
409 |
+
} elseif ( $this->is_term_object( $context_object ) ) {
|
410 |
+
return get_term_meta( $context_object->term_id, $meta_key, true );
|
411 |
+
}
|
412 |
+
|
413 |
+
return array();
|
414 |
+
}
|
415 |
+
|
416 |
+
private function get_linked_terms( $context_object, $taxonomy_name ) {
|
417 |
+
if ( $this->is_post_object( $context_object ) ) {
|
418 |
+
return get_the_terms( $context_object->ID, $taxonomy_name );
|
419 |
+
} elseif ( $this->is_term_object( $context_object ) && $context_object->taxonomy === $taxonomy_name ) {
|
420 |
+
return array( $context_object );
|
421 |
+
}
|
422 |
+
|
423 |
+
return array();
|
424 |
+
}
|
425 |
+
}
|
includes/core/class-wds-robots-value-helper.php
CHANGED
@@ -59,7 +59,7 @@ class Smartcrawl_Robots_Value_Helper extends Smartcrawl_Type_Traverser {
|
|
59 |
}
|
60 |
|
61 |
public function handle_static_home() {
|
62 |
-
|
63 |
}
|
64 |
|
65 |
public function handle_search() {
|
@@ -170,7 +170,7 @@ class Smartcrawl_Robots_Value_Helper extends Smartcrawl_Type_Traverser {
|
|
170 |
|
171 |
public function handle_singular( $post_id = 0 ) {
|
172 |
if ( ! $post_id ) {
|
173 |
-
|
174 |
$post_id = $post->ID;
|
175 |
}
|
176 |
|
59 |
}
|
60 |
|
61 |
public function handle_static_home() {
|
62 |
+
$this->handle_singular( get_option( 'page_for_posts' ) );
|
63 |
}
|
64 |
|
65 |
public function handle_search() {
|
170 |
|
171 |
public function handle_singular( $post_id = 0 ) {
|
172 |
if ( ! $post_id ) {
|
173 |
+
$post = $this->get_context();
|
174 |
$post_id = $post->ID;
|
175 |
}
|
176 |
|
includes/core/class-wds-simple-renderer.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Smartcrawl_Simple_Renderer extends Smartcrawl_Renderable {
|
4 |
+
/**
|
5 |
+
* @var Smartcrawl_Simple_Renderer
|
6 |
+
*/
|
7 |
+
private static $_instance;
|
8 |
+
|
9 |
+
public static function get_instance() {
|
10 |
+
if ( empty( self::$_instance ) ) {
|
11 |
+
self::$_instance = new self();
|
12 |
+
}
|
13 |
+
|
14 |
+
return self::$_instance;
|
15 |
+
}
|
16 |
+
|
17 |
+
public static function render( $view, $args = array() ) {
|
18 |
+
$instance = self::get_instance();
|
19 |
+
$instance->_render( $view, $args );
|
20 |
+
}
|
21 |
+
|
22 |
+
public static function load( $view, $args = array() ) {
|
23 |
+
$instance = self::get_instance();
|
24 |
+
|
25 |
+
return $instance->_load( $view, $args );
|
26 |
+
}
|
27 |
+
|
28 |
+
protected function _get_view_defaults() {
|
29 |
+
return array();
|
30 |
+
}
|
31 |
+
}
|
includes/core/class-wds-type-traverser.php
CHANGED
@@ -60,10 +60,25 @@ abstract class Smartcrawl_Type_Traverser {
|
|
60 |
}
|
61 |
}
|
62 |
|
63 |
-
|
64 |
return Smartcrawl_Endpoint_Resolver::resolve();
|
65 |
}
|
66 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
67 |
abstract public function handle_bp_groups();
|
68 |
|
69 |
abstract public function handle_bp_profile();
|
60 |
}
|
61 |
}
|
62 |
|
63 |
+
protected function get_resolver() {
|
64 |
return Smartcrawl_Endpoint_Resolver::resolve();
|
65 |
}
|
66 |
|
67 |
+
protected function get_queried_object() {
|
68 |
+
$query_context = $this->get_resolver()->get_query_context();
|
69 |
+
$queried_object = $query_context->get_queried_object();
|
70 |
+
|
71 |
+
return $queried_object;
|
72 |
+
}
|
73 |
+
|
74 |
+
protected function get_query_context() {
|
75 |
+
return $this->get_resolver()->get_query_context();
|
76 |
+
}
|
77 |
+
|
78 |
+
protected function get_context() {
|
79 |
+
return $this->get_resolver()->get_context();
|
80 |
+
}
|
81 |
+
|
82 |
abstract public function handle_bp_groups();
|
83 |
|
84 |
abstract public function handle_bp_profile();
|
includes/core/class-wds-yoast-importer.php
CHANGED
@@ -21,7 +21,7 @@ class Smartcrawl_Yoast_Importer extends Smartcrawl_Importer {
|
|
21 |
return false;
|
22 |
}
|
23 |
|
24 |
-
return strpos( $version, '
|
25 |
}
|
26 |
|
27 |
public function import_options() {
|
@@ -356,6 +356,11 @@ class Smartcrawl_Yoast_Importer extends Smartcrawl_Importer {
|
|
356 |
$this->add_post_meta( $post_id, $wds_meta );
|
357 |
}
|
358 |
|
|
|
|
|
|
|
|
|
|
|
359 |
return count( $all_posts ) === count( $batch_posts );
|
360 |
}
|
361 |
|
@@ -422,4 +427,11 @@ class Smartcrawl_Yoast_Importer extends Smartcrawl_Importer {
|
|
422 |
protected function get_custom_handlers() {
|
423 |
return $this->custom_handlers;
|
424 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
425 |
}
|
21 |
return false;
|
22 |
}
|
23 |
|
24 |
+
return strpos( $version, '9.' ) === 0;
|
25 |
}
|
26 |
|
27 |
public function import_options() {
|
356 |
$this->add_post_meta( $post_id, $wds_meta );
|
357 |
}
|
358 |
|
359 |
+
$this->update_status( array(
|
360 |
+
'remaining_posts' => count( $this->get_posts_with_yoast_metas() ),
|
361 |
+
'completed_posts' => count( $this->get_posts_with_target_metas() ),
|
362 |
+
) );
|
363 |
+
|
364 |
return count( $all_posts ) === count( $batch_posts );
|
365 |
}
|
366 |
|
427 |
protected function get_custom_handlers() {
|
428 |
return $this->custom_handlers;
|
429 |
}
|
430 |
+
|
431 |
+
protected function get_source_plugins() {
|
432 |
+
return array(
|
433 |
+
'wordpress-seo/wp-seo.php',
|
434 |
+
'wordpress-seo-premium/wp-seo-premium.php',
|
435 |
+
);
|
436 |
+
}
|
437 |
}
|
includes/core/core.php
CHANGED
@@ -101,10 +101,10 @@ function smartcrawl_replace_vars( $string, $args = array() ) {
|
|
101 |
'%%name%%' => get_the_author_meta( 'display_name', ! empty( $r['post_author'] ) ? $r['post_author'] : get_query_var( 'author' ) ),
|
102 |
'%%userid%%' => ! empty( $r['post_author'] ) ? $r['post_author'] : get_query_var( 'author' ),
|
103 |
'%%searchphrase%%' => esc_html( get_query_var( 's' ) ),
|
104 |
-
'%%currenttime%%' =>
|
105 |
-
'%%currentdate%%' =>
|
106 |
-
'%%currentmonth%%' =>
|
107 |
-
'%%currentyear%%' =>
|
108 |
'%%page%%' => ( intval( get_query_var( 'paged' ) ) !== 0 ) ? 'Page ' . get_query_var( 'paged' ) . ' of ' . $wp_query->max_num_pages : '',
|
109 |
'%%spell_page%%' => ( intval( get_query_var( 'paged' ) ) !== 0 ) ? 'Page ' . smartcrawl_spell_number( get_query_var( 'paged' ) ) . ' of ' . smartcrawl_spell_number( $wp_query->max_num_pages ) : '',
|
110 |
'%%pagetotal%%' => ( $wp_query->max_num_pages > 1 ) ? $wp_query->max_num_pages : '',
|
@@ -121,7 +121,47 @@ function smartcrawl_replace_vars( $string, $args = array() ) {
|
|
121 |
'%%pt_single%%' => is_a( $args, 'WP_Post_Type' ) ? $args->labels->singular_name : '',
|
122 |
);
|
123 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
124 |
foreach ( $replacements as $var => $repl ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
125 |
$repl = apply_filters( 'wds-macro-variable_replacement', $repl, $var );
|
126 |
$string = str_replace( $var, $repl, $string );
|
127 |
}
|
@@ -202,7 +242,7 @@ function smartcrawl_get_seo_title( $post = false ) {
|
|
202 |
return smartcrawl_replace_vars( $smartcrawl_options[ 'title-' . $post->post_type ], (array) $post );
|
203 |
}
|
204 |
|
205 |
-
return
|
206 |
}
|
207 |
|
208 |
/**
|
@@ -356,10 +396,94 @@ function _wds_hb_convert_tri( $num, $tri ) {
|
|
356 |
*/
|
357 |
function smartcrawl_get_trimmed_excerpt( $excerpt, $contents ) {
|
358 |
$string = $excerpt ? $excerpt : $contents;
|
359 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
360 |
|
361 |
-
|
362 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
363 |
: $string;
|
364 |
}
|
365 |
|
@@ -389,6 +513,7 @@ function smartcrawl_get_term_meta( $term, $taxonomy, $meta ) {
|
|
389 |
function smartcrawl_blog_template_settings( $and ) {
|
390 |
// $and .= " AND `option_name` != 'wds_sitemaps_options'"; // Removed plural
|
391 |
$and .= " AND `option_name` != 'wds_sitemap_options'"; // Added singular
|
|
|
392 |
return $and;
|
393 |
}
|
394 |
|
@@ -581,6 +706,7 @@ add_filter( 'post_edit_form_tag', 'register_metabox_collapsed_state' );
|
|
581 |
* This applies only for multisite, non-sitewide setups.
|
582 |
*
|
583 |
* @param string $slug Slug to check.
|
|
|
584 |
* @TODO: This function is a duplicate of Smartcrawl_Settings_Admin.is_tab_allowed, make sure only one remains
|
585 |
*
|
586 |
* @return bool
|
@@ -925,24 +1051,11 @@ function smartcrawl_get_allowed_html_for_forms() {
|
|
925 |
}
|
926 |
|
927 |
function smartcrawl_file_get_contents( $file ) {
|
928 |
-
|
929 |
-
require_once ABSPATH . 'wp-admin/includes/file.php';
|
930 |
-
}
|
931 |
-
WP_Filesystem();
|
932 |
-
$file_system = new WP_Filesystem_Direct( null );
|
933 |
-
$contents = $file_system->get_contents( $file );
|
934 |
-
|
935 |
-
return $contents;
|
936 |
}
|
937 |
|
938 |
-
function smartcrawl_file_put_contents( $file, $contents, $
|
939 |
-
|
940 |
-
require_once ABSPATH . 'wp-admin/includes/file.php';
|
941 |
-
}
|
942 |
-
WP_Filesystem();
|
943 |
-
$file_system = new WP_Filesystem_Direct( null );
|
944 |
-
|
945 |
-
return $file_system->put_contents( $file, $contents, $mode );
|
946 |
}
|
947 |
|
948 |
/**
|
@@ -960,7 +1073,7 @@ function smartcrawl_get_latest_post_version( $post_id ) {
|
|
960 |
) );
|
961 |
if ( count( $post_revisions ) ) {
|
962 |
$revision = array_shift( $post_revisions );
|
963 |
-
if ( strtotime( $revision->post_modified ) > strtotime( $post->
|
964 |
return $revision;
|
965 |
}
|
966 |
}
|
@@ -976,9 +1089,13 @@ function smartcrawl_get_latest_post_version( $post_id ) {
|
|
976 |
* @return bool
|
977 |
*/
|
978 |
function smartcrawl_is_valid_meta_tag( $string ) {
|
979 |
-
$string = trim($string);
|
980 |
-
if (!preg_match('/^\<meta/i', $string))
|
981 |
-
|
|
|
|
|
|
|
|
|
982 |
|
983 |
return true;
|
984 |
}
|
101 |
'%%name%%' => get_the_author_meta( 'display_name', ! empty( $r['post_author'] ) ? $r['post_author'] : get_query_var( 'author' ) ),
|
102 |
'%%userid%%' => ! empty( $r['post_author'] ) ? $r['post_author'] : get_query_var( 'author' ),
|
103 |
'%%searchphrase%%' => esc_html( get_query_var( 's' ) ),
|
104 |
+
'%%currenttime%%' => date_i18n( get_option( 'time_format' ) ),
|
105 |
+
'%%currentdate%%' => date_i18n( get_option( 'date_format' ) ),
|
106 |
+
'%%currentmonth%%' => date_i18n( 'F' ),
|
107 |
+
'%%currentyear%%' => date_i18n( 'Y' ),
|
108 |
'%%page%%' => ( intval( get_query_var( 'paged' ) ) !== 0 ) ? 'Page ' . get_query_var( 'paged' ) . ' of ' . $wp_query->max_num_pages : '',
|
109 |
'%%spell_page%%' => ( intval( get_query_var( 'paged' ) ) !== 0 ) ? 'Page ' . smartcrawl_spell_number( get_query_var( 'paged' ) ) . ' of ' . smartcrawl_spell_number( $wp_query->max_num_pages ) : '',
|
110 |
'%%pagetotal%%' => ( $wp_query->max_num_pages > 1 ) ? $wp_query->max_num_pages : '',
|
121 |
'%%pt_single%%' => is_a( $args, 'WP_Post_Type' ) ? $args->labels->singular_name : '',
|
122 |
);
|
123 |
|
124 |
+
$replacements = array_combine(
|
125 |
+
apply_filters( 'wds-known_macros-keys', array_keys( $replacements ) ),
|
126 |
+
apply_filters( 'wds-known_macros-values', array_values( $replacements ) )
|
127 |
+
);
|
128 |
+
$replacements = apply_filters(
|
129 |
+
'wds-known_macros',
|
130 |
+
$replacements
|
131 |
+
);
|
132 |
+
|
133 |
+
$context_object = null;
|
134 |
+
if ( isset( $r['ID'] ) ) {
|
135 |
+
$post_object = get_post( $r['ID'] );
|
136 |
+
if ( is_a( $post_object, 'WP_Post' ) ) {
|
137 |
+
$context_object = $post_object;
|
138 |
+
}
|
139 |
+
}
|
140 |
+
if ( isset( $r['term_id'] ) ) {
|
141 |
+
$term_object = get_term( $r['term_id'] );
|
142 |
+
if ( is_a( $term_object, 'WP_Term' ) ) {
|
143 |
+
$context_object = $term_object;
|
144 |
+
}
|
145 |
+
}
|
146 |
+
if ( $context_object ) {
|
147 |
+
$dynamic_replacements = Smartcrawl_Replacement_Helper::get_dynamic_replacements(
|
148 |
+
$string,
|
149 |
+
$context_object
|
150 |
+
);
|
151 |
+
$replacements = array_merge(
|
152 |
+
$replacements,
|
153 |
+
empty( $dynamic_replacements ) || ! is_array( $dynamic_replacements ) ? array() : $dynamic_replacements
|
154 |
+
);
|
155 |
+
}
|
156 |
+
|
157 |
foreach ( $replacements as $var => $repl ) {
|
158 |
+
if ( ! is_scalar( $repl ) ) {
|
159 |
+
$repl_value = '';
|
160 |
+
if ( ! empty( $repl['callback'] ) && is_callable( $repl['callback'] ) ) {
|
161 |
+
$repl_value = call_user_func( $repl['callback'], $var, $r );
|
162 |
+
}
|
163 |
+
$repl = $repl_value;
|
164 |
+
}
|
165 |
$repl = apply_filters( 'wds-macro-variable_replacement', $repl, $var );
|
166 |
$string = str_replace( $var, $repl, $string );
|
167 |
}
|
242 |
return smartcrawl_replace_vars( $smartcrawl_options[ 'title-' . $post->post_type ], (array) $post );
|
243 |
}
|
244 |
|
245 |
+
return false;
|
246 |
}
|
247 |
|
248 |
/**
|
396 |
*/
|
397 |
function smartcrawl_get_trimmed_excerpt( $excerpt, $contents ) {
|
398 |
$string = $excerpt ? $excerpt : $contents;
|
399 |
+
// Remove shortcodes but keep the content
|
400 |
+
$string = smartcrawl_remove_shortcodes( $string );
|
401 |
+
// Strip all HTML tags
|
402 |
+
$string = wp_strip_all_tags( $string );
|
403 |
+
// Encode any HTML entities like > and <
|
404 |
+
$string = esc_attr( $string );
|
405 |
+
// Normalize whitespace
|
406 |
+
$string = smartcrawl_normalize_whitespace( $string );
|
407 |
+
|
408 |
+
return smartcrawl_truncate_meta_description( $string );
|
409 |
+
}
|
410 |
+
|
411 |
+
function smartcrawl_normalize_whitespace( $string ) {
|
412 |
+
// Replace whitespace characters with simple spaces
|
413 |
+
$string = str_replace( array( "\r", "\n", "\t" ), ' ', $string );
|
414 |
+
// Replace each set of multiple consecutive spaces with a single space
|
415 |
+
$string = preg_replace( '/[ ]+/', ' ', $string );
|
416 |
+
|
417 |
+
return trim( $string );
|
418 |
+
}
|
419 |
|
420 |
+
/**
|
421 |
+
* Removes the shortcode tags but keeps the content within them. Will convert [shortcode attr="val"]Some text![/shortcode] to: Some text!
|
422 |
+
* @see get_shortcode_regex()
|
423 |
+
*/
|
424 |
+
function smartcrawl_remove_shortcodes( $content ) {
|
425 |
+
$pattern = get_shortcode_regex();
|
426 |
+
return preg_replace_callback( "/$pattern/s", 'smartcrawl_extract_shortcode_contents', $content );
|
427 |
+
}
|
428 |
+
|
429 |
+
/**
|
430 |
+
* Our callback function for making get_shortcode_regex() replacements.
|
431 |
+
*
|
432 |
+
* @see get_shortcode_regex()
|
433 |
+
*
|
434 |
+
* @param $matches array This array contains data in the following format:
|
435 |
+
* array(
|
436 |
+
* 0 => full matched string
|
437 |
+
* 1 => the character [ for escaped shortcodes e.g. [[foo]]
|
438 |
+
* 2 => the actual shortcode tag
|
439 |
+
* 3 => shortcode attributes
|
440 |
+
* 4 => ?
|
441 |
+
* 5 => The content nested inside the opening and closing shortcode tags
|
442 |
+
* 6 => the character ] for escaped shortcodes
|
443 |
+
* );
|
444 |
+
*
|
445 |
+
* @return bool|mixed|string
|
446 |
+
*/
|
447 |
+
function smartcrawl_extract_shortcode_contents( $matches ) {
|
448 |
+
if ( empty( $matches ) || count( $matches ) < 7 ) {
|
449 |
+
// Not the expected regex for some reason. Try returning the full match or fall back to empty string.
|
450 |
+
return isset( $matches[0] ) ? $matches[0] : '';
|
451 |
+
}
|
452 |
+
|
453 |
+
// Allow [[foo]] syntax for escaping a tag.
|
454 |
+
if ( '[' === $matches[1] && ']' === $matches[6] ) {
|
455 |
+
// Return the whole matched string without the surrounding square brackets that were there for escaping
|
456 |
+
return substr( $matches[0], 1, - 1 );
|
457 |
+
}
|
458 |
+
|
459 |
+
$omitted = apply_filters( 'wds-omitted-shortcodes', array() );
|
460 |
+
if (
|
461 |
+
! empty( $matches[5] )
|
462 |
+
&& ! in_array( $matches[2], $omitted )
|
463 |
+
) {
|
464 |
+
// Call the removal method on the content nested in the current shortcode
|
465 |
+
// This will continue recursively until we have removed all shortcodes
|
466 |
+
return smartcrawl_remove_shortcodes( trim( $matches[5] ) . ' ' );
|
467 |
+
}
|
468 |
+
|
469 |
+
// Just remove the content-less, non-escaped shortcodes
|
470 |
+
return '';
|
471 |
+
}
|
472 |
+
|
473 |
+
function smartcrawl_truncate_meta_title( $string ) {
|
474 |
+
return smartcrawl_truncare_meta( $string, SMARTCRAWL_TITLE_LENGTH_CHAR_COUNT_LIMIT );
|
475 |
+
}
|
476 |
+
|
477 |
+
function smartcrawl_truncate_meta_description( $string ) {
|
478 |
+
return smartcrawl_truncare_meta( $string, SMARTCRAWL_METADESC_LENGTH_CHAR_COUNT_LIMIT );
|
479 |
+
}
|
480 |
+
|
481 |
+
function smartcrawl_truncare_meta( $string, $limit ) {
|
482 |
+
$pattern = sprintf( '/.{%d,}/um', $limit + 1 );
|
483 |
+
$replacement_pattern = sprintf( '/(.{0,%d}).*/um', $limit - 4 ); // -4 for 1 space plus ...
|
484 |
+
|
485 |
+
return ( preg_match( $pattern, $string ) )
|
486 |
+
? preg_replace( $replacement_pattern, '$1', $string ) . ' ...'
|
487 |
: $string;
|
488 |
}
|
489 |
|
513 |
function smartcrawl_blog_template_settings( $and ) {
|
514 |
// $and .= " AND `option_name` != 'wds_sitemaps_options'"; // Removed plural
|
515 |
$and .= " AND `option_name` != 'wds_sitemap_options'"; // Added singular
|
516 |
+
|
517 |
return $and;
|
518 |
}
|
519 |
|
706 |
* This applies only for multisite, non-sitewide setups.
|
707 |
*
|
708 |
* @param string $slug Slug to check.
|
709 |
+
*
|
710 |
* @TODO: This function is a duplicate of Smartcrawl_Settings_Admin.is_tab_allowed, make sure only one remains
|
711 |
*
|
712 |
* @return bool
|
1051 |
}
|
1052 |
|
1053 |
function smartcrawl_file_get_contents( $file ) {
|
1054 |
+
return file_get_contents( $file ); // phpcs:ignore -- WP_Filesystem doesn't work properly
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1055 |
}
|
1056 |
|
1057 |
+
function smartcrawl_file_put_contents( $file, $contents, $flags = 0 ) {
|
1058 |
+
return file_put_contents( $file, $contents, $flags ); // phpcs:ignore -- WP_Filesystem doesn't work properly
|
|
|
|
|
|
|
|
|
|
|
|
|
1059 |
}
|
1060 |
|
1061 |
/**
|
1073 |
) );
|
1074 |
if ( count( $post_revisions ) ) {
|
1075 |
$revision = array_shift( $post_revisions );
|
1076 |
+
if ( strtotime( $revision->post_modified ) > strtotime( $post->post_modified ) ) {
|
1077 |
return $revision;
|
1078 |
}
|
1079 |
}
|
1089 |
* @return bool
|
1090 |
*/
|
1091 |
function smartcrawl_is_valid_meta_tag( $string ) {
|
1092 |
+
$string = trim( $string );
|
1093 |
+
if ( ! preg_match( '/^\<meta/i', $string ) ) {
|
1094 |
+
return false;
|
1095 |
+
}
|
1096 |
+
if ( ! preg_match( '/\>$/', $string ) ) {
|
1097 |
+
return false;
|
1098 |
+
}
|
1099 |
|
1100 |
return true;
|
1101 |
}
|
includes/css/app.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.cf:after,.wpmud #header:after,.wpmud .dev-box .box-title:after,.wpmud .wds-box-footer:after,.wpmud .uptime-message:after,.wpmud .wds-table-fields:after,.wpmud .wds-keyword-pairs .wds-keyword-pair:after,.wpmud .wds-styleable-file-input:after,.wpmud .wds-preset-separators:after,.wpmud .wds-automatic-linking:after,.wpmud .wds-moz-api-credentials:after{content:"";display:table;clear:both}@media only screen and (max-width: 1200px){.hide-to-large{display:none}}@media only screen and (max-width: 1100px){.hide-to-desktop{display:none}}.wpmud .select2-container .select2-selection--single{background:#FAFAFA;border-color:#ddd;height:44px}.wpmud .select2-container .select2-selection--single .select2-selection__rendered{padding:8px 45px 8px 15px;line-height:1;font:500 15px/25px "Roboto"}.wpmud .select2-container .select2-selection--single .select2-selection__arrow{height:39px;width:45px}.wpmud .select2-container .select2-selection--single .select2-selection__arrow::before{content:"\65";display:block;font-family:"WPMU-DEV-App-Icons",sans-serif;font-size:20px;margin-top:9px;text-align:center}.wpmud .select2-container .select2-selection--single b[role="presentation"]{border-color:transparent}.wpmud .select2-container .select2-dropdown{background:#FAFAFA;border-color:#ddd}.wpmud .select2-container .select2-results__option{margin:0;font:500 15px/25px "Roboto";padding:8px 15px}.wpmud .select2-container .select2-results__option--highlighted[aria-selected]{background-color:rgba(0,0,0,0.05);color:#414042}.wpmud .select2-container .select2-results__option[aria-selected=true]{background-color:#17a8e3;color:#fff}.wpmud .select2-container.select2-container--open .select2-selection--single .select2-selection__arrow::before{content:"\72"}.wpmud .select2-container.select2-container--above .select2-selection--single .select2-selection__arrow::before{content:"\72"}.wpmud .select2-container.select2-container--above.select2-container--open .select2-selection--single .select2-selection__arrow::before{content:"\65"}.wpmud .select2-container.select2-container--above.select2-container--open .select2-selection--single .select2-selection__rendered{padding-top:9px}.wds-select2-dropdown-container .select2-selection--single{background:#FAFAFA;border-color:#ddd;height:44px}.wds-select2-dropdown-container .select2-selection--single .select2-selection__rendered{padding:8px 45px 8px 15px;line-height:1;font:500 15px/25px "Roboto"}.wds-select2-dropdown-container .select2-selection--single .select2-selection__arrow{height:39px;width:45px}.wds-select2-dropdown-container .select2-selection--single .select2-selection__arrow::before{content:"\65";display:block;font-family:"WPMU-DEV-App-Icons",sans-serif;font-size:20px;margin-top:9px;text-align:center}.wds-select2-dropdown-container .select2-selection--single b[role="presentation"]{border-color:transparent}.wds-select2-dropdown-container .select2-dropdown{background:#FAFAFA;border-color:#ddd}.wds-select2-dropdown-container .select2-results__option{margin:0;font:500 15px/25px "Roboto";padding:8px 15px}.wds-select2-dropdown-container .select2-results__option--highlighted[aria-selected]{background-color:rgba(0,0,0,0.05);color:#414042}.wds-select2-dropdown-container .select2-results__option[aria-selected=true]{background-color:#17a8e3;color:#fff}.wds-select2-dropdown-container.select2-container--open .select2-selection--single .select2-selection__arrow::before{content:"\72"}.wds-select2-dropdown-container.select2-container--above .select2-selection--single .select2-selection__arrow::before{content:"\72"}.wds-select2-dropdown-container.select2-container--above.select2-container--open .select2-selection--single .select2-selection__arrow::before{content:"\65"}.wds-select2-dropdown-container.select2-container--above.select2-container--open .select2-selection--single .select2-selection__rendered{padding-top:9px}.wpmud{-webkit-font-smoothing:antialiased}.wpmud-html{background-color:#f1f1f1}.wpmud *{box-sizing:border-box}.wpmud strong,.wpmud b{font-weight:500}.wpmud p{color:#666;line-height:30px;margin-bottom:30px}.wpmud #header{margin-bottom:30px}.wpmud #header h1{color:#333;margin:0 0 30px;display:table;float:left}.wpmud #header h1:last-child{margin-bottom:0}.wpmud #header h1 .wds-toggle{vertical-align:top;width:42px}.wpmud #header ~ .sub-header{margin-top:30px;margin-bottom:30px}.wpmud #header .actions{float:right}.wpmud #header .actions .button{vertical-align:middle;margin-left:20px}.wpmud #header .notice,.wpmud #header div.error,.wpmud #header div.updated{clear:both}.wpmud #wpbody{background:transparent}.wpmud #container{margin:30px 30px 0 10px}.wpmud .dev-box{padding:0}.wpmud .dev-box:last-child{margin-bottom:0}.wpmud .dev-box .box-title{clear:both;height:inherit;margin:0;padding:0 30px}.wpmud .dev-box .box-title h3{float:left;font-size:15px;color:#333}.wpmud .dev-box .box-title .buttons.left{float:left;margin:10px 0 0 20px}.wpmud .dev-box .box-content{padding:30px;word-wrap:break-word}.wpmud .dev-box .box-content.no-padding{padding:0}.wpmud .dev-box .box-content.no-vertical-padding{padding-top:0;padding-bottom:0}.wpmud .dev-box .box-content.no-side-padding{padding-right:0;padding-left:0}.wpmud .dev-box .box-content p{margin-bottom:20px}.wpmud .dev-box .box-content p:last-of-type:last-child{margin-bottom:0}.wpmud .dev-box .box-content .wds-standalone-bottom{margin-bottom:0}.wpmud .dev-box .box-content .buttons{margin-top:20px}.wpmud .dev-box .box-content .buttons.buttons-on-left{text-align:left}.wpmud .dev-box .box-content .buttons.buttons-on-right{text-align:right}.wpmud .dev-box .box-footer{margin-top:0;padding:0 30px 30px 30px}.wpmud .dev-box .box-footer.bordered-top{border-top:2px solid #f4f4f4;padding-top:30px}.wpmud .dev-box .box-footer.modal{margin-top:30px;padding:0}.wpmud .dev-box .box-footer.buttons .select-wrapper{display:inline-block}.wpmud .dev-box .box-footer.buttons .select-wrapper>*{display:inline-block}.wpmud .dev-box .box-footer.buttons .select-wrapper>label{float:left;line-height:43px;margin:0 15px 0 0;padding:0;vertical-align:middle}.wpmud .dev-box .box-footer.buttons .button,.wpmud .dev-box .box-footer.buttons input[type="submit"]{display:inline-block;margin-left:20px}.wpmud .dev-box .box-footer.buttons .button:first-child,.wpmud .dev-box .box-footer.buttons input[type="submit"]:first-child{margin-left:0}.wpmud .wds-modal *{box-sizing:border-box}.wpmud .wds-modal.dev-overlay .title h3{color:#333;font-family:"Roboto Condensed","Roboto",Arial,sans-serif;font-size:15px}.wpmud .wds-modal.dev-overlay .back{background:#333;opacity:0.95}.wpmud .wds-modal .box{padding:0}.wpmud .wds-modal .box .title{margin:0;padding:0 30px}.wpmud .wds-modal .box .content{padding:30px}.wpmud .wds-box-footer{border-top:1px solid #EAEAEA;margin:30px -30px -30px;padding:30px}.wpmud form>div.buttons{text-align:center}.wpmud form .vertical-tabs{padding:15px 0 0}.wpmud .vertical-tabs{margin-bottom:30px}.wpmud .vertical-tabs>.tab input[type="radio"]{display:none}.wpmud .vertical-tabs>.tab>.wds-content-tabs{padding:0;border-radius:7px;left:200px}.wpmud .vertical-tabs>.tab>label{color:#888;font:400 15px/20px "Roboto",Arial,sans-serif;padding:5px 15px;border-radius:20px;text-transform:inherit;width:170px;margin:0 0 10px}.wpmud .vertical-tabs>.tab>label:hover{color:#333}.wpmud .vertical-tabs>.tab>label:after{border-bottom:none}.wpmud .vertical-tabs>.tab input[type="radio"]:checked+label{color:#333;background:#eaeaea;box-shadow:none;padding-top:5px;font-weight:500}.wpmud .vertical-tabs .wds-content-tabs .tab-title{font-weight:600;line-height:24px;margin:0;max-width:100%;padding:18px 30px;border-bottom:1px solid #EAEAEA;text-align:left;font-size:15px;color:#333}.wpmud .vertical-tabs .wds-content-tabs .wds-content-tabs-inner{padding:30px;position:relative}.wpmud .vertical-tabs .wds-content-tabs.wds-accordion{background:#f9f9f9}.wpmud .vertical-tabs .wds-content-tabs.wds-accordion .tab-title{border-radius:7px 7px 0 0;background:#FFF;border-bottom:none}.wpmud .vertical-tabs .wds-content-tabs.wds-accordion .tab-sub-title .toggle{position:absolute;right:80px}.wpmud .vertical-tabs .wds-content-tabs.wds-accordion .tab-sub-title .wds-archive-disabled-label{background:#f2f2f2;border-radius:13px;color:#aaaaaa;display:none;font-size:13px;margin-left:6px;padding:5px 16px;vertical-align:top}.wpmud .vertical-tabs .wds-content-tabs.wds-accordion .tab-sub-title.wds-archive-disabled{color:#888}.wpmud .vertical-tabs .wds-content-tabs.wds-accordion .tab-sub-title.wds-archive-disabled .wds-archive-disabled-label{display:inline}.wpmud .row-inside-form{margin-bottom:30px;padding:0}.wpmud .wds-footer-text{margin-top:20px;text-align:left}.wpmud .wds-group{margin-bottom:15px}.wpmud .wds-group:last-child{margin-bottom:0}.wpmud .block-section-footer{margin-top:30px}.wpmud .wds-seamless-footer{background:#FFF;border-radius:0 0 7px 7px;padding:30px;border-top:1px solid #EAEAEA;text-align:right}.wpmud .wds-accordion .wds-seamless-footer{border-top:none}.wpmud .toggle.toggle{line-height:1}.wpmud .toggle.toggle .toggle-label{background:transparent;border:1px solid #ccc;height:18px;width:40px;margin-left:0}.wpmud .toggle.toggle .toggle-label::after{background:#777771;height:18px;width:18px;border-radius:100%;margin:0;box-shadow:none;position:relative;top:0}.wpmud .toggle.toggle .toggle-label::before{display:none}.wpmud .toggle.toggle .toggle-checkbox:hover+.toggle-label::after{background:#777771;box-shadow:none}.wpmud .toggle.toggle .toggle-checkbox+.toggle-label::after{margin-left:-1px;margin-top:-1px}.wpmud .toggle.toggle .toggle-checkbox:checked+.toggle-label{background:#f9f9f9}.wpmud .toggle.toggle .toggle-checkbox:checked+.toggle-label::after{background:#17a8e3;margin-left:22px}.wpmud .toggle.toggle.wds-inverted-toggle .toggle-label{background:#f9f9f9}.wpmud .toggle.toggle.wds-inverted-toggle .toggle-label::after{background:#17a8e3;margin-left:22px}.wpmud .toggle.toggle.wds-inverted-toggle .toggle-checkbox:hover+.toggle-label::after{background:#17a8e3}.wpmud .toggle.toggle.wds-inverted-toggle .toggle-checkbox:checked+.toggle-label{background:transparent}.wpmud .toggle.toggle.wds-inverted-toggle .toggle-checkbox:checked+.toggle-label::after{margin-left:-1px;background:#777771}.wpmud .wds-form .input,.wpmud .wds-form input[type="text"],.wpmud .wds-form input[type="email"],.wpmud .wds-form input[type="search"],.wpmud .wds-form input[type="password"],.wpmud .wds-form input[type="url"],.wpmud .wds-form select,.wpmud .wds-form textarea{background:#FAFAFA;border-color:#ddd;color:#333}.wpmud .wds-form .input:hover:not(:focus):not(:active),.wpmud .wds-form .input:focus,.wpmud .wds-form .input:active,.wpmud .wds-form input[type="text"]:hover:not(:focus):not(:active),.wpmud .wds-form input[type="text"]:focus,.wpmud .wds-form input[type="text"]:active,.wpmud .wds-form input[type="email"]:hover:not(:focus):not(:active),.wpmud .wds-form input[type="email"]:focus,.wpmud .wds-form input[type="email"]:active,.wpmud .wds-form input[type="search"]:hover:not(:focus):not(:active),.wpmud .wds-form input[type="search"]:focus,.wpmud .wds-form input[type="search"]:active,.wpmud .wds-form input[type="password"]:hover:not(:focus):not(:active),.wpmud .wds-form input[type="password"]:focus,.wpmud .wds-form input[type="password"]:active,.wpmud .wds-form input[type="url"]:hover:not(:focus):not(:active),.wpmud .wds-form input[type="url"]:focus,.wpmud .wds-form input[type="url"]:active,.wpmud .wds-form select:hover:not(:focus):not(:active),.wpmud .wds-form select:focus,.wpmud .wds-form select:active,.wpmud .wds-form textarea:hover:not(:focus):not(:active),.wpmud .wds-form textarea:focus,.wpmud .wds-form textarea:active{background:#ffffff;border-color:#ddd}.wpmud .wds-form .input:-ms-input-placeholder,.wpmud .wds-form input[type="text"]:-ms-input-placeholder,.wpmud .wds-form input[type="email"]:-ms-input-placeholder,.wpmud .wds-form input[type="search"]:-ms-input-placeholder,.wpmud .wds-form input[type="password"]:-ms-input-placeholder,.wpmud .wds-form input[type="url"]:-ms-input-placeholder,.wpmud .wds-form select:-ms-input-placeholder,.wpmud .wds-form textarea:-ms-input-placeholder{color:#aaaaaa}.wpmud .wds-form .input::placeholder,.wpmud .wds-form input[type="text"]::placeholder,.wpmud .wds-form input[type="email"]::placeholder,.wpmud .wds-form input[type="search"]::placeholder,.wpmud .wds-form input[type="password"]::placeholder,.wpmud .wds-form input[type="url"]::placeholder,.wpmud .wds-form select::placeholder,.wpmud .wds-form textarea::placeholder{color:#aaaaaa}.wpmud .wds-form .input:disabled,.wpmud .wds-form .input.disabled,.wpmud .wds-form input[type="text"]:disabled,.wpmud .wds-form input[type="text"].disabled,.wpmud .wds-form input[type="email"]:disabled,.wpmud .wds-form input[type="email"].disabled,.wpmud .wds-form input[type="search"]:disabled,.wpmud .wds-form input[type="search"].disabled,.wpmud .wds-form input[type="password"]:disabled,.wpmud .wds-form input[type="password"].disabled,.wpmud .wds-form input[type="url"]:disabled,.wpmud .wds-form input[type="url"].disabled,.wpmud .wds-form select:disabled,.wpmud .wds-form select.disabled,.wpmud .wds-form textarea:disabled,.wpmud .wds-form textarea.disabled{color:#aaaaaa !important;background-color:#ffffff !important;border:1px solid #ddd !important}.wpmud .wds-form .select-container{background:#FAFAFA;border-color:#ddd}.wpmud .wds-form .select-container-no-style{background:transparent;border-color:transparent}.wpmud .wds-form .select-container .dropdown-handle{background:#FAFAFA;border-color:#ddd;border-left-width:0}.wpmud .wds-form .select-container .dropdown-handle .wdv-icon:before{font-family:"WPMU-DEV-App-Icons",sans-serif;content:"\65";color:#A6A6A6;font-size:20px}.wpmud .wds-form .select-container .list-value{color:#333}.wpmud .wds-form .select-container.active:hover .list-value,.wpmud .wds-form .select-container.active .list-value:hover{color:#333}.wpmud .wds-form .select-container.active .dropdown-handle{background:#ffffff;border-left-width:1px}.wpmud button,.wpmud .button{border-radius:4px;padding:10px 20px;background:#17a8e3}.wpmud button:hover:not(:focus):not(:active),.wpmud .button:hover:not(:focus):not(:active){background:#41baec}.wpmud button:active,.wpmud button:focus,.wpmud .button:active,.wpmud .button:focus{background:#1286b5}.wpmud button.button-light,.wpmud .button.button-light{background:transparent}.wpmud button.button-light:hover:not(:focus):not(:active),.wpmud .button.button-light:hover:not(:focus):not(:active){background:#f4f4f4}.wpmud .media-modal .media-frame h2{max-width:100%;font-family:inherit}.wpmud .media-modal .media-frame .media-button{padding:0 12px;text-transform:none}.wpmud .media-modal .media-frame .search,.wpmud .media-modal .media-frame .setting input,.wpmud .media-modal .media-frame .setting textarea,.wpmud .media-modal .media-frame .attachment-filters{border-radius:0;box-shadow:0 1px 2px rgba(0,0,0,0.07) inset;font-size:12px;line-height:1.4em;padding:4px}.wpmud .media-modal .media-frame .search:not(:disabled):not([readonly]),.wpmud .media-modal .media-frame .setting input:not(:disabled):not([readonly]),.wpmud .media-modal .media-frame .setting textarea:not(:disabled):not([readonly]),.wpmud .media-modal .media-frame .attachment-filters:not(:disabled):not([readonly]){background-color:#fff;border:1px solid #ddd}.wpmud .media-modal .media-frame .search{margin-top:11px}.wpmud .media-modal .media-frame .setting{padding:0}.wpmud .media-modal .media-frame .attachment-filters{display:inline;width:100px;max-width:200px;padding:0}.wpmud .media-modal .media-frame .delete-attachment,.wpmud .media-modal .media-frame .trash-attachment,.wpmud .media-modal .media-frame .untrash-attachment{font-family:inherit;font-size:inherit;text-transform:none}.wpmud .media-modal .media-modal-close{background:transparent;border:none;color:#666;cursor:pointer;height:50px;margin:0;outline:medium none;padding:0;position:absolute;right:0;top:0;transition:color 0.1s ease-in-out 0s, background 0.1s ease-in-out 0s;width:50px;z-index:1000}.wpmud .media-modal .media-modal-close:hover:not(:focus):not(:active),.wpmud .media-modal .media-modal-close:hover{color:#00A0D2;background:transparent}.wpmud .notice,.wpmud div.error,.wpmud div.updated{text-align:left}.wpmud #wpbody-content>.error,.wpmud #wpbody-content>.updated{margin:30px 20px 30px 0}.wpmud .wds-image{display:block;height:auto;max-width:100%}.wpmud .wds-image-center{margin-right:auto;margin-left:auto}.wpmud .wds-image-standalone{margin-bottom:30px}.wpmud .wds-listing{margin:0}.wpmud .wds-listing li{font:400 15px/21px "Roboto",Arial,sans-serif;margin-top:20px;margin-bottom:0}.wpmud .wds-listing li:first-child{margin-top:0}.wpmud .wds-listing li strong{font-weight:500}.wpmud .wds-listing li.cta-alt:before{color:#BE1E2D}.wpmud .wds-listing.bold li{font-weight:500}.wpmud .wds-listing-ordered{padding-left:20px}.wpmud .wds-listing .wds-listing-label{color:#777771;font:400 20px/26px "Roboto Condensed","Roboto",Arial,sans-serif;margin-bottom:15px}.wpmud .wds-pre{border-left:none}.wpmud .wds-pre-inline{display:inline-block;margin:0;font-style:italic}.wpmud .wds-title-alt{font-size:30px;font-weight:400;line-height:40px;max-width:none;overflow:hidden;text-overflow:ellipsis;text-transform:none;white-space:nowrap}.wpmud .wds-page-desc{color:#444;font-family:'Open Sans', Arial, sans-serif;font-weight:400;font-size:14px;line-height:20px}.wpmud .uptime-message>*{float:left;line-height:40px;margin-right:10px}.wpmud .uptime-message .wds-dashicons-box-title{margin:0 10px 0 0;height:40px}.wpmud .uptime-message .uptime>span{display:block}.wpmud .uptime-message .uptime-result{font-size:22px;font-weight:700;line-height:26px}.wpmud .uptime-message .uptime-label{color:#bfbfbf;font:400 13px/14px "Roboto Condensed","Roboto",Arial,sans-serif;text-transform:uppercase}.wds-qtip{background:#0B2F3F;border-color:#0B2F3F;color:#FFF;padding:3px}.wpmud .wds-disabled-component{text-align:center}.wpmud .wds-disabled-component .wds-disabled-image{width:128px;height:auto}.wpmud .wds-disabled-component p{margin-bottom:30px}.wpmud .wds-disabled-component .wds-notice{margin-bottom:30px}.wpmud .wds-has-tooltip{cursor:pointer}.wpmud .button.large{padding:20px}.wpmud .button-light-wds{box-shadow:0 0 0 2px #BABABA inset}.wpmud .button-fields-trigger{background:transparent;border:1px solid transparent;color:#888888;font-size:12px;line-height:16px;font-weight:400;padding:12px 12px 9px 12px;transition:background .3s, color .3s, opacity .3s}.wpmud .button-fields-trigger:hover:not(:focus):not(:active),.wpmud .button-fields-trigger:hover,.wpmud .button-fields-trigger:active,.wpmud .button-fields-trigger:focus{background:#EAEAEA;border:1px solid transparent;color:#777771}.wpmud .button.button-cta-alt{background:#BE1E2D;box-shadow:0 3px 0 0 #991825}.wpmud .button.button-cta-alt:hover:not(:focus):not(:active){background:#991825;box-shadow:0 3px 0 0 #660000}.wpmud .button.button-cta-alt:active,.wpmud .button.button-cta-alt:focus{box-shadow:0 3px 0 0 #660000;background:#991825;background:linear-gradient(to bottom, #991825 0%, #BE1E2D 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#991825', endColorstr='#BE1E2D', GradientType=0)}.wpmud .button.button-cta-dark{background:#414042;box-shadow:0 3px 0 0 #231F20}.wpmud .button.button-cta-dark:hover:not(:focus):not(:active){background:#231F20;box-shadow:0 3px 0 0 #0E0D0F}.wpmud .button.button-cta-dark:active,.wpmud .button.button-cta-dark:focus{box-shadow:0 3px 0 0 #0E0D0F;background:#231F20;background:linear-gradient(to bottom, #231F20 0%, #414042 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#231F20', endColorstr='#414042', GradientType=0)}.wpmud .button-white{background:transparent;border:2px solid #fff;box-shadow:none;color:#fff;padding:8px 20px;transition:background .3s, border-color .3s, color .3s, opacity .3s}.wpmud .button-white:hover:not(:focus):not(:active){background:#fff;border-color:#fff;box-shadow:none;color:#4A4A4A}.wpmud .button-white:active,.wpmud .button-white:focus{color:#4A4A4A;box-shadow:none;border:2px solid #E6E6E6;background:#E6E6E6;background:linear-gradient(to bottom, #E6E6E6 0%, #fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#E6E6E6', endColorstr='#fff', GradientType=0);transform:inherit}.wpmud .button-yellow-alt{background:transparent;border:2px solid #FECF2F;box-shadow:none;color:#FECF2F;padding:8px 20px;transition:background .3s, border-color .3s, color .3s, opacity .3s}.wpmud .button-yellow-alt:hover:not(:focus):not(:active){background:#FECF2F;border-color:#FECF2F;box-shadow:none;color:#fff}.wpmud .button-yellow-alt:active,.wpmud .button-yellow-alt:focus{color:#FFFFFF;box-shadow:none;border-color:#E5B616;background:#E5B616;background:linear-gradient(to bottom, #E5B616 0%, #FECF2F 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#E5B616', endColorstr='#FECF2F', GradientType=0)}.wpmud .button-dark{background:#888;color:#ffffff}.wpmud .button-dark:hover:not(:focus):not(:active),.wpmud .button-dark:hover,.wpmud .button-dark:focus,.wpmud .button-dark:active{background:#6f6f6f;color:#ffffff}.wpmud .button-small.button{font-family:"Roboto",Arial,sans-serif;font-size:12px;line-height:16px;padding:7px 16px}.wpmud .button-dark-o{background:transparent;border:2px solid #666;box-shadow:none;color:#666;padding:8px 20px;font-family:"Roboto",Arial,sans-serif;font-weight:500}.wpmud .button-dark-o:hover:not(:focus):not(:active),.wpmud .button-dark-o:hover,.wpmud .button-dark-o:focus,.wpmud .button-dark-o:active{background:transparent;border:2px solid gray;color:gray}.wpmud .button-dark-o.button-small.button{padding:5px 16px}.wpmud .button-pro{border:2px solid #1ABC9C;border-radius:20px;color:#1ABC9C;font-family:"Roboto",Arial,sans-serif;font-size:12px;font-weight:500;line-height:16px;text-transform:uppercase;background:transparent}.wpmud .button-pro:hover:not(:focus):not(:active),.wpmud .button-pro:hover,.wpmud .button-pro:focus,.wpmud .button-pro:active{background:transparent;border:2px solid #148f77;color:#148f77}.wpmud .wds-button-with-loader.wds-item-loading::before{font-size:18px}.wpmud .wds-button-with-left-loader.wds-item-loading::before{right:110%}.wpmud .wds-button-with-right-loader.wds-item-loading::before{left:110%}.wpmud input[type="number"],.wpmud input[type="url"]{background:#FFF;border:1px solid #ddd;border-radius:4px;box-shadow:none;color:#999;display:block;font:500 15px/25px "Roboto",Arial,sans-serif;margin:0px 0px 15px 0px;max-width:100%;padding:7px 15px 6px;transition-property:background, color, border-color;transition-duration:0.3s;width:100%}.wpmud input[type="number"]:focus,.wpmud input[type="url"]:focus{border-color:#BBB;color:#3D464D}.wpmud input[type="number"]:focus::-webkit-input-placeholder,.wpmud input[type="url"]:focus::-webkit-input-placeholder{transition:opacity 0.3s 0.4s ease;opacity:0.25}.wpmud input[type="number"]:focus:-moz-placeholder,.wpmud input[type="url"]:focus:-moz-placeholder{transition:opacity 0.3s 0.4s ease;opacity:0.25}.wpmud input[type="number"]:focus::-moz-placeholder,.wpmud input[type="url"]:focus::-moz-placeholder{transition:opacity 0.3s 0.4s ease;opacity:0.25}.wpmud input[type="number"]:focus:-ms-input-placeholder,.wpmud input[type="url"]:focus:-ms-input-placeholder{transition:opacity 0.3s 0.4s ease;opacity:0.25}.wpmud input[type="number"]:hover:not(:focus),.wpmud input[type="url"]:hover:not(:focus){color:#3D464D}.wpmud input[type="number"]:disabled,.wpmud input[type="url"]:disabled{background:#F6F6F6 !important;color:#AAA !important;border-color:#ddd !important;cursor:default}.wpmud input[type="number"]::-webkit-input-placeholder,.wpmud input[type="url"]::-webkit-input-placeholder{position:relative;top:0}.wpmud input[type="number"]:-moz-placeholder,.wpmud input[type="url"]:-moz-placeholder{position:relative;top:0}.wpmud input[type="number"]::-moz-placeholder,.wpmud input[type="url"]::-moz-placeholder{position:relative;top:0}.wpmud input[type="number"]:-ms-input-placeholder,.wpmud input[type="url"]:-ms-input-placeholder{position:relative;top:0}.wpmud .wds-checkbox,.wpmud .wds-radio{box-shadow:none;line-height:20px;height:20px;min-width:20px;width:20px}.wpmud .wds-checkbox:focus,.wpmud .wds-radio:focus{border-color:#19B99A}.wpmud .wds-checkbox-width-label,.wpmud .wds-radio-width-label{margin-right:0}.wpmud .wds-checkbox{border-radius:4px}.wpmud .wds-checkbox:before{color:#19B99A;height:18px;line-height:20px;margin:0 0 0 -2px;width:18px}.wpmud .wds-checkbox:checked{border-color:#19B99A}.wpmud .wds-checkbox:checked:before{color:#19B99A;height:18px;line-height:20px;margin:0 0 0 -2px;width:18px}.wpmud .wds-checkbox-container input[type="checkbox"]{display:none}.wpmud .wds-checkbox-container label{height:16px;width:16px;padding:0;margin:0}.wpmud .wds-checkbox-container span{background:#FAFAFA;border:1px solid #ddd;height:16px;width:16px;border-radius:4px;display:block}.wpmud .wds-checkbox-container input[type="checkbox"]:checked+span{background:#17a8e3;border:#17a8e3}.wpmud .wds-checkbox-container input[type="checkbox"]:checked+span:before{color:#fff;content:"\7a";display:block;font-family:"WPMU-DEV-App-Icons";font-size:10px;line-height:1;padding:3px}.wpmud .wds-radio{margin-top:0}.wpmud .wds-radio:checked:before{background-color:#19B99A;height:10px;line-height:20px;width:10px}.wpmud .wds-fieldset-legend,.wpmud .wds-label{color:#333;display:block;font-size:15px;line-height:30px;margin-bottom:0;padding:0;text-transform:capitalize;transition:color .4s}.wpmud .wds-fieldset{margin-top:20px}.wpmud .wds-fieldset:first-child{margin-top:0}.wpmud .wds-fieldset-standalone{margin-bottom:20px}.wpmud .wds-fieldset-grey{color:#4A4A4A}.wpmud .wds-label:hover{color:#808080}.wpmud .wds-label.link{color:#19B4CF;display:inline-block;margin:0;text-transform:none}.wpmud .wds-label-inline{display:inline-block}.wpmud .wds-label-inline-left{margin:0 15px 0 0}.wpmud .wds-label-inline-right{margin:0 0 0 15px;max-width:450px}.wpmud .wds-label-description{color:#808080;display:block;font-size:13px;line-height:22px;margin-top:0;margin-bottom:20px}.wpmud .wds-label-radio{color:#4A4A4A}.wpmud .wds-field-legend{color:#808080;display:block;font-size:13px;line-height:18px;margin-top:10px}.wpmud .wds-group-field .wds-field,.wpmud .wds-group-field .wds-select,.wpmud .wds-group-field .wds-textarea{margin-bottom:5px}.wpmud .wds-group-field.has-field-label .wds-field{display:inline-block;width:auto}.wpmud .wds-group-field .wds-field-label{color:#808080;font:400 15px/20px "Roboto",Arial,sans-serif}.wpmud .wds-fieldset-fields{margin-top:15px}.wpmud .wds-fieldset-fields-group{margin:5px 0 0}.wpmud .wds-fieldset-fields-group>p{display:inline-block;margin:0 20px 10px 0 !important}.wpmud .wds-fieldset-fields-group>p:last-child{margin-right:0}.wpmud .wds-fieldset-fields-group .wds-label-inline-right{margin-left:5px}.wpmud .wds-table-fields-group{margin-top:20px}.wpmud .wds-table-fields-group:first-child{margin-top:0}.wpmud .wds-table-fields .label,.wpmud .wds-table-fields .fields{display:block;float:left}.wpmud .wds-table-fields .label{margin-top:5px;padding-right:30px;width:30%}.wpmud .wds-table-fields .label-width-options{margin-top:5px}.wpmud .wds-table-fields .label-long{margin-top:2px}.wpmud .wds-table-fields .label .wds-label{margin-bottom:0}.wpmud .wds-table-fields .fields{width:70%}.wpmud .wds-table-fields .fields .wds-label{color:#666}.wpmud .wds-table-fields .fields-with-legend .wds-field{margin-bottom:5px}.wpmud .wds-table-fields .fields-with-legend-large .wds-field{margin-bottom:10px}.wpmud .wds-table-fields .fields.has-trigger-button{position:relative}.wpmud .wds-table-fields .note{background-color:#f5f5f5;border-radius:3px;clear:both;padding:20px;text-align:center;width:100%}.wpmud .wds-table-fields .note p{color:#4A4A4A;font-weight:400;margin:0;line-height:20px}.wpmud .wds-table-fields .note .wdv-icon{color:#777771;font-size:20px;vertical-align:top}.wpmud .wds-table-fields.wds-table-fields-stacked .label{margin-top:0;padding-right:0;margin-bottom:5px;width:100%}.wpmud .wds-table-fields.wds-table-fields-stacked .label label{color:#888;font-size:12px;font-weight:500;line-height:22px}.wpmud .wds-table-fields.wds-table-fields-stacked .label label span{font-weight:400}.wpmud .wds-table-fields.wds-table-fields-stacked .fields{width:100%}.wpmud .wds-table-fields.wds-table-fields-stacked .select2{margin-bottom:15px}.wpmud .wds-separator-top{margin-top:30px;padding-top:30px;border-top:1px solid #EAEAEA}.wpmud .wds-code-label{display:block;margin-bottom:5px}.wpmud .wds-toggle-table{display:table;width:100%}.wpmud .wds-toggle-table.disabled{opacity:.5}.wpmud .wds-toggle-table .toggle.wds-toggle,.wpmud .wds-toggle-table .wds-toggle-description{display:table-cell;vertical-align:top}.wpmud .wds-toggle-table .wds-toggle-description .wds-label{margin-left:0}.wpmud .wds-toggle-table:last-child .wds-label-description{margin-bottom:0}.wpmud .wds-toggle-table .toggle.wds-toggle{padding-top:6px;width:60px}.wpmud .wds-dashicons{color:#808080;font-size:22px;height:22px;opacity:.5;width:22px}.wpmud .wds-dashicons-link{font-size:24px;height:24px;width:24px;transition:all .4s}.wpmud .wds-dashicons-link:hover{opacity:1}.wpmud .wds-dashicons-box-title{margin:-5px 10px 0 0;vertical-align:middle}.wpmud .wds-icon{background:url("../images/smartCrawl_sprite.png") no-repeat 0 0;background-image:url("../images/smartCrawl_sprite.svg"),none}.wpmud .wds-icon-inline{display:inline-block}.wpmud .wds-icon-inline-left{margin-right:15px}.wpmud .wds-icon-inline-right{margin-left:15px}.wpmud .wds-icon-redirect{background-position:-30px -30px;height:16px;width:18px}.wpmud .wds-icon-list{background-position:-30px -76px;height:16px;width:18px}@font-face{font-family:'wpmu-dev-seo-icons';src:url("../fonts/wpmu-dev-seo-icons.eot?gy02j9");src:url("../fonts/wpmu-dev-seo-icons.eot?gy02j9#iefix") format("embedded-opentype"),url("../fonts/wpmu-dev-seo-icons.woff2?gy02j9") format("woff2"),url("../fonts/wpmu-dev-seo-icons.ttf?gy02j9") format("truetype"),url("../fonts/wpmu-dev-seo-icons.woff?gy02j9") format("woff"),url("../fonts/wpmu-dev-seo-icons.svg?gy02j9#wpmu-dev-seo-icons") format("svg");font-weight:normal;font-style:normal}[class^="wds-icon-"],[class*=" wds-icon-"]{font-family:'wpmu-dev-seo-icons' !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wds-icon-icon-performance:before{content:"\e903"}.wds-icon-power-on-off:before{content:"\e904"}.wds-icon-update-arrow:before{content:"\e902"}.wds-icon-dashboard-settings:before{content:"\e901"}.wds-icon-icon-wpmu-logo-line:before{content:"\203a"}.wds-icon-icon-wpmu-logo-solid:before{content:"\2039"}.wds-icon-star-line:before{content:"\cf"}.wds-icon-notification-count:before{content:"\e900"}.wds-icon-24-hour-support:before{content:"\c1"}.wds-icon-speed-optimize:before{content:"\f8"}.wds-icon-cloudflare:before{content:"\d0"}.wds-icon-alert:before{content:"\58"}.wds-icon-align-center:before{content:"\5e"}.wds-icon-align-justify:before{content:"\23"}.wds-icon-align-left:before{content:"\25"}.wds-icon-align-right:before{content:"\26"}.wds-icon-annotate:before{content:"\b4"}.wds-icon-arrow-up:before{content:"\d4"}.wds-icon-arrow-right:before{content:"\af"}.wds-icon-arrow-down:before{content:"\c2"}.wds-icon-arrow-left:before{content:"\f8ff"}.wds-icon-more:before{content:"\2026"}.wds-icon-minus:before{content:"\2d"}.wds-icon-plus:before{content:"\3d"}.wds-icon-arrow-up-carats:before{content:"\2dd"}.wds-icon-arrow-down-carats:before{content:"\131"}.wds-icon-arrow-left-carats:before{content:"\d3"}.wds-icon-arrow-right-carats:before{content:"\2dc"}.wds-icon-arrows-compress:before{content:"\2265"}.wds-icon-arrows-expand:before{content:"\ac"}.wds-icon-arrows-in:before{content:"\2264"}.wds-icon-arrows-out:before{content:"\2da"}.wds-icon-check:before{content:"\28"}.wds-icon-close:before{content:"\29"}.wds-icon-at-sign:before{content:"\40"}.wds-icon-calendar:before{content:"\220f"}.wds-icon-camera:before{content:"\d8"}.wds-icon-clipboard-notes:before{content:"\bf"}.wds-icon-clock:before{content:"\2c"}.wds-icon-cloud:before{content:"\2122"}.wds-icon-download-cloud:before{content:"\a3"}.wds-icon-upload-cloud:before{content:"\a2"}.wds-icon-comment:before{content:"\a7"}.wds-icon-comments:before{content:"\b6"}.wds-icon-comment-3:before{content:"\aa"}.wds-icon-compass:before{content:"\2c6"}.wds-icon-credit-card:before{content:"\63"}.wds-icon-crop:before{content:"\43"}.wds-icon-crown:before{content:"\a1"}.wds-icon-italic:before{content:"\7b"}.wds-icon-bold:before{content:"\42"}.wds-icon-underline:before{content:"\55"}.wds-icon-text-color:before{content:"\a8"}.wds-icon-style-type:before{content:"\3c"}.wds-icon-quote-2:before{content:"\27"}.wds-icon-quote:before{content:"\3b"}.wds-icon-paperclip:before{content:"\41"}.wds-icon-indent-less:before{content:"\201d"}.wds-icon-indent-more:before{content:"\2019"}.wds-icon-list-bullet:before{content:"\38"}.wds-icon-list-number:before{content:"\37"}.wds-icon-list:before{content:"\60"}.wds-icon-link:before{content:"\35"}.wds-icon-unlink:before{content:"\36"}.wds-icon-color-pick-eyedropper:before{content:"\a5"}.wds-icon-wand-magic:before{content:"\5a"}.wds-icon-layers:before{content:"\e6"}.wds-icon-dislike:before{content:"\6b"}.wds-icon-like:before{content:"\6a"}.wds-icon-dollar:before{content:"\24"}.wds-icon-download:before{content:"\e93b"}.wds-icon-eye:before{content:"\65"}.wds-icon-eye-hide:before{content:"\71"}.wds-icon-arrow-return-back:before{content:"\52"}.wds-icon-first-aid:before{content:"\e93f"}.wds-icon-folder:before{content:"\2d8"}.wds-icon-map:before{content:"\34"}.wds-icon-graph-bar:before{content:"\c7"}.wds-icon-graph-bar_1:before{content:"\2db"}.wds-icon-heart:before{content:"\4b"}.wds-icon-home:before{content:"\4a"}.wds-icon-info:before{content:"\49"}.wds-icon-key:before{content:"\25ca"}.wds-icon-laptop:before{content:"\ab"}.wds-icon-lightbulb:before{content:"\4c"}.wds-icon-asterisk:before{content:"\2a"}.wds-icon-lock:before{content:"\39"}.wds-icon-unlock:before{content:"\30"}.wds-icon-mail:before{content:"\6d"}.wds-icon-location-marker:before{content:"\6c"}.wds-icon-microphone-audio:before{content:"\2030"}.wds-icon-mobile-signal:before{content:"\201b"}.wds-icon-mobile:before{content:"\201c"}.wds-icon-monitor:before{content:"\5c"}.wds-icon-magnifying-glass-search:before{content:"\ba"}.wds-icon-zoom-in:before{content:"\2260"}.wds-icon-zoom-out:before{content:"\2013"}.wds-icon-magnifying-search-glass-love:before{content:"\2022"}.wds-icon-price-tag:before{content:"\2c7"}.wds-icon-bookmark:before{content:"\221a"}.wds-icon-book-bookmark:before{content:"\2d9"}.wds-icon-book:before{content:"\2206"}.wds-icon-page-multiple:before{content:"\e7"}.wds-icon-page-pdf:before{content:"\c6"}.wds-icon-page-search:before{content:"\da"}.wds-icon-page:before{content:"\d2"}.wds-icon-paint-bucket:before{content:"\222b"}.wds-icon-paypal:before{content:"\59"}.wds-icon-pencil:before{content:"\2f"}.wds-icon-photo-picture:before{content:"\44"}.wds-icon-play:before{content:"\70"}.wds-icon-pause:before{content:"\6f"}.wds-icon-fast-forward:before{content:"\3e"}.wds-icon-refresh:before{content:"\45"}.wds-icon-update:before{content:"\ae"}.wds-icon-puzzle:before{content:"\7d"}.wds-icon-layout-grid:before{content:"\221e"}.wds-icon-sheild-badge:before{content:"\e96a"}.wds-icon-coffee-cup:before{content:"\e96b"}.wds-icon-skull:before{content:"\e96c"}.wds-icon-social-android:before{content:"\2e"}.wds-icon-social-apple:before{content:"\61"}.wds-icon-social-drive:before{content:"\76"}.wds-icon-social-dropbox:before{content:"\64"}.wds-icon-social-facebook:before{content:"\66"}.wds-icon-social-github:before{content:"\68"}.wds-icon-social-google-plus:before{content:"\67"}.wds-icon-social-linkedin:before{content:"\69"}.wds-icon-social-twitter:before{content:"\74"}.wds-icon-animation-video:before{content:"\46"}.wds-icon-social-youtube:before{content:"\79"}.wds-icon-white-label-video:before{content:"\75"}.wds-icon-star:before{content:"\53"}.wds-icon-tablet-landscape:before{content:"\5b"}.wds-icon-tablet-portrait:before{content:"\5d"}.wds-icon-thumbnails:before{content:"\47"}.wds-icon-ticket:before{content:"\e97d"}.wds-icon-profile-male:before{content:"\b5"}.wds-icon-profile-female:before{content:"\192"}.wds-icon-community-people:before{content:"\2018"}.wds-icon-trash:before{content:"\51"}.wds-icon-notification:before{content:"\6e"}.wds-icon-user-hero-points-trophy:before{content:"\31"}.wds-icon-megaphone:before{content:"\c5"}.wds-icon-flag:before{content:"\7c"}.wds-icon-stopwatch:before{content:"\e986"}.wds-icon-shopping-cart:before{content:"\cd"}.wds-icon-share:before{content:"\73"}.wds-icon-help-support:before{content:"\48"}.wds-icon-web-globe-world:before{content:"\57"}.wds-icon-widget-settings-config:before{content:"\78"}.wds-icon-wrench-tool:before{content:"\2044"}.wds-icon-settings-slider-control:before{content:"\153"}.wds-icon-filter:before{content:"\7a"}.wds-icon-reply:before{content:"\72"}.wds-icon-finger-point:before{content:"\2248"}.wds-icon-finger-swipe:before{content:"\2203"}.wds-icon-mouse-scroll:before{content:"\df"}.wds-icon-plugin-2:before{content:"\4f"}.wds-icon-brush:before{content:"\7e"}.wds-icon-themes:before{content:"\54"}.wds-icon-plugins:before{content:"\50"}.wds-icon-question:before{content:"\3f"}.wds-icon-warning-alert:before{content:"\21"}.wds-icon-check-tick:before{content:"\5f"}.wds-icon-cross-close:before{content:"\2b"}.wds-icon-user-reputation-points:before{content:"\32"}.wds-icon-user-star-level-up:before{content:"\33"}.wds-icon-icon-devman:before{content:"\20ac"}.wds-icon-icon-defender:before{content:"\b7"}.wds-icon-icon-hub:before{content:"\fb02"}.wds-icon-icon-hummingbird:before{content:"\b0"}.wds-icon-icon-hustle:before{content:"\2014"}.wds-icon-icon-smart-crawl:before{content:"\2202"}.wds-icon-icon-smush:before{content:"\2021"}.wds-icon-icon-snapshot:before{content:"\fb01"}.wds-icon-icon-upfront:before{content:"\201a"}.wds-icon-icon-uptime:before{content:"\b1"}.wds-icon-icon-pulse:before{content:"\201e"}.wds-icon-icon-automate:before{content:"\152"}.wds-icon-academy:before{content:"\3c0"}.wds-icon-wordpress:before{content:"\77"}.wds-icon-infinity:before{content:"\56"}.wds-icon-audio-sound:before{content:"\e9ae"}.wds-icon-sitemap:before{content:"\b8"}.wds-icon-google-analytics:before{content:"\e5"}.wds-icon-progress:before{content:"\e9b1"}.wds-icon-dashboard:before{content:"\e9b2"}.wds-icon-ab-testing:before{content:"\bb"}.wds-icon-testing-bottle-beaker:before{content:"\e9b4"}.wds-icon-archive:before{content:"\62"}.wds-icon-zip:before{content:"\3a9"}.wds-icon-arrow-location:before{content:"\4d"}.wds-icon-arrow-pointer-cursor:before{content:"\4e"}.wds-icon-code:before{content:"\3a"}.wds-icon-news-paper:before{content:"\2211"}.wds-icon-gallery-slider:before{content:"\f7"}.wds-icon-layout:before{content:"\a9"}.wds-icon-storage-server-data:before{content:"\ce"}.wds-icon-loader:before{content:"\e9be"}.wds-icon-rocket-launch:before{content:"\e9bf"}.wds-icon-target:before{content:"\2020"}.wpmud #page-header{margin-bottom:70px;text-align:center}.wpmud .dev-box .box-title .buttons-icon{margin-top:18px}.wpmud .dev-box .box-title .buttons-icon a{width:20px;height:20px;color:#888}.wpmud .wds-table{border:0;border-spacing:0;border-collapse:collapse;width:100%}.wpmud .wds-data-table{border:1px solid #E5E5E5;border-collapse:collapse;border-spacing:0;color:#777771;width:100%}.wpmud .wds-data-table>thead{border-bottom:1px solid #E5E5E5}.wpmud .wds-data-table>tfoot{border-top:1px solid #E5E5E5}.wpmud .wds-data-table>thead th,.wpmud .wds-data-table>tfoot th{font:700 15px/20px "Roboto Condensed","Roboto",Arial,sans-serif;padding:15px 10px;text-transform:uppercase}.wpmud .wds-data-table>tbody td{font-size:13px;line-height:20px;padding:20px 10px;vertical-align:top}.wpmud .wds-data-table th,.wpmud .wds-data-table td{text-align:left}.wpmud .wds-data-table .label{width:75%}.wpmud .wds-data-table .result{width:25%}.wpmud .wds-data-table .data-small{padding:10px}.wpmud .wds-data-table-inverse .label{width:25%}.wpmud .wds-data-table-inverse .result{width:75%}.wpmud .wds-data-table-inverse-large .label{width:40%}.wpmud .wds-data-table-inverse-large .result{width:60%}.wpmud .wds-list-table{width:100%;border:1px solid #EAEAEA;border-collapse:separate;border-spacing:unset;border-radius:5px;color:#888;font-size:13px}.wpmud .wds-list-table th{text-align:left;padding:20px 30px;font-weight:500;color:#333}.wpmud .wds-list-table tr th,.wpmud .wds-list-table tr td{border-bottom:1px solid #EAEAEA}.wpmud .wds-list-table tr td{padding:15px 30px}.wpmud .wds-list-table tr:last-child td{border-bottom:none}.wpmud .wds-list-table tfoot th{border-bottom:none;border-top:1px solid #EAEAEA}@media only screen and (max-width: 783px){.wpmud .list-table>thead>tr>th,.wpmud .list-table>thead>tr>td,.wpmud .list-table>tbody>tr>th,.wpmud .list-table>tbody>tr>td{width:100%}}.wpmud .wds-notice{border-radius:5px;color:#333;font:400 15px/18px "Roboto",Arial,sans-serif;margin:15px 0;padding:20px 30px;position:relative;text-align:left;display:table;width:100%}.wpmud .wds-notice-success{background-color:#D1F1EA}.wpmud .wds-notice-success::before{content:"_";color:#1ABC9C}.wpmud .wds-notice-error{background-color:#FFE5E9}.wpmud .wds-notice-error::before{content:"!";color:#FF6D6D}.wpmud .wds-notice-warning{background-color:#FFF5D5}.wpmud .wds-notice-warning::before{content:"!";color:#fecf2f}.wpmud .wds-notice-info{background-color:#D6EAF3}.wpmud .wds-notice-info::before{content:"!";color:#17a8e3}.wpmud .wds-notice::before{display:table-cell;font-family:"wpmu-dev-seo-icons";font-size:20px;vertical-align:top;width:30px;padding-top:8px}.wpmud .wds-notice p{color:#333;margin:0 0 10px;padding:0;vertical-align:top;display:table-cell}.wpmud .wds-notice p:last-of-type{margin:0}.wpmud .wds-notice p a{color:#333;font-weight:500;text-decoration:underline}.wpmud .wds-notice p a:hover{color:#333;text-decoration:none}.wpmud .wds-notice p a.wds-notice-dismiss{color:#808080;display:table;margin-top:5px;text-decoration:none;text-transform:uppercase}.wpmud .wds-notice .wds-icon,.wpmud .wds-notice .wds-icon .wdv-icon{font-size:22px;height:22px;line-height:22px;width:22px}.wpmud .wds-notice.can-close .close{cursor:pointer;display:block;height:22px;line-height:22px;margin:0;position:absolute;right:10px;text-shadow:none;top:10px;width:22px}.wpmud .wds-notice.can-close:after{bottom:0;color:#fff;content:"\79";font-style:normal;font-weight:normal;font-variant:normal;font-family:'WPMU-DEV-App-Icons';font-size:22px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;left:0;line-height:22px;opacity:0.8;position:absolute;right:0;speak:none;text-align:center;text-transform:none;top:0;transition:opacity 0.3s}.wpmud .wds-notice.can-close:hover:after{opacity:1}.wpmud .wds-notice-box{margin:20px 0 40px;padding:30px}.wpmud .wds-notice-box p a{font-weight:700;text-decoration:underline}.wpmud .wds-notice-floating{position:fixed;top:30px;right:0;left:0;margin:0 auto;border-top-left-radius:0;border-top-right-radius:0;max-width:600px;box-shadow:0 5px 25px 0 rgba(0,0,0,0.15);z-index:99998}.wpmud .wds-mascot-message{display:table}.wpmud .wds-mascot-message .wds-mascot,.wpmud .wds-mascot-message .wds-mascot-bubble-container{display:table-cell;vertical-align:top}.wpmud .wds-mascot-message .wds-mascot{height:148px;width:100px;background:url("../images/mascot-message.png") no-repeat;background-size:100px 148px}.wpmud .wds-mascot-message .wds-mascot-bubble-container{padding-left:30px}.wpmud .wds-mascot-message .wds-mascot-bubble-container .wds-mascot-bubble{position:relative;background:#E1F6FF;padding:15px 20px;border-radius:4px}.wpmud .wds-mascot-message .wds-mascot-bubble-container .wds-mascot-bubble:after{content:'';position:absolute;border-style:solid;border-width:8px 12px 8px 0;border-color:transparent #E1F6FF;display:block;width:0;z-index:1;left:-12px;top:38%}.wpmud .wds-mascot-message .wds-mascot-bubble-container .wds-mascot-bubble p{color:#333}.wpmud .wds-mascot-message .wds-mascot-bubble-container .wds-mascot-bubble p a{color:#333;text-decoration:underline;font-weight:500}.wpmud .wds-mascot-message .wds-mascot-bubble-container .wds-mascot-bubble-dismiss{float:right;font-size:16px;cursor:pointer;padding-left:10px}.wpmud .wds-keyword-pairs .wds-group-field{clear:none;float:left;margin-left:1%;width:48%}.wpmud .wds-keyword-pairs .wds-group-field:first-child{margin-left:0}.wpmud .wds-keyword-pairs .wds-keyword-pair{margin-top:20px;position:relative}.wpmud .wds-keyword-pairs .wds-keyword-pair:first-child{margin-top:0}.wpmud .wds-keyword-pairs .wds-keyword-pair-new{padding-top:20px}.wpmud .wds-keyword-pairs-existing{margin-top:30px}.wpmud .wds-keyword-pairs-existing tr td.wds-pair-actions{width:10%;text-align:right}.wpmud .wds-keyword-pairs-existing tr td.wds-pair-keyword,.wpmud .wds-keyword-pairs-existing tr td.wds-pair-url{width:45%}.wpmud .wds-keyword-pairs-existing tr td.wds-pair-hidden-fields{display:none}.wpmud .insert-macro{position:absolute;right:0;top:0}.wpmud .insert-macro .button-fields-trigger{border-radius:0 5px 5px 0;float:right;position:relative;font-size:16px;font-weight:300}.wpmud .insert-macro .button-fields-trigger:after{background:#fff;border-bottom:1px solid #fff;border-top:1px solid #fff;bottom:-2px;content:"";display:block;height:1px;left:0;margin:0;opacity:0;pointer-events:none;position:absolute;right:0;width:auto;z-index:11}.wpmud .insert-macro.is-open .button-fields-trigger,.wpmud .insert-macro.is-open .button-fields-trigger:hover:not(:focus):not(:active){background:#fff;border:1px solid #bfbfbf;color:#808080;padding:12px 12px 8px 12px;margin:0;border-radius:0 5px 0 0}.wpmud .insert-macro.is-open .button-fields-trigger:after{opacity:1}.wpmud .insert-macro .macro-list{background:#fff;border:1px solid #BFBFBF;clear:both;height:100%;max-height:260px;overflow-y:auto;padding:5px 0;position:relative;z-index:10}.wpmud .insert-macro .macro-list ul{margin:0;padding:0}.wpmud .insert-macro .macro-list li{cursor:pointer;font:400 13px/26px "Roboto",Arial,sans-serif;margin:0;padding:0 10px}.wpmud .insert-macro .macro-list li:hover{background:#F2F2F2;color:#333}@keyframes wds-metabox-icon-spin{100%{transform:rotate(360deg)}}.wpmud .wds-item-loading{position:relative}.wpmud .wds-item-loading::before{font-family:"wpmu-dev-seo-icons";color:#888;content:"";animation:wds-metabox-icon-spin 1s linear infinite;display:block;position:absolute}.wpmud .wds-strong-text{color:#333;font-size:15px;line-height:30px;font-weight:500;font-family:"Roboto",Arial,sans-serif}.wpmud .wds-small-text{font-size:13px;line-height:22px;color:#888}.wpmud .wds-small-text strong{color:#333}.wpmud .wds-issues{border-radius:13px;display:inline-block;font-size:13px;font-weight:500;line-height:1;padding:5px 16px;vertical-align:middle;margin-left:8px;color:#333;font-family:"Roboto",Arial,sans-serif}.wpmud .wds-issues a{color:#333}.wpmud .wds-issues-invalid{background:#E6E6E6}.wpmud .wds-issues-warning{background:#FECF2F}.wpmud .wds-issues-error{background:#FF7F83;color:#ffffff}.wpmud .wds-issues-error a{color:#ffffff}.wpmud .wds-issues-success-bg{background:#1ABC9C;color:#ffffff}.wpmud .wds-issues-success-bg a{color:#ffffff}.wpmud .wds-issues-success{background:transparent;padding:0}.wpmud .wds-issues-success::before{font-family:"wpmu-dev-seo-icons";content:"_";color:#1ABC9C;font-size:20px}.wpmud .wds-issues.wds-item-loading{background:transparent;padding:0}.wpmud .wds-issues.wds-item-loading span{display:none}.wpmud .wds-issues.wds-item-loading::before{font-size:20px;content:"";color:#888;position:relative}.wpmud .wds-report-stats{background:#ffffff;padding:30px 30px 30px 140px;display:table;width:100%;margin-bottom:30px;border-radius:4px;box-shadow:0 2px 0 0 #E6E6E6;background-repeat:no-repeat;background-position:30px bottom}.wpmud .wds-report-stats>div{display:table-cell;vertical-align:middle;text-align:center;width:40%}.wpmud .wds-report-stats .wds-report-score .wds-score{display:table;font-size:50px;line-height:55px;color:#333;position:relative;margin:0 auto}.wpmud .wds-report-stats .wds-report-score .wds-score::after{content:"!";font-size:20px;position:absolute;font-family:"wpmu-dev-seo-icons";bottom:15px;right:5px}.wpmud .wds-report-stats .wds-report-score .wds-score .wds-total{font-size:13px;line-height:22px;width:26px;display:inline-block}.wpmud .wds-report-stats .wds-report-score .wds-score.wds-score-invalid:after{color:#888}.wpmud .wds-report-stats .wds-report-score .wds-score.wds-score-error:after{color:#FF7F83}.wpmud .wds-report-stats .wds-report-score .wds-score.wds-score-warning:after{color:#FECF2F}.wpmud .wds-report-stats .wds-report-score .wds-score.wds-score-success:after{content:"_";color:#1ABC9C}.wpmud .wds-report-stats .wds-stacked-stats{display:table;width:100%}.wpmud .wds-report-stats .wds-stacked-stats>div{display:table-row}.wpmud .wds-report-stats .wds-stacked-stats>div .wds-stat-name,.wpmud .wds-report-stats .wds-stacked-stats>div .wds-stat-value{display:table-cell;border-bottom:1px solid #EAEAEA;line-height:30px;padding:15px 0}.wpmud .wds-report-stats .wds-stacked-stats>div:first-child .wds-stat-name,.wpmud .wds-report-stats .wds-stacked-stats>div:first-child .wds-stat-value{padding-top:0}.wpmud .wds-report-stats .wds-stacked-stats>div:last-child .wds-stat-name,.wpmud .wds-report-stats .wds-stacked-stats>div:last-child .wds-stat-value{border-bottom:none;padding-bottom:0}.wpmud .wds-report-stats .wds-stacked-stats .wds-stat-name{font-size:13px;color:#333;font-weight:500;text-align:left}.wpmud .wds-report-stats .wds-stacked-stats .wds-stat-value{font-size:18px;color:#888;font-family:"Roboto Condensed","Roboto",Arial,sans-serif;text-align:right}.wpmud .wds-report .wds-accordion{margin-left:-30px;width:calc(100% + 60px);display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;border-top:1px solid #EAEAEA}.wpmud .wds-report .wds-accordion .wds-accordion-section{width:100%;display:block}.wpmud .wds-report .wds-accordion .wds-accordion-section:first-of-type{border-top:none}.wpmud .wds-report .wds-accordion .wds-accordion-section .wds-accordion-handle{display:table;width:100%}.wpmud .wds-report .wds-accordion .wds-accordion-section .wds-accordion-handle::after{display:table-cell;width:20px;float:none;padding-left:20px}.wpmud .wds-report .wds-accordion .wds-accordion-section .wds-accordion-handle::before{display:table-cell;font-family:"wpmu-dev-seo-icons";font-size:20px;margin-right:4px;vertical-align:middle;width:34px}.wpmud .wds-report .wds-accordion .wds-accordion-section .wds-accordion-handle .wds-accordion-handle-part{display:table-cell;vertical-align:middle}.wpmud .wds-report .wds-accordion .wds-accordion-section.wds-check-success{border-left:3px solid #1ABC9C}.wpmud .wds-report .wds-accordion .wds-accordion-section.wds-check-success .wds-accordion-handle::before{content:"_";color:#1ABC9C}.wpmud .wds-report .wds-accordion .wds-accordion-section.wds-check-warning{border-left:3px solid #FECF2F}.wpmud .wds-report .wds-accordion .wds-accordion-section.wds-check-warning .wds-accordion-handle::before{content:"!";color:#FECF2F}.wpmud .wds-report .wds-accordion .wds-accordion-section.wds-check-error{border-left:3px solid #FF7F83}.wpmud .wds-report .wds-accordion .wds-accordion-section.wds-check-error .wds-accordion-handle::before{content:"!";color:#FF7F83}.wpmud .wds-report .wds-accordion .wds-accordion-section.wds-check-invalid{border-left:3px solid #888}.wpmud .wds-report .wds-accordion .wds-accordion-section.wds-check-invalid .wds-accordion-handle:before{content:"!";color:#888}.wpmud .wds-report .wds-accordion .wds-accordion-section.open .wds-accordion-handle{border-bottom:1px solid #E6E6E6;margin-bottom:30px;padding-bottom:18px}.wpmud .wds-report .wds-check-item strong{color:#333}.wpmud .wds-report .wds-check-item p{margin-bottom:15px}.wpmud .wds-report .wds-check-item p:last-child{margin-bottom:0}.wpmud .wds-report .wds-check-item ul{margin:0}.wpmud .wds-report .wds-check-item .wds-recommendation{margin-bottom:15px}.wpmud .wds-report .wds-check-item .wds-more-info{padding-top:15px;border-top:1px solid #EAEAEA}.wpmud .wds-report .wds-check-item .wds-unignore-container{width:90px}.wpmud .wds-report .wds-check-item .wds-ignore-container{margin-top:30px;border:1px solid #EAEAEA;padding:30px;border-radius:7px}.wpmud .wds-report .wds-check-item .wds-check-item-indicator{border-radius:13px;font-size:13px;margin-left:6px;padding:5px 16px;vertical-align:top}.wpmud .wds-report .wds-check-item.wds-check-success .wds-check-item-indicator{color:#ffffff;background:#1ABC9C}.wpmud .wds-report .wds-check-item.wds-check-warning .wds-check-item-indicator{background:#FECF2F}.wpmud .wds-report .wds-check-item.wds-check-error .wds-check-item-indicator{color:#ffffff;background:#FF7F83}.wpmud .wds-report .wds-check-item.wds-check-invalid .wds-check-item-indicator{background:#f2f2f2}.wpmud .wds-report-vertical-tab.tab>label{position:relative}.wpmud .wds-report-vertical-tab.tab>label *{line-height:1}.wpmud .wds-report-vertical-tab.tab>label .wds-issues{display:none;line-height:1;position:absolute;top:2px;right:3px;font-family:"Roboto",Arial,sans-serif;font-weight:500;padding-top:6px;padding-bottom:6px}.wpmud .wds-report-vertical-tab .tab-title{display:table;width:100%}.wpmud .wds-report-vertical-tab .tab-title .wds-issues{display:none;font-family:"Roboto",Arial,sans-serif;font-weight:500}.wpmud .wds-report-vertical-tab .tab-title .wds-tab-title-part:nth-child(1){width:10px;white-space:nowrap}.wpmud .wds-report-vertical-tab .tab-title .wds-tab-title-part:nth-child(3){text-align:right}.wpmud .wds-report-vertical-tab .tab-title .wds-tab-title-part{vertical-align:middle;display:table-cell}.wpmud .wds-report-vertical-tab .tab-title .wds-button-with-left-loader.wds-item-loading::before{right:110%;font-size:18px}.wpmud .wds-report-vertical-tab .tab-title .wds-ignore-all{display:none}.wpmud .wds-report-vertical-tab .wds-seamless-footer{border-top:none;padding:0}.wpmud .wds-report-vertical-tab .wds-content-tabs-inner{padding-bottom:0}.wpmud.wds-metabox #container{margin:0}.wpmud.wds-metabox .wds-issues-invalid:not(.wds-item-loading)::before{content:"-"}.wpmud.wds-metabox a[href="#reload"]{display:none}.wpmud.wds-metabox .wds-analysis-working{background:#E6E6E6;padding:20px 30px}.wpmud.wds-metabox .wds-analysis-working p{margin-left:1.5em;position:relative}.wpmud.wds-metabox .wds-analysis-working p:before{font-family:"wpmu-dev-seo-icons";content:"";animation:wds-metabox-icon-spin 1s linear infinite;display:block;position:absolute;left:-1.5em}.wpmud.wds-metabox button.wds-refresh-analysis:before{font-family:"wpmu-dev-seo-icons";content:"E"}.wpmud.wds-metabox .wds-metabox-section{border-top:1px solid #EAEAEA;padding:30px}.wpmud.wds-metabox .wds-metabox-section:first-of-type{border-top:none}.wpmud.wds-metabox .wds_seo .wds-metabox-preview>.wds-label,.wpmud.wds-metabox .wds_seo .wds-seo-analysis-container>.wds-label{margin-bottom:10px}.wpmud.wds-metabox .wds_seo .wds-preview-description{color:#888}.wpmud.wds-metabox .wds_seo .wds-seo-analysis-container .wds-seo-analysis-label{margin-bottom:20px}.wpmud.wds-metabox .wds_seo .wds-seo-analysis-container .wds-seo-analysis-label label{float:left}.wpmud.wds-metabox .wds_seo .wds-seo-analysis-container .wds-seo-analysis-label button{float:right}.wpmud.wds-metabox .wds_seo .wds-seo-analysis-container .wds-focus-keyword{border:1px solid #EAEAEA;padding:30px;border-radius:7px;margin-bottom:30px;position:relative}.wpmud.wds-metabox .wds_seo .wds-seo-analysis-container .wds-focus-keyword::before{display:none;bottom:40px;right:38px;font-size:20px;z-index:30}.wpmud.wds-metabox .wds_seo .wds-seo-analysis-container .wds-focus-keyword-invalid::before{display:table-cell;content:"!";font-family:"wpmu-dev-seo-icons";color:#888;position:absolute}.wpmud.wds-metabox .wds_seo .wds-seo-analysis-container .wds-focus-keyword-loaded::before{display:table-cell;content:"_";font-family:"wpmu-dev-seo-icons";color:#17a8e3;position:absolute}.wpmud.wds-metabox .wds_seo .wds-seo-analysis-container .wds-focus-keyword.wds-item-loading::before{display:table-cell;content:""}.wpmud.wds-metabox .wds_seo .wds-seo-analysis-container .wds-focus-keyword input{margin-bottom:0}.wpmud.wds-metabox .wds_seo .wds-seo-analysis-container .wds-notice{margin-top:0;margin-bottom:30px}.wpmud.wds-metabox .wds_seo .wds-edit-meta-toggleable .toggle-checkbox{display:none}.wpmud.wds-metabox .wds_seo .wds-edit-meta-toggleable>label{display:table;padding:0;margin:0}.wpmud.wds-metabox .wds_seo .wds-no-focus-keywords .wds-notice-warning{background:#F2F2F2}.wpmud.wds-metabox .wds_seo .wds-no-focus-keywords .wds-notice-warning::before{color:#888}.wpmud.wds-metabox .wds_readability .wds-readability-legend{color:#666666}.wpmud.wds-metabox .wds_readability .wds-readability-legend span{margin-left:30px}.wpmud.wds-metabox .wds_readability .wds-readability-legend span:first-child{margin-left:0}.wpmud.wds-metabox .wds_readability .wds-readability-stats{box-shadow:none;background-image:url("../images/readability-info.png");background-size:92px 107px;background-color:#F8F8F8}.wpmud.wds-metabox .wds_readability .wds-readability-stats .wds-readability-level-description strong{color:#333;font-weight:normal}.wpmud.wds-metabox .wds_readability .wds-list-table{margin-bottom:30px}.wpmud.wds-metabox .wds_readability .wds-list-table tr:nth-child(2n){background:#f8f8f8}.wpmud.wds-metabox .wds_readability .wds-readability-level{text-align:right}.wpmud.wds-metabox .wds-report .wds-accordion .wds-accordion-section.wds-check-error{-ms-flex-order:0;order:0}.wpmud.wds-metabox .wds-report .wds-accordion .wds-accordion-section.wds-check-warning{-ms-flex-order:5;order:5}.wpmud.wds-metabox .wds-report .wds-accordion .wds-accordion-section.wds-check-success{-ms-flex-order:10;order:10}.wpmud.wds-metabox .wds-report .wds-accordion .wds-accordion-section.wds-check-invalid{-ms-flex-order:15;order:15}.wpmud.wds-moz-url-metrics-metabox{padding:25px}#wds-wds-meta-box>h2 span{position:relative}#wds-wds-meta-box>h2 span::before,#wds-wds-meta-box>h2 span::after{border-radius:100%;content:"";display:inline-block;height:12px;position:absolute;top:3px;width:12px}#wds-wds-meta-box>h2 span::before{left:calc(100% + 6px)}#wds-wds-meta-box>h2 span::after{left:calc(100% + 25px)}#wds-wds-meta-box.wds-seo-success>h2 span::before{background:#1ABC9C}#wds-wds-meta-box.wds-seo-warning>h2 span::before{background:#FECF2F}#wds-wds-meta-box.wds-seo-invalid>h2 span::before{background:#E6E6E6}#wds-wds-meta-box.wds-readability-invalid>h2 span::after{background:#E6E6E6}#wds-wds-meta-box.wds-readability-error>h2 span::after{background:#FF7F83}#wds-wds-meta-box.wds-readability-warning>h2 span::after{background:#FECF2F}#wds-wds-meta-box.wds-readability-success>h2 span::after{background:#1ABC9C}#wds-wds-meta-box .inside{padding:0;margin:0;overflow:hidden !important}.misc-pub-section.seo-analysis>i,.misc-pub-section.readability-analysis>i{color:#82878c;font-size:16px;padding-right:5px;vertical-align:-1px}.misc-pub-section.seo-analysis.wds-status-success i,.misc-pub-section.readability-analysis.wds-status-success i{color:#1ABC9C}.misc-pub-section.seo-analysis.wds-status-warning i,.misc-pub-section.readability-analysis.wds-status-warning i{color:#fecf2f}.misc-pub-section.seo-analysis.wds-status-error i,.misc-pub-section.readability-analysis.wds-status-error i{color:#FF6D6D}@keyframes wds-loader-icon-spin{100%{transform:rotate(360deg)}}.wpmud .wds-progress{background-color:#F8F8F8;border-radius:5px;height:60px;overflow:hidden;padding:0 30px;width:100%;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;margin-bottom:10px}.wpmud .wds-progress::before{font-family:"wpmu-dev-seo-icons";color:#888;content:"";font-size:20px;animation:wds-loader-icon-spin 1.5s linear infinite}.wpmud .wds-progress-bar{-ms-flex-positive:3;flex-grow:3;height:10px;border-radius:10px;background:#E6E6E6;overflow:hidden}.wpmud .wds-progress-bar-current-percent{padding-right:10px;padding-left:10px;color:#333;font-size:13px;font-weight:bold;font-family:"Roboto Condensed","Roboto",Arial,sans-serif}.wpmud .wds-progress-bar-inside{background:#17a8e3;height:10px;border-radius:10px;min-width:10px;transition:width 2s}.wpmud .wds-preview{background:#fff;border:1px solid #DFDFDF;padding:30px;border-radius:7px}.wpmud .wds-preview-container{padding-bottom:20px}.wpmud .wds-preview-description{font-size:13px;line-height:22px;margin-top:10px}.wpmud .wds-preview *{font-family:Arial, sans-serif;font-weight:400;letter-spacing:initial;text-align:left}.wpmud .wds-preview-title h3{font-size:18px;line-height:21px;margin:0;text-transform:none}.wpmud .wds-preview-title h3 a{color:#1a0dab;text-decoration:none}.wpmud .wds-preview-url{font-size:14px;line-height:16px;margin-bottom:2px}.wpmud .wds-preview-url a{color:#006621;text-decoration:none}.wpmud .wds-preview-meta{color:#545454;font-size:13px;line-height:18px}.wds-toggleable .wds-toggleable-inside{display:block}.wds-toggleable .wds-toggleable-inside-box{border:1px solid #EAEAEA;border-radius:4px;margin-top:20px;padding:20px 30px}.wds-toggleable.inactive .wds-toggleable-inside{display:none}.wds-toggleable.inactive .wds-toggleable-inside-box{display:none}.wds-toggleable legend{cursor:pointer;color:#BABABA;font-size:15px;font-weight:500;font-family:'Roboto', sans-serif;transition:color .4s}.wds-toggleable legend:hover{color:#808080}.wds-conditional .wds-conditional-inside{display:none}.wds-conditional .wds-conditional-inside-box{border:1px solid #EAEAEA;border-radius:4px;margin-top:20px;padding:20px 30px}.wpmud .wds-links-dropdown{width:25px;position:relative;display:inline-block;text-align:left}.wpmud .wds-links-dropdown-anchor{display:inline-block;font-size:34px;line-height:10px;padding-bottom:20px;vertical-align:top;color:#888}.wpmud .wds-links-dropdown-anchor:hover:not(:focus):not(:active),.wpmud .wds-links-dropdown-anchor:hover,.wpmud .wds-links-dropdown-anchor:active,.wpmud .wds-links-dropdown-anchor:focus{color:#17a8e3}.wpmud .wds-links-dropdown.open .wds-links-dropdown-anchor{color:#17a8e3}.wpmud .wds-links-dropdown.open ul{display:block}.wpmud .wds-links-dropdown-label{color:#333;font-family:"Roboto Condensed","Roboto",Arial,sans-serif;font-size:13px;font-weight:bold;border-bottom:1px solid #E6E6E6;line-height:30px;margin-bottom:20px}.wpmud .wds-links-dropdown ul{border:1px solid #E6E6E6;padding:20px;box-shadow:0 3px 7px 0 rgba(0,0,0,0.05);width:180px;margin-bottom:0;margin-top:0;background:#fff;position:absolute;right:-20px;top:130%;z-index:10;border-radius:5px;display:none}.wpmud .wds-links-dropdown ul li:last-child{margin-bottom:0}.wpmud .wds-links-dropdown ul:after,.wpmud .wds-links-dropdown ul:before{content:'';position:absolute;border-style:solid;border-width:0 9px 9px;display:block;width:0;right:23px}.wpmud .wds-links-dropdown ul:after{border-color:#FFFFFF transparent;z-index:1;top:-8px}.wpmud .wds-links-dropdown ul:before{border-color:#d6d6d6 transparent;z-index:0;top:-9px}.wpmud .wds-styleable-file-input input[type="file"]{width:0.1px;height:0.1px;opacity:0;overflow:hidden;position:absolute;z-index:-1}.wpmud .wds-styleable-file-input input[readonly]{max-width:200px;float:left;border-right:none;border-top-right-radius:0;border-bottom-right-radius:0}.wpmud .wds-styleable-file-input .button{float:left;border-top-left-radius:0;border-bottom-left-radius:0}.wpmud .wds-accordion{background:#f8f8f8}.wpmud .wds-accordion .wds-accordion-section{padding:0;margin:0;border-bottom:1px solid #EAEAEA;position:relative}.wpmud .wds-accordion .wds-accordion-section .wds-accordion-handle{line-height:24px;max-width:100%;margin:0;padding:18px 30px;text-align:left;font-size:15px;color:#333;font-family:"Roboto",Arial,sans-serif;font-weight:500;background:#FFF;cursor:pointer}.wpmud .wds-accordion .wds-accordion-section .wds-accordion-handle:after{font-family:"WPMU-DEV-App-Icons",sans-serif;content:"\65";float:right;font-size:20px;vertical-align:middle;color:#888;cursor:pointer}.wpmud .wds-accordion .wds-accordion-section .wds-accordion-content{padding:30px;background:#FFF;border-radius:7px;box-shadow:0 2px 0 #ddd;display:none}.wpmud .wds-accordion .wds-accordion-section:first-of-type{border-top:1px solid #EAEAEA}.wpmud .wds-accordion .wds-accordion-section.open{padding:18px 30px 30px 30px}.wpmud .wds-accordion .wds-accordion-section.open .wds-accordion-handle{background:transparent;padding:0 0 18px 0}.wpmud .wds-accordion .wds-accordion-section.open .wds-accordion-handle:after{content:"\72"}.wpmud .wds-accordion .wds-accordion-section.open .wds-accordion-content{display:block}.wpmud .wds-accordion .wds-accordion-section.disabled .wds-accordion-handle{cursor:default;color:#666}.wpmud .wds-accordion .wds-accordion-section.disabled .wds-accordion-handle:after{display:none}.wpmud .wds-horizontal-tabs .wds-horizontal-tab-nav{padding:0 20px;border-bottom:1px solid #E6E6E6}.wpmud .wds-horizontal-tabs .wds-horizontal-tab-nav label{padding:15px;margin:0;font-size:15px;font-weight:normal;color:#888;line-height:30px;display:inline-block;vertical-align:middle}.wpmud .wds-horizontal-tabs .wds-horizontal-tab-nav .wds-nav-item{display:inline-table;width:auto;letter-spacing:0.01em;cursor:pointer}.wpmud .wds-horizontal-tabs .wds-horizontal-tab-nav .wds-nav-item.active{border-bottom:2px solid #17a8e3;letter-spacing:0}.wpmud .wds-horizontal-tabs .wds-horizontal-tab-nav .wds-nav-item.active label{color:#333;font-weight:500}.wpmud .wds-horizontal-tabs .wds-horizontal-tab .wds-horizontal-tab-content{display:none}.wpmud .wds-horizontal-tabs .wds-horizontal-tab input[type="radio"]{display:none}.wpmud .wds-horizontal-tabs .wds-horizontal-tab input[type="radio"]:checked+.wds-horizontal-tab-content{display:block}.wds-optimum-length-indicator-field{margin-bottom:0 !important;position:relative;z-index:20}.wds-optimum-length-indicator-field+.wds-optimum-length-indicator{background:transparent;border-radius:4px;height:10px;margin-top:-8px;margin-bottom:15px;position:relative;z-index:10}.wds-optimum-length-indicator-field.over+.wds-optimum-length-indicator,.wds-optimum-length-indicator-field.under+.wds-optimum-length-indicator{background:red}.wds-optimum-length-indicator-field.almost-over+.wds-optimum-length-indicator,.wds-optimum-length-indicator-field.almost-under+.wds-optimum-length-indicator{background:#FECF2F}.wds-optimum-length-indicator-field.just-right+.wds-optimum-length-indicator{background:#1ABC9C}.wpmud .wds-user-search>ul li{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.wpmud .wds-user-search-user{font-size:15px}.wpmud .wds-user-search-user,.wpmud .wds-user-search-you{margin-left:10px;color:#666}.wpmud .wds-user-search-you{background:#F2F2F2;font-size:13px;padding:3px 15px;border-radius:20px;text-transform:uppercase;font-weight:500}.wpmud .wds-user-search-remove{-ms-flex-positive:10;flex-grow:10;text-align:right;font-size:13px}.wpmud .wds-user-search-avatar{width:40px}.wpmud .wds-user-search-avatar .avatar{border-radius:100%;height:auto;width:40px}.wpmud .wds-user-search-field{display:table;width:100%}.wpmud .wds-user-search-field .select2-selection--single{height:40px}.wpmud .wds-user-search-field .select2-selection{border-bottom-right-radius:0;border-top-right-radius:0}.wpmud .wds-user-search-field input[type="button"]{border-bottom-left-radius:0;border-top-left-radius:0}.wpmud .wds-user-search-field>div{display:table-cell;vertical-align:bottom}.wpmud .wds-user-search-field>div:nth-child(2){width:10px}.wpmud .wds-obfuscate-section{background:rgba(242,242,242,0.5);position:absolute;top:0;left:0;width:100%;height:100%;z-index:2}.wpmud .wds-upsell-modal .box{background-image:url("../images/modal-upsell.png");background-position:bottom center;background-repeat:no-repeat;background-size:499px auto;padding-bottom:180px}.wpmud .wds-upgrade-benefits-list li{margin-bottom:20px;margin-left:30px;position:relative}.wpmud .wds-upgrade-benefits-list li:before{position:absolute;content:"_";color:#17a8e3;font-family:"wpmu-dev-seo-icons";right:100%;font-size:18px;margin-right:10px;top:7px}.wpmud .dev-box .box-title h3>i{margin-right:5px;vertical-align:-1px}.wpmud .dev-box .box-content p.wds-small-text{margin-bottom:15px}.wpmud .dev-box .box-content .wds-separator-top{margin-top:20px;padding-top:20px}.wpmud .dev-box .wds-box-stat-value{float:right;font-size:18px;color:#666;font-family:"Roboto Condensed","Roboto",Arial,sans-serif}.wpmud .dev-box .wds-box-stat-value-success{color:#888;font-size:13px;font-family:"Roboto",Arial,sans-serif}.wpmud .dev-box .wds-box-stat-value-success:before{font-family:"wpmu-dev-seo-icons";content:"_";color:#17a8e3;font-size:20px;vertical-align:-4px;margin-right:10px}.wpmud .dev-box .wds-autolinking-section{margin-bottom:30px}.wpmud .dev-box .wds-autolinking-section.wds-box-blocked-area{margin-bottom:0}.wpmud .dev-box .wds-box-blocked-area{margin-left:-30px;padding-bottom:20px;padding-left:30px;padding-right:30px;width:calc(100% + 60px);position:relative}.wpmud .dev-box .wds-box-blocked-area::before{background:rgba(242,242,242,0.5);content:"";height:100%;left:0;position:absolute;top:0;width:100%}.wpmud .dev-box .wds-box-blocked-area .wds-upgrade-button{position:absolute;top:18px;right:30px;padding:5px 16px}.wpmud .dev-box .wds-box-blocked-area .wds-small-text{margin-top:15px}.wpmud .dev-box .box-content .wds-mascot-message.seo-checkup-upsell{margin-bottom:-30px;margin-top:30px}.wpmud .dev-box#wds-content-analysis-box .wds-issues{margin-left:0}.wpmud .dev-box#wds-content-analysis-box .wds-accordion{margin:0;width:100%;border:1px solid #EAEAEA}.wpmud .dev-box#wds-content-analysis-box .wds-accordion .wds-check-item{border:none}.wpmud .dev-box#wds-content-analysis-box.wds-seo-analysis-enabled .wds-accordion,.wpmud .dev-box#wds-content-analysis-box.wds-seo-analysis-enabled .wds-accordion .wds-accordion-handle,.wpmud .dev-box#wds-content-analysis-box.wds-readability-analysis-enabled .wds-accordion,.wpmud .dev-box#wds-content-analysis-box.wds-readability-analysis-enabled .wds-accordion .wds-accordion-handle{border-radius:7px}.wpmud .dev-box#wds-content-analysis-box.wds-readability-analysis-enabled .wds-accordion{margin-top:20px}.wpmud .dev-box#wds-content-analysis-box.wds-seo-analysis-enabled.wds-readability-analysis-enabled .wds-accordion{margin-top:0}.wpmud .dev-box#wds-content-analysis-box.wds-seo-analysis-enabled.wds-readability-analysis-enabled .wds-accordion:first-child,.wpmud .dev-box#wds-content-analysis-box.wds-seo-analysis-enabled.wds-readability-analysis-enabled .wds-accordion:first-child .wds-accordion-handle{border-top-right-radius:7px;border-top-left-radius:7px;border-bottom-right-radius:0;border-bottom-left-radius:0}.wpmud .dev-box#wds-content-analysis-box.wds-seo-analysis-enabled.wds-readability-analysis-enabled .wds-accordion:last-child{border-top:none}.wpmud .dev-box#wds-content-analysis-box.wds-seo-analysis-enabled.wds-readability-analysis-enabled .wds-accordion:last-child,.wpmud .dev-box#wds-content-analysis-box.wds-seo-analysis-enabled.wds-readability-analysis-enabled .wds-accordion:last-child .wds-accordion-handle{border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:7px;border-bottom-left-radius:7px}.wpmud .dev-box#wds-content-analysis-box .wds-list-table tr th,.wpmud .dev-box#wds-content-analysis-box .wds-list-table tr td{padding-right:5px;padding-left:5px}.wpmud .dev-box#wds-content-analysis-box .wds-list-table tr th:first-child,.wpmud .dev-box#wds-content-analysis-box .wds-list-table tr td:first-child{padding-left:20px}.wpmud .dev-box#wds-sitemap-box .wds-box-crawl-stats{float:right}.wpmud .dev-box#wds-sitemap-box .wds-box-stat-value-success::before{color:#1ABC9C}.wpmud .dev-box#wds-seo-checkup .wds-report .wds-accordion .wds-check-success{display:none}.wpmud .dev-box#wds-seo-checkup .wds-box-report-details{padding-top:30px}.wpmud .dev-box#wds-seo-checkup .wds-box-report-details .wds-box-stat-value{padding-top:7px}.wpmud .dev-box#wds-seo-checkup .wds-mascot-message{margin-top:30px;margin-bottom:-30px}.wpmud .dev-box .wds-accordion-handle-part:nth-child(2){text-align:right}.wpmud .dev-box .wds-dash-configure-button::before,.wpmud .dev-box .wds-dash-edit-posts-button::before,.wpmud .dev-box .wds-dash-view-report-button::before,.wpmud .dev-box .wds-dash-view-report-button::before{font-family:"wpmu-dev-seo-icons";margin-right:4px;text-transform:none}.wpmud .dev-box .wds-dash-configure-button::before{content:"\2044"}.wpmud .dev-box .wds-dash-edit-posts-button::before{content:"\2f"}.wpmud .dev-box .wds-dash-view-report-button::before{content:"\e93b"}.wpmud .dev-box .wds-dash-view-report-button::before{content:'\65'}.wpmud .dev-box .wds-notice::before{padding-top:4px}.wpmud .dev-box .wds-notice p{font-size:13px;line-height:22px}.wpmud .wds-onboard-dialog .box{background-image:url("../images/url-crawler-stats.png");background-size:128px 121px;background-repeat:no-repeat;background-position:center bottom;padding-bottom:60px}.wpmud .wds-onboard-dialog .wds-notice::before{padding-top:2px}.wpmud .wds-onboard-dialog .wds-toggle-table{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}.wpmud .wds-onboard-dialog .wds-toggle-table .toggle.wds-toggle{-ms-flex-order:2;order:2}.wpmud .wds-onboard-dialog .wds-onboarding-setup{float:right}.wpmud .wds-dash-stats.wds-seo-checkup-stats{margin-bottom:30px;background-size:141px 141px}.wpmud .wds-dash-stats.wds-seo-checkup-stats .wds-report-score .wds-score{margin-top:0}.wpmud .wds-dash-stats.wds-seo-checkup-stats .wds-last-checkup-never{margin:0 auto;max-width:280px;text-align:left;width:100%}.wpmud .wds-dash-stats.wds-seo-checkup-stats .wds-last-checkup-never .wds-small-text{margin-bottom:15px}.wpmud .wds-dash-stats.wds-seo-checkup-stats .wds-stat-value .wds-crawl-in-progress{color:#888;font-family:"Roboto",Arial,sans-serif;font-size:13px;font-weight:400}.wpmud .wds-dash-stats.wds-seo-checkup-stats .wds-stat-value .wds-crawl-in-progress:before{font-size:13px;color:#888;font-family:"wpmu-dev-seo-icons";content:"";display:inline-table;margin-right:5px;animation:wds-loader-icon-spin 1.5s linear infinite}#wds-show-supported-macros{max-height:520px;overflow-y:scroll}.wpmud .note{float:left;margin:20px 0}.wpmud .wds-preset-separators input[type="radio"]{display:none}.wpmud .wds-preset-separators .separator-selector{background:#f4f4f4;border:1px solid #ddd;border-radius:4px;float:left;margin-right:10px;margin-bottom:10px;min-width:40px;text-align:center;vertical-align:middle;height:40px;line-height:23px}.wpmud .vertical-tabs>.tab input[type="radio"]:checked+label.separator-selector{border:1px solid #17A8E3;background-color:#E1F6FF}.wpmud .wds-custom-separator-message{margin:10px 0 20px 0}.wds-preview-container.wds-preview-loading{opacity:.7}.wpmud .box-sitemaps-xml-sitemap-settings .box-content>p{margin-bottom:10px}.wpmud .wds-sitemap-part{display:table;width:100%;border-bottom:1px solid #EAEAEA;margin-bottom:15px;padding-bottom:15px}.wpmud .wds-sitemap-part:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.wpmud .wds-sitemap-part-label,.wpmud .wds-sitemap-part-name,.wpmud .wds-sitemap-part-toggle{display:table-cell;vertical-align:middle}.wpmud .wds-sitemap-part-name{color:#888;font-size:13px;width:150px}.wpmud .wds-sitemap-part-toggle{width:100px}.wpmud .wds-sitemap-part-toggle .toggle{float:right}.wpmud .wds-sitemap-section{border-bottom:1px solid #EAEAEA;margin-bottom:15px;padding-bottom:20px}.wpmud .wds-sitemap-section:last-child{border-bottom:none;padding-bottom:0;margin-bottom:0}.wpmud .wds-sitemap-section>.wds-sitemap-part{border-bottom:medium none;padding-bottom:0;margin-bottom:0}.wpmud .wds-disable-updates .wds-notice-warning{font-size:13px}.wpmud .wds-content-tabs.tab_url_crawler .wds-list-table td:last-child{text-align:right}.wpmud .wds-content-tabs.tab_url_crawler .wds-list-table td:last-child:first-child{text-align:inherit}.wpmud .wds-content-tabs.tab_url_crawler .wds-list-table tr.wds-controls-row td{padding:30px}.wpmud .wds-content-tabs.tab_url_crawler .wds-crawl-issues-table{margin-bottom:30px}.wpmud .wds-content-tabs.tab_url_crawler .wds-ignored-items-table tbody tr td{background:#F9F9F9}.wpmud .wds-content-tabs.tab_url_crawler .wds-links-dropdown.wds-item-loading{font-size:18px}.wpmud .wds-content-tabs.tab_url_crawler .wds-links-dropdown.wds-item-loading .wds-links-dropdown-anchor{visibility:hidden}.wpmud .wds-content-tabs.tab_url_crawler .wds-url-crawler-stats{display:none}.wpmud .wds-url-crawler-stats{background-image:url("../images/url-crawler-stats.png");background-size:128px 121px}.wpmud .wds-path-occurrences{padding-top:30px;border-top:1px solid #EAEAEA}.wpmud .wds-action-button{float:right}.wpmud .wds-issues-type-sitemap .wds-notice{margin-bottom:30px}.wpmud .wds-postlist-selector-modal .box{background:#F1F1F1;padding:0 10px}.wpmud .wds-postlist-selector-modal .box .title{border-bottom:none;margin:0;padding:15px 0 0 20px}.wpmud .wds-postlist-selector-modal .box .title h3{font-weight:400;padding:0}.wpmud .wds-postlist-selector-modal .box .title .close{color:#777771}.wpmud .wds-postlist-selector-modal .vertical-tabs{margin-bottom:0}.wpmud .wds-postlist-selector-modal .wds-postlist-list-items{margin:0;padding:0}.wpmud .wds-postlist-selector-modal .wds-postlist-list-item{margin:25px 0 0;padding:0}.wpmud .wds-postlist-selector-modal .wds-postlist-list-item-first-child{margin-top:0}.wpmud .wds-postlist-selector-modal .wds-postlist-list-item+label{color:#aaa;margin-left:5px}.wpmud .wds-postlist-selector-modal .wds-postlist-list-item:checked+label{color:#4A4A4A}.wpmud .wds-postlist-selector-modal .wds-postlist-list-pagination{margin-top:30px}.wpmud .wds-postlist-add-post{padding-top:20px}.wpmud .wds-postlist-item-title,.wpmud .wds-postlist-item-type{width:40%}.wpmud .wds-postlist-item-remove{text-align:right}.wpmud .wds-postlist-empty_list{display:none}.wpmud .wds-custom-keywords-modal .wds-action-button{float:right}.wpmud .wds-automatic-linking-insert-links,.wpmud .wds-automatic-linking-link-to{width:calc(50% - 10px);float:left;border:1px solid #EAEAEA;border-radius:5px}.wpmud .wds-automatic-linking-insert-links:last-child,.wpmud .wds-automatic-linking-link-to:last-child{margin-left:20px}.wpmud .wds-automatic-linking-insert-links .label,.wpmud .wds-automatic-linking-link-to .label{width:100%;padding:20px 30px}.wpmud .wds-automatic-linking-insert-links .label .wds-label,.wpmud .wds-automatic-linking-link-to .label .wds-label{font-size:13px}.wpmud .wds-automatic-linking-insert-links .fields,.wpmud .wds-automatic-linking-link-to .fields{width:100%}.wpmud .wds-automatic-linking-insert-links .fields .wds-toggle-table,.wpmud .wds-automatic-linking-link-to .fields .wds-toggle-table{padding:15px 30px;border-top:1px solid #EAEAEA}.wpmud .wds-automatic-linking-insert-links .fields .wds-toggle-table .toggle,.wpmud .wds-automatic-linking-link-to .fields .wds-toggle-table .toggle{width:40px;float:right}.wpmud .wds-automatic-linking-insert-links .fields .wds-toggle-table .wds-toggle-description,.wpmud .wds-automatic-linking-link-to .fields .wds-toggle-table .wds-toggle-description{float:left}.wpmud .wds-moz-table strong{font-size:15px;color:#666;line-height:30px}.wpmud .wds-moz-api-credentials{border:1px solid #EAEAEA;border-radius:4px;padding:30px}.wpmud .wds-moz-api-credentials .button{margin-top:20px;float:right}.wpmud [name="reset-moz-credentials"]{margin-bottom:30px;float:right}.wpmud .wds-redirects input{margin-bottom:0}.wpmud .wds-redirects-buttons-top{margin-bottom:10px}.wpmud .wds-redirects-buttons-bottom button{float:right}.wpmud .wds-redirects .wds-redirection_item-type select{width:200px}.wpmud .wds-redirects .wds-bulk-remove{display:none}.wpmud .wds-redirects .wds-redirects-unsaved-notice{display:none}.wpmud .wds-redirects .wds-redirects-table.wds-list-table th,.wpmud .wds-redirects .wds-redirects-table.wds-list-table td{padding:20px 5px}.wpmud .wds-redirects .wds-redirects-table.wds-list-table th:first-child,.wpmud .wds-redirects .wds-redirects-table.wds-list-table th:last-child,.wpmud .wds-redirects .wds-redirects-table.wds-list-table td:first-child,.wpmud .wds-redirects .wds-redirects-table.wds-list-table td:last-child{width:10px}.wpmud .wds-redirects .wds-redirects-table.wds-list-table th:first-child,.wpmud .wds-redirects .wds-redirects-table.wds-list-table td:first-child{padding-left:20px}.wpmud .wds-redirects .wds-redirects-table.wds-list-table th:last-child,.wpmud .wds-redirects .wds-redirects-table.wds-list-table td:last-child{padding-right:20px}.wpmud .wds-redirects .wds-redirects-table.wds-list-table tbody tr:last-child td{border-bottom:1px solid #EAEAEA}.wpmud .wds-bulk-update-redirects-modal .wds-action-button{float:right}.wpmud .wds-custom-meta-tags{margin-top:15px}.wpmud .wds-meta-tags-example{font-size:0.8em}.wpmud .wds-third-party-plugins{border-radius:7px;border:1px solid #EAEAEA;margin-bottom:20px}.wpmud .wds-third-party-plugins .wds-third-party-plugin{padding:15px 20px;display:table;width:100%}.wpmud .wds-third-party-plugins .wds-third-party-plugin-name,.wpmud .wds-third-party-plugins .wds-third-party-plugin-button{display:table-cell;vertical-align:middle}.wpmud .wds-third-party-plugins .wds-third-party-plugin-name{color:#333;font-size:13px;font-weight:500}.wpmud .wds-third-party-plugins .wds-third-party-plugin-button{text-align:right}.wpmud .wds-third-party-plugins .wds-third-party-plugin.wds-aioseop{border-top:1px solid #EAEAEA}.wpmud .fields{position:relative}.wpmud .fields.wds-twitter-username::before{color:#aaaaaa;content:"@";font-family:"Roboto",Arial,sans-serif;font-size:15px;position:absolute;right:100.8%;top:8px}.wpmud .wds-twitter-embed{margin-top:30px;height:320px}.wpmud .wds-twitter-embed-large{height:560px}.wpmud .wds-twitter-embed iframe{margin:0 auto}.wpmud .wds-seo-checkup-stats{background-image:url("../images/seo-checkup-stats.png");background-size:181px 182px}.wpmud .wds-seo-checkup-stats .wds-checkup-frequency{text-transform:capitalize}.wpmud .wds-seo-checkup-stats .wds-checkup-frequency-details{font-size:13px}.wpmud .wds-content-tabs.tab_checkup .wds-mascot-message.seo-checkup-upsell{margin-top:30px;margin-bottom:-30px}@media only screen and (max-width: 960px){.wpmud .row .col-third,.wpmud .row .col-two-third,.wpmud .row .col-half,.wpmud .row .col-quarter,.wpmud .row .col-three-quarters{display:block;margin-top:30px;padding:0;width:100%}.wpmud .row .col-third:first-child,.wpmud .row .col-two-third:first-child,.wpmud .row .col-half:first-child,.wpmud .row .col-quarter:first-child,.wpmud .row .col-three-quarters:first-child{margin-top:0}}@media only screen and (max-width: 600px){.wpmud .dev-box .box-title{padding:15px 30px}}@media only screen and (max-width: 783px){.wpmud .dev-box .box-title .toggle-troup{margin-top:0}}@media only screen and (max-width: 600px){.wpmud .dev-box .box-title h3,.wpmud .dev-box .box-title .buttons,.wpmud .dev-box .box-title .actions,.wpmud .dev-box .box-title .extra{float:none;display:block}}@media only screen and (max-width: 600px){.wpmud .dev-box .box-title .buttons,.wpmud .dev-box .box-title .actions,.wpmud .dev-box .box-title .extra{margin-top:15px}}@media only screen and (max-width: 600px){.wpmud .dev-box .box-title h3{line-height:1em}}@media only screen and (max-width: 960px){.wpmud .wrap-wds #header h1,.wpmud .wrap-wds #header .actions{display:block;float:none}.wpmud .wrap-wds #header .actions{margin-top:15px;margin-bottom:5px}}@media only screen and (max-width: 1100px){.wpmud .content-box-two-cols-image-left .wds-block-entry{text-align:center}.wpmud .content-box-two-cols-image-left .wds-block-entry-image{float:none;margin-bottom:30px}.wpmud .content-box-two-cols-image-left .wds-block-entry-image .wds-image{margin:0 auto}.wpmud .content-box-two-cols-image-left .wds-block-entry-content{margin:0}.wpmud .content-box-two-cols-image-left .wds-block-entry-content .title{text-align:center}}.wpmud button#collapse-button{font:inherit;text-transform:none}
|
1 |
+
.cf:after,.wpmud #header:after,.wpmud .dev-box .box-title:after,.wpmud .wds-box-footer:after,.wpmud .uptime-message:after,.wpmud .wds-table-fields:after,.wpmud .wds-keyword-pairs .wds-keyword-pair:after,.wpmud .wds-styleable-file-input:after,.wpmud .wds-preset-separators:after,.wpmud .wds-automatic-linking:after,.wpmud .wds-moz-api-credentials:after,.wpmud .wds-import-status-dialog .wds-advanced-import-options:after{content:"";display:table;clear:both}@media only screen and (max-width: 1200px){.hide-to-large{display:none}}@media only screen and (max-width: 1100px){.hide-to-desktop{display:none}}.wpmud .select2-container .select2-selection--single{background:#FAFAFA;border-color:#ddd;height:44px}.wpmud .select2-container .select2-selection--single .select2-selection__rendered{padding:8px 45px 8px 15px;line-height:1;font:500 15px/25px "Roboto"}.wpmud .select2-container .select2-selection--single .select2-selection__arrow{height:39px;width:45px}.wpmud .select2-container .select2-selection--single .select2-selection__arrow::before{content:"\65";display:block;font-family:"WPMU-DEV-App-Icons",sans-serif;font-size:20px;margin-top:9px;text-align:center}.wpmud .select2-container .select2-selection--single b[role="presentation"]{border-color:transparent}.wpmud .select2-container .select2-dropdown{background:#FAFAFA;border-color:#ddd}.wpmud .select2-container .select2-results__option{margin:0;font:500 15px/25px "Roboto";padding:8px 15px}.wpmud .select2-container .select2-results__option--highlighted[aria-selected]{background-color:rgba(0,0,0,0.05);color:#414042}.wpmud .select2-container .select2-results__option[aria-selected=true]{background-color:#17a8e3;color:#fff}.wpmud .select2-container.select2-container--open .select2-selection--single .select2-selection__arrow::before{content:"\72"}.wpmud .select2-container.select2-container--above .select2-selection--single .select2-selection__arrow::before{content:"\72"}.wpmud .select2-container.select2-container--above.select2-container--open .select2-selection--single .select2-selection__arrow::before{content:"\65"}.wpmud .select2-container.select2-container--above.select2-container--open .select2-selection--single .select2-selection__rendered{padding-top:9px}.wds-select2-dropdown-container .select2-selection--single{background:#FAFAFA;border-color:#ddd;height:44px}.wds-select2-dropdown-container .select2-selection--single .select2-selection__rendered{padding:8px 45px 8px 15px;line-height:1;font:500 15px/25px "Roboto"}.wds-select2-dropdown-container .select2-selection--single .select2-selection__arrow{height:39px;width:45px}.wds-select2-dropdown-container .select2-selection--single .select2-selection__arrow::before{content:"\65";display:block;font-family:"WPMU-DEV-App-Icons",sans-serif;font-size:20px;margin-top:9px;text-align:center}.wds-select2-dropdown-container .select2-selection--single b[role="presentation"]{border-color:transparent}.wds-select2-dropdown-container .select2-dropdown{background:#FAFAFA;border-color:#ddd}.wds-select2-dropdown-container .select2-results__option{margin:0;font:500 15px/25px "Roboto";padding:8px 15px}.wds-select2-dropdown-container .select2-results__option--highlighted[aria-selected]{background-color:rgba(0,0,0,0.05);color:#414042}.wds-select2-dropdown-container .select2-results__option[aria-selected=true]{background-color:#17a8e3;color:#fff}.wds-select2-dropdown-container.select2-container--open .select2-selection--single .select2-selection__arrow::before{content:"\72"}.wds-select2-dropdown-container.select2-container--above .select2-selection--single .select2-selection__arrow::before{content:"\72"}.wds-select2-dropdown-container.select2-container--above.select2-container--open .select2-selection--single .select2-selection__arrow::before{content:"\65"}.wds-select2-dropdown-container.select2-container--above.select2-container--open .select2-selection--single .select2-selection__rendered{padding-top:9px}.wpmud{-webkit-font-smoothing:antialiased}.wpmud-html{background-color:#f1f1f1}.wpmud *{box-sizing:border-box}.wpmud strong,.wpmud b{font-weight:500}.wpmud p{color:#666;line-height:30px;margin-bottom:30px}.wpmud #header{margin-bottom:30px}.wpmud #header h1{color:#333;margin:0 0 30px;display:table;float:left}.wpmud #header h1:last-child{margin-bottom:0}.wpmud #header h1 .wds-toggle{vertical-align:top;width:42px}.wpmud #header ~ .sub-header{margin-top:30px;margin-bottom:30px}.wpmud #header .actions{float:right}.wpmud #header .actions .button{vertical-align:middle;margin-left:20px}.wpmud #header .notice,.wpmud #header div.error,.wpmud #header div.updated{clear:both}.wpmud #wpbody{background:transparent}.wpmud #container{margin:30px 30px 0 10px}.wpmud .dev-box{padding:0}.wpmud .dev-box:last-child{margin-bottom:0}.wpmud .dev-box .box-title{clear:both;height:inherit;margin:0;padding:0 30px}.wpmud .dev-box .box-title h3{float:left;font-size:15px;color:#333}.wpmud .dev-box .box-title .buttons.left{float:left;margin:10px 0 0 20px}.wpmud .dev-box .box-content{padding:30px;word-wrap:break-word}.wpmud .dev-box .box-content.no-padding{padding:0}.wpmud .dev-box .box-content.no-vertical-padding{padding-top:0;padding-bottom:0}.wpmud .dev-box .box-content.no-side-padding{padding-right:0;padding-left:0}.wpmud .dev-box .box-content p{margin-bottom:20px}.wpmud .dev-box .box-content p:last-of-type:last-child{margin-bottom:0}.wpmud .dev-box .box-content .wds-standalone-bottom{margin-bottom:0}.wpmud .dev-box .box-content .buttons{margin-top:20px}.wpmud .dev-box .box-content .buttons.buttons-on-left{text-align:left}.wpmud .dev-box .box-content .buttons.buttons-on-right{text-align:right}.wpmud .dev-box .box-footer{margin-top:0;padding:0 30px 30px 30px}.wpmud .dev-box .box-footer.bordered-top{border-top:2px solid #f4f4f4;padding-top:30px}.wpmud .dev-box .box-footer.modal{margin-top:30px;padding:0}.wpmud .dev-box .box-footer.buttons .select-wrapper{display:inline-block}.wpmud .dev-box .box-footer.buttons .select-wrapper>*{display:inline-block}.wpmud .dev-box .box-footer.buttons .select-wrapper>label{float:left;line-height:43px;margin:0 15px 0 0;padding:0;vertical-align:middle}.wpmud .dev-box .box-footer.buttons .button,.wpmud .dev-box .box-footer.buttons input[type="submit"]{display:inline-block;margin-left:20px}.wpmud .dev-box .box-footer.buttons .button:first-child,.wpmud .dev-box .box-footer.buttons input[type="submit"]:first-child{margin-left:0}.wpmud .wds-modal *{box-sizing:border-box}.wpmud .wds-modal.dev-overlay .title h3{color:#333;font-family:"Roboto Condensed","Roboto",Arial,sans-serif;font-size:15px}.wpmud .wds-modal.dev-overlay .back{background:#333;opacity:0.95}.wpmud .wds-modal .box{padding:0}.wpmud .wds-modal .box .title{margin:0;padding:0 30px}.wpmud .wds-modal .box .content{padding:30px}.wpmud .wds-box-footer{border-top:1px solid #EAEAEA;margin:30px -30px -30px;padding:30px}.wpmud form>div.buttons{text-align:center}.wpmud form .vertical-tabs{padding:15px 0 0}.wpmud .vertical-tabs{margin-bottom:30px}.wpmud .vertical-tabs>.tab input[type="radio"]{display:none}.wpmud .vertical-tabs>.tab>.wds-content-tabs{padding:0;border-radius:7px;left:200px}.wpmud .vertical-tabs>.tab>label{color:#888;font:400 15px/20px "Roboto",Arial,sans-serif;padding:5px 15px;border-radius:20px;text-transform:inherit;width:170px;margin:0 0 10px}.wpmud .vertical-tabs>.tab>label:hover{color:#333}.wpmud .vertical-tabs>.tab>label:after{border-bottom:none}.wpmud .vertical-tabs>.tab input[type="radio"]:checked+label{color:#333;background:#eaeaea;box-shadow:none;padding-top:5px;font-weight:500}.wpmud .vertical-tabs .wds-content-tabs .tab-title{font-weight:600;line-height:24px;margin:0;max-width:100%;padding:18px 30px;border-bottom:1px solid #EAEAEA;text-align:left;font-size:15px;color:#333}.wpmud .vertical-tabs .wds-content-tabs .wds-content-tabs-inner{padding:30px;position:relative}.wpmud .vertical-tabs .wds-content-tabs.wds-accordion{background:#f9f9f9}.wpmud .vertical-tabs .wds-content-tabs.wds-accordion .tab-title{border-radius:7px 7px 0 0;background:#FFF;border-bottom:none}.wpmud .vertical-tabs .wds-content-tabs.wds-accordion .tab-sub-title .toggle{position:absolute;right:80px}.wpmud .vertical-tabs .wds-content-tabs.wds-accordion .tab-sub-title .wds-archive-disabled-label{background:#f2f2f2;border-radius:13px;color:#aaaaaa;display:none;font-size:13px;margin-left:6px;padding:5px 16px;vertical-align:top}.wpmud .vertical-tabs .wds-content-tabs.wds-accordion .tab-sub-title.wds-archive-disabled{color:#888}.wpmud .vertical-tabs .wds-content-tabs.wds-accordion .tab-sub-title.wds-archive-disabled .wds-archive-disabled-label{display:inline}.wpmud .row-inside-form{margin-bottom:30px;padding:0}.wpmud .wds-footer-text{margin-top:20px;text-align:left}.wpmud .wds-group{margin-bottom:15px}.wpmud .wds-group:last-child{margin-bottom:0}.wpmud .block-section-footer{margin-top:30px}.wpmud .wds-seamless-footer{background:#FFF;border-radius:0 0 7px 7px;padding:30px;border-top:1px solid #EAEAEA;text-align:right}.wpmud .wds-accordion .wds-seamless-footer{border-top:none}.wpmud .toggle.toggle{line-height:1}.wpmud .toggle.toggle .toggle-label{background:transparent;border:1px solid #ccc;height:18px;width:40px;margin-left:0}.wpmud .toggle.toggle .toggle-label::after{background:#777771;height:18px;width:18px;border-radius:100%;margin:0;box-shadow:none;position:relative;top:0}.wpmud .toggle.toggle .toggle-label::before{display:none}.wpmud .toggle.toggle .toggle-checkbox:hover+.toggle-label::after{background:#777771;box-shadow:none}.wpmud .toggle.toggle .toggle-checkbox+.toggle-label::after{margin-left:-1px;margin-top:-1px}.wpmud .toggle.toggle .toggle-checkbox:checked+.toggle-label{background:#f9f9f9}.wpmud .toggle.toggle .toggle-checkbox:checked+.toggle-label::after{background:#17a8e3;margin-left:22px}.wpmud .toggle.toggle.wds-inverted-toggle .toggle-label{background:#f9f9f9}.wpmud .toggle.toggle.wds-inverted-toggle .toggle-label::after{background:#17a8e3;margin-left:22px}.wpmud .toggle.toggle.wds-inverted-toggle .toggle-checkbox:hover+.toggle-label::after{background:#17a8e3}.wpmud .toggle.toggle.wds-inverted-toggle .toggle-checkbox:checked+.toggle-label{background:transparent}.wpmud .toggle.toggle.wds-inverted-toggle .toggle-checkbox:checked+.toggle-label::after{margin-left:-1px;background:#777771}.wpmud .wds-form .input,.wpmud .wds-form input[type="text"],.wpmud .wds-form input[type="email"],.wpmud .wds-form input[type="search"],.wpmud .wds-form input[type="password"],.wpmud .wds-form input[type="url"],.wpmud .wds-form select,.wpmud .wds-form textarea{background:#FAFAFA;border-color:#ddd;color:#333}.wpmud .wds-form .input:hover:not(:focus):not(:active),.wpmud .wds-form .input:focus,.wpmud .wds-form .input:active,.wpmud .wds-form input[type="text"]:hover:not(:focus):not(:active),.wpmud .wds-form input[type="text"]:focus,.wpmud .wds-form input[type="text"]:active,.wpmud .wds-form input[type="email"]:hover:not(:focus):not(:active),.wpmud .wds-form input[type="email"]:focus,.wpmud .wds-form input[type="email"]:active,.wpmud .wds-form input[type="search"]:hover:not(:focus):not(:active),.wpmud .wds-form input[type="search"]:focus,.wpmud .wds-form input[type="search"]:active,.wpmud .wds-form input[type="password"]:hover:not(:focus):not(:active),.wpmud .wds-form input[type="password"]:focus,.wpmud .wds-form input[type="password"]:active,.wpmud .wds-form input[type="url"]:hover:not(:focus):not(:active),.wpmud .wds-form input[type="url"]:focus,.wpmud .wds-form input[type="url"]:active,.wpmud .wds-form select:hover:not(:focus):not(:active),.wpmud .wds-form select:focus,.wpmud .wds-form select:active,.wpmud .wds-form textarea:hover:not(:focus):not(:active),.wpmud .wds-form textarea:focus,.wpmud .wds-form textarea:active{background:#ffffff;border-color:#ddd}.wpmud .wds-form .input:-ms-input-placeholder,.wpmud .wds-form input[type="text"]:-ms-input-placeholder,.wpmud .wds-form input[type="email"]:-ms-input-placeholder,.wpmud .wds-form input[type="search"]:-ms-input-placeholder,.wpmud .wds-form input[type="password"]:-ms-input-placeholder,.wpmud .wds-form input[type="url"]:-ms-input-placeholder,.wpmud .wds-form select:-ms-input-placeholder,.wpmud .wds-form textarea:-ms-input-placeholder{color:#aaaaaa}.wpmud .wds-form .input::placeholder,.wpmud .wds-form input[type="text"]::placeholder,.wpmud .wds-form input[type="email"]::placeholder,.wpmud .wds-form input[type="search"]::placeholder,.wpmud .wds-form input[type="password"]::placeholder,.wpmud .wds-form input[type="url"]::placeholder,.wpmud .wds-form select::placeholder,.wpmud .wds-form textarea::placeholder{color:#aaaaaa}.wpmud .wds-form .input:disabled,.wpmud .wds-form .input.disabled,.wpmud .wds-form input[type="text"]:disabled,.wpmud .wds-form input[type="text"].disabled,.wpmud .wds-form input[type="email"]:disabled,.wpmud .wds-form input[type="email"].disabled,.wpmud .wds-form input[type="search"]:disabled,.wpmud .wds-form input[type="search"].disabled,.wpmud .wds-form input[type="password"]:disabled,.wpmud .wds-form input[type="password"].disabled,.wpmud .wds-form input[type="url"]:disabled,.wpmud .wds-form input[type="url"].disabled,.wpmud .wds-form select:disabled,.wpmud .wds-form select.disabled,.wpmud .wds-form textarea:disabled,.wpmud .wds-form textarea.disabled{color:#aaaaaa !important;background-color:#ffffff !important;border:1px solid #ddd !important}.wpmud .wds-form .select-container{background:#FAFAFA;border-color:#ddd}.wpmud .wds-form .select-container-no-style{background:transparent;border-color:transparent}.wpmud .wds-form .select-container .dropdown-handle{background:#FAFAFA;border-color:#ddd;border-left-width:0}.wpmud .wds-form .select-container .dropdown-handle .wdv-icon:before{font-family:"WPMU-DEV-App-Icons",sans-serif;content:"\65";color:#A6A6A6;font-size:20px}.wpmud .wds-form .select-container .list-value{color:#333}.wpmud .wds-form .select-container.active:hover .list-value,.wpmud .wds-form .select-container.active .list-value:hover{color:#333}.wpmud .wds-form .select-container.active .dropdown-handle{background:#ffffff;border-left-width:1px}.wpmud button,.wpmud .button{border-radius:4px;padding:10px 20px;background:#17a8e3}.wpmud button:hover:not(:focus):not(:active),.wpmud .button:hover:not(:focus):not(:active){background:#41baec}.wpmud button:active,.wpmud button:focus,.wpmud .button:active,.wpmud .button:focus{background:#1286b5}.wpmud button.button-light,.wpmud .button.button-light{background:transparent}.wpmud button.button-light:hover:not(:focus):not(:active),.wpmud .button.button-light:hover:not(:focus):not(:active){background:#f4f4f4}.wpmud .media-modal .media-frame h2{max-width:100%;font-family:inherit}.wpmud .media-modal .media-frame .media-button{padding:0 12px;text-transform:none}.wpmud .media-modal .media-frame .search,.wpmud .media-modal .media-frame .setting input,.wpmud .media-modal .media-frame .setting textarea,.wpmud .media-modal .media-frame .attachment-filters{border-radius:0;box-shadow:0 1px 2px rgba(0,0,0,0.07) inset;font-size:12px;line-height:1.4em;padding:4px}.wpmud .media-modal .media-frame .search:not(:disabled):not([readonly]),.wpmud .media-modal .media-frame .setting input:not(:disabled):not([readonly]),.wpmud .media-modal .media-frame .setting textarea:not(:disabled):not([readonly]),.wpmud .media-modal .media-frame .attachment-filters:not(:disabled):not([readonly]){background-color:#fff;border:1px solid #ddd}.wpmud .media-modal .media-frame .search{margin-top:11px}.wpmud .media-modal .media-frame .setting{padding:0}.wpmud .media-modal .media-frame .attachment-filters{display:inline;width:100px;max-width:200px;padding:0}.wpmud .media-modal .media-frame .delete-attachment,.wpmud .media-modal .media-frame .trash-attachment,.wpmud .media-modal .media-frame .untrash-attachment{font-family:inherit;font-size:inherit;text-transform:none}.wpmud .media-modal .media-modal-close{background:transparent;border:none;color:#666;cursor:pointer;height:50px;margin:0;outline:medium none;padding:0;position:absolute;right:0;top:0;transition:color 0.1s ease-in-out 0s, background 0.1s ease-in-out 0s;width:50px;z-index:1000}.wpmud .media-modal .media-modal-close:hover:not(:focus):not(:active),.wpmud .media-modal .media-modal-close:hover{color:#00A0D2;background:transparent}.wpmud .notice,.wpmud div.error,.wpmud div.updated{text-align:left}.wpmud #wpbody-content>.error,.wpmud #wpbody-content>.updated{margin:30px 20px 30px 0}.wpmud .wds-image{display:block;height:auto;max-width:100%}.wpmud .wds-image-center{margin-right:auto;margin-left:auto}.wpmud .wds-image-standalone{margin-bottom:30px}.wpmud .wds-listing{margin:0}.wpmud .wds-listing li{font:400 15px/21px "Roboto",Arial,sans-serif;margin-top:20px;margin-bottom:0}.wpmud .wds-listing li:first-child{margin-top:0}.wpmud .wds-listing li strong{font-weight:500}.wpmud .wds-listing li.cta-alt:before{color:#BE1E2D}.wpmud .wds-listing.bold li{font-weight:500}.wpmud .wds-listing-ordered{padding-left:20px}.wpmud .wds-listing .wds-listing-label{color:#777771;font:400 20px/26px "Roboto Condensed","Roboto",Arial,sans-serif;margin-bottom:15px}.wpmud .wds-pre{border-left:none}.wpmud .wds-pre-inline{display:inline-block;margin:0;font-style:italic}.wpmud .wds-title-alt{font-size:30px;font-weight:400;line-height:40px;max-width:none;overflow:hidden;text-overflow:ellipsis;text-transform:none;white-space:nowrap}.wpmud .wds-page-desc{color:#444;font-family:'Open Sans', Arial, sans-serif;font-weight:400;font-size:14px;line-height:20px}.wpmud .uptime-message>*{float:left;line-height:40px;margin-right:10px}.wpmud .uptime-message .wds-dashicons-box-title{margin:0 10px 0 0;height:40px}.wpmud .uptime-message .uptime>span{display:block}.wpmud .uptime-message .uptime-result{font-size:22px;font-weight:700;line-height:26px}.wpmud .uptime-message .uptime-label{color:#bfbfbf;font:400 13px/14px "Roboto Condensed","Roboto",Arial,sans-serif;text-transform:uppercase}.wds-qtip{background:#0B2F3F;border-color:#0B2F3F;color:#FFF;padding:3px}.wpmud .wds-disabled-component{text-align:center}.wpmud .wds-disabled-component .wds-disabled-image{width:128px;height:auto}.wpmud .wds-disabled-component p{margin-bottom:30px}.wpmud .wds-disabled-component .wds-notice{margin-bottom:30px}.wpmud .wds-has-tooltip{cursor:pointer}.wpmud .button.large{padding:20px}.wpmud .button-light-wds{box-shadow:0 0 0 2px #BABABA inset}.wpmud .button-fields-trigger{background:transparent;border:1px solid transparent;color:#888888;font-size:12px;line-height:16px;font-weight:400;padding:12px 12px 9px 12px;transition:background .3s, color .3s, opacity .3s}.wpmud .button-fields-trigger:hover:not(:focus):not(:active),.wpmud .button-fields-trigger:hover,.wpmud .button-fields-trigger:active,.wpmud .button-fields-trigger:focus{background:#EAEAEA;border:1px solid transparent;color:#777771}.wpmud .button.button-cta-alt{background:#BE1E2D;box-shadow:0 3px 0 0 #991825}.wpmud .button.button-cta-alt:hover:not(:focus):not(:active){background:#991825;box-shadow:0 3px 0 0 #660000}.wpmud .button.button-cta-alt:active,.wpmud .button.button-cta-alt:focus{box-shadow:0 3px 0 0 #660000;background:#991825;background:linear-gradient(to bottom, #991825 0%, #BE1E2D 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#991825', endColorstr='#BE1E2D', GradientType=0)}.wpmud .button.button-cta-dark{background:#414042;box-shadow:0 3px 0 0 #231F20}.wpmud .button.button-cta-dark:hover:not(:focus):not(:active){background:#231F20;box-shadow:0 3px 0 0 #0E0D0F}.wpmud .button.button-cta-dark:active,.wpmud .button.button-cta-dark:focus{box-shadow:0 3px 0 0 #0E0D0F;background:#231F20;background:linear-gradient(to bottom, #231F20 0%, #414042 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#231F20', endColorstr='#414042', GradientType=0)}.wpmud .button-white{background:transparent;border:2px solid #fff;box-shadow:none;color:#fff;padding:8px 20px;transition:background .3s, border-color .3s, color .3s, opacity .3s}.wpmud .button-white:hover:not(:focus):not(:active){background:#fff;border-color:#fff;box-shadow:none;color:#4A4A4A}.wpmud .button-white:active,.wpmud .button-white:focus{color:#4A4A4A;box-shadow:none;border:2px solid #E6E6E6;background:#E6E6E6;background:linear-gradient(to bottom, #E6E6E6 0%, #fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#E6E6E6', endColorstr='#fff', GradientType=0);transform:inherit}.wpmud .button-yellow-alt{background:transparent;border:2px solid #FECF2F;box-shadow:none;color:#FECF2F;padding:8px 20px;transition:background .3s, border-color .3s, color .3s, opacity .3s}.wpmud .button-yellow-alt:hover:not(:focus):not(:active){background:#FECF2F;border-color:#FECF2F;box-shadow:none;color:#fff}.wpmud .button-yellow-alt:active,.wpmud .button-yellow-alt:focus{color:#FFFFFF;box-shadow:none;border-color:#E5B616;background:#E5B616;background:linear-gradient(to bottom, #E5B616 0%, #FECF2F 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#E5B616', endColorstr='#FECF2F', GradientType=0)}.wpmud .button-dark{background:#888;color:#ffffff}.wpmud .button-dark:hover:not(:focus):not(:active),.wpmud .button-dark:hover,.wpmud .button-dark:focus,.wpmud .button-dark:active{background:#6f6f6f;color:#ffffff}.wpmud .button-small.button{font-family:"Roboto",Arial,sans-serif;font-size:12px;line-height:16px;padding:7px 16px}.wpmud .button-dark-o{background:transparent;border:2px solid #666;box-shadow:none;color:#666;padding:8px 20px;font-family:"Roboto",Arial,sans-serif;font-weight:500}.wpmud .button-dark-o:hover:not(:focus):not(:active),.wpmud .button-dark-o:hover,.wpmud .button-dark-o:focus,.wpmud .button-dark-o:active{background:transparent;border:2px solid gray;color:gray}.wpmud .button-dark-o.button-small.button{padding:5px 16px}.wpmud .button-pro{border:2px solid #1ABC9C;border-radius:20px;color:#1ABC9C;font-family:"Roboto",Arial,sans-serif;font-size:12px;font-weight:500;line-height:16px;text-transform:uppercase;background:transparent}.wpmud .button-pro:hover:not(:focus):not(:active),.wpmud .button-pro:hover,.wpmud .button-pro:focus,.wpmud .button-pro:active{background:transparent;border:2px solid #148f77;color:#148f77}.wpmud .wds-button-with-loader.wds-item-loading::before{font-size:18px}.wpmud .wds-button-with-left-loader.wds-item-loading::before{right:110%}.wpmud .wds-button-with-right-loader.wds-item-loading::before{left:110%}.wpmud input[type="number"],.wpmud input[type="url"]{background:#FFF;border:1px solid #ddd;border-radius:4px;box-shadow:none;color:#999;display:block;font:500 15px/25px "Roboto",Arial,sans-serif;margin:0px 0px 15px 0px;max-width:100%;padding:7px 15px 6px;transition-property:background, color, border-color;transition-duration:0.3s;width:100%}.wpmud input[type="number"]:focus,.wpmud input[type="url"]:focus{border-color:#BBB;color:#3D464D}.wpmud input[type="number"]:focus::-webkit-input-placeholder,.wpmud input[type="url"]:focus::-webkit-input-placeholder{transition:opacity 0.3s 0.4s ease;opacity:0.25}.wpmud input[type="number"]:focus:-moz-placeholder,.wpmud input[type="url"]:focus:-moz-placeholder{transition:opacity 0.3s 0.4s ease;opacity:0.25}.wpmud input[type="number"]:focus::-moz-placeholder,.wpmud input[type="url"]:focus::-moz-placeholder{transition:opacity 0.3s 0.4s ease;opacity:0.25}.wpmud input[type="number"]:focus:-ms-input-placeholder,.wpmud input[type="url"]:focus:-ms-input-placeholder{transition:opacity 0.3s 0.4s ease;opacity:0.25}.wpmud input[type="number"]:hover:not(:focus),.wpmud input[type="url"]:hover:not(:focus){color:#3D464D}.wpmud input[type="number"]:disabled,.wpmud input[type="url"]:disabled{background:#F6F6F6 !important;color:#AAA !important;border-color:#ddd !important;cursor:default}.wpmud input[type="number"]::-webkit-input-placeholder,.wpmud input[type="url"]::-webkit-input-placeholder{position:relative;top:0}.wpmud input[type="number"]:-moz-placeholder,.wpmud input[type="url"]:-moz-placeholder{position:relative;top:0}.wpmud input[type="number"]::-moz-placeholder,.wpmud input[type="url"]::-moz-placeholder{position:relative;top:0}.wpmud input[type="number"]:-ms-input-placeholder,.wpmud input[type="url"]:-ms-input-placeholder{position:relative;top:0}.wpmud .wds-checkbox,.wpmud .wds-radio{box-shadow:none;line-height:20px;height:20px;min-width:20px;width:20px}.wpmud .wds-checkbox:focus,.wpmud .wds-radio:focus{border-color:#19B99A}.wpmud .wds-checkbox-width-label,.wpmud .wds-radio-width-label{margin-right:0}.wpmud .wds-checkbox{border-radius:4px}.wpmud .wds-checkbox:before{color:#19B99A;height:18px;line-height:20px;margin:0 0 0 -2px;width:18px}.wpmud .wds-checkbox:checked{border-color:#19B99A}.wpmud .wds-checkbox:checked:before{color:#19B99A;height:18px;line-height:20px;margin:0 0 0 -2px;width:18px}.wpmud .wds-checkbox-container input[type="checkbox"]{display:none}.wpmud .wds-checkbox-container label{height:16px;width:16px;padding:0;margin:0}.wpmud .wds-checkbox-container span{background:#FAFAFA;border:1px solid #ddd;height:16px;width:16px;border-radius:4px;display:block}.wpmud .wds-checkbox-container input[type="checkbox"]:checked+span{background:#17a8e3;border:#17a8e3}.wpmud .wds-checkbox-container input[type="checkbox"]:checked+span:before{color:#fff;content:"\7a";display:block;font-family:"WPMU-DEV-App-Icons";font-size:10px;line-height:1;padding:3px}.wpmud .wds-radio{margin-top:0}.wpmud .wds-radio:checked:before{background-color:#19B99A;height:10px;line-height:20px;width:10px}.wpmud .wds-fieldset-legend,.wpmud .wds-label{color:#333;display:block;font-size:15px;line-height:30px;margin-bottom:0;padding:0;text-transform:capitalize;transition:color .4s}.wpmud .wds-fieldset{margin-top:20px}.wpmud .wds-fieldset:first-child{margin-top:0}.wpmud .wds-fieldset-standalone{margin-bottom:20px}.wpmud .wds-fieldset-grey{color:#4A4A4A}.wpmud .wds-label:hover{color:#808080}.wpmud .wds-label.link{color:#19B4CF;display:inline-block;margin:0;text-transform:none}.wpmud .wds-label-inline{display:inline-block}.wpmud .wds-label-inline-left{margin:0 15px 0 0}.wpmud .wds-label-inline-right{margin:0 0 0 15px;max-width:450px}.wpmud .wds-label-description{color:#808080;display:block;font-size:13px;line-height:22px;margin-top:0;margin-bottom:20px}.wpmud .wds-label-radio{color:#4A4A4A}.wpmud .wds-field-legend{color:#808080;display:block;font-size:13px;line-height:18px;margin-top:10px}.wpmud .wds-group-field .wds-field,.wpmud .wds-group-field .wds-select,.wpmud .wds-group-field .wds-textarea{margin-bottom:5px}.wpmud .wds-group-field.has-field-label .wds-field{display:inline-block;width:auto}.wpmud .wds-group-field .wds-field-label{color:#808080;font:400 15px/20px "Roboto",Arial,sans-serif}.wpmud .wds-fieldset-fields{margin-top:15px}.wpmud .wds-fieldset-fields-group{margin:5px 0 0}.wpmud .wds-fieldset-fields-group>p{display:inline-block;margin:0 20px 10px 0 !important}.wpmud .wds-fieldset-fields-group>p:last-child{margin-right:0}.wpmud .wds-fieldset-fields-group .wds-label-inline-right{margin-left:5px}.wpmud .wds-table-fields-group{margin-top:20px}.wpmud .wds-table-fields-group:first-child{margin-top:0}.wpmud .wds-table-fields .label,.wpmud .wds-table-fields .fields{display:block;float:left}.wpmud .wds-table-fields .label{margin-top:5px;padding-right:30px;width:30%}.wpmud .wds-table-fields .label-width-options{margin-top:5px}.wpmud .wds-table-fields .label-long{margin-top:2px}.wpmud .wds-table-fields .label .wds-label{margin-bottom:0}.wpmud .wds-table-fields .fields{width:70%}.wpmud .wds-table-fields .fields .wds-label{color:#666}.wpmud .wds-table-fields .fields-with-legend .wds-field{margin-bottom:5px}.wpmud .wds-table-fields .fields-with-legend-large .wds-field{margin-bottom:10px}.wpmud .wds-table-fields .fields.has-trigger-button{position:relative}.wpmud .wds-table-fields .note{background-color:#f5f5f5;border-radius:3px;clear:both;padding:20px;text-align:center;width:100%}.wpmud .wds-table-fields .note p{color:#4A4A4A;font-weight:400;margin:0;line-height:20px}.wpmud .wds-table-fields .note .wdv-icon{color:#777771;font-size:20px;vertical-align:top}.wpmud .wds-table-fields.wds-table-fields-stacked .label{margin-top:0;padding-right:0;margin-bottom:5px;width:100%}.wpmud .wds-table-fields.wds-table-fields-stacked .label label{color:#888;font-size:12px;font-weight:500;line-height:22px}.wpmud .wds-table-fields.wds-table-fields-stacked .label label span{font-weight:400}.wpmud .wds-table-fields.wds-table-fields-stacked .fields{width:100%}.wpmud .wds-table-fields.wds-table-fields-stacked .select2{margin-bottom:15px}.wpmud .wds-separator-top{margin-top:30px;padding-top:30px;border-top:1px solid #EAEAEA}.wpmud .wds-code-label{display:block;margin-bottom:5px}.wpmud .wds-toggle-table{display:table;width:100%}.wpmud .wds-toggle-table.disabled{opacity:.5}.wpmud .wds-toggle-table .toggle.wds-toggle,.wpmud .wds-toggle-table .wds-toggle-description{display:table-cell;vertical-align:top}.wpmud .wds-toggle-table .wds-toggle-description .wds-label{margin-left:0}.wpmud .wds-toggle-table:last-child .wds-label-description{margin-bottom:0}.wpmud .wds-toggle-table .toggle.wds-toggle{padding-top:6px;width:60px}.wpmud .wds-dashicons{color:#808080;font-size:22px;height:22px;opacity:.5;width:22px}.wpmud .wds-dashicons-link{font-size:24px;height:24px;width:24px;transition:all .4s}.wpmud .wds-dashicons-link:hover{opacity:1}.wpmud .wds-dashicons-box-title{margin:-5px 10px 0 0;vertical-align:middle}.wpmud .wds-icon{background:url("../images/smartCrawl_sprite.png") no-repeat 0 0;background-image:url("../images/smartCrawl_sprite.svg"),none}.wpmud .wds-icon-inline{display:inline-block}.wpmud .wds-icon-inline-left{margin-right:15px}.wpmud .wds-icon-inline-right{margin-left:15px}.wpmud .wds-icon-redirect{background-position:-30px -30px;height:16px;width:18px}.wpmud .wds-icon-list{background-position:-30px -76px;height:16px;width:18px}@font-face{font-family:'wpmu-dev-seo-icons';src:url("../fonts/wpmu-dev-seo-icons.eot?gy02j9");src:url("../fonts/wpmu-dev-seo-icons.eot?gy02j9#iefix") format("embedded-opentype"),url("../fonts/wpmu-dev-seo-icons.woff2?gy02j9") format("woff2"),url("../fonts/wpmu-dev-seo-icons.ttf?gy02j9") format("truetype"),url("../fonts/wpmu-dev-seo-icons.woff?gy02j9") format("woff"),url("../fonts/wpmu-dev-seo-icons.svg?gy02j9#wpmu-dev-seo-icons") format("svg");font-weight:normal;font-style:normal}[class^="wds-icon-"],[class*=" wds-icon-"]{font-family:'wpmu-dev-seo-icons' !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wds-icon-icon-performance:before{content:"\e903"}.wds-icon-power-on-off:before{content:"\e904"}.wds-icon-update-arrow:before{content:"\e902"}.wds-icon-dashboard-settings:before{content:"\e901"}.wds-icon-icon-wpmu-logo-line:before{content:"\203a"}.wds-icon-icon-wpmu-logo-solid:before{content:"\2039"}.wds-icon-star-line:before{content:"\cf"}.wds-icon-notification-count:before{content:"\e900"}.wds-icon-24-hour-support:before{content:"\c1"}.wds-icon-speed-optimize:before{content:"\f8"}.wds-icon-cloudflare:before{content:"\d0"}.wds-icon-alert:before{content:"\58"}.wds-icon-align-center:before{content:"\5e"}.wds-icon-align-justify:before{content:"\23"}.wds-icon-align-left:before{content:"\25"}.wds-icon-align-right:before{content:"\26"}.wds-icon-annotate:before{content:"\b4"}.wds-icon-arrow-up:before{content:"\d4"}.wds-icon-arrow-right:before{content:"\af"}.wds-icon-arrow-down:before{content:"\c2"}.wds-icon-arrow-left:before{content:"\f8ff"}.wds-icon-more:before{content:"\2026"}.wds-icon-minus:before{content:"\2d"}.wds-icon-plus:before{content:"\3d"}.wds-icon-arrow-up-carats:before{content:"\2dd"}.wds-icon-arrow-down-carats:before{content:"\131"}.wds-icon-arrow-left-carats:before{content:"\d3"}.wds-icon-arrow-right-carats:before{content:"\2dc"}.wds-icon-arrows-compress:before{content:"\2265"}.wds-icon-arrows-expand:before{content:"\ac"}.wds-icon-arrows-in:before{content:"\2264"}.wds-icon-arrows-out:before{content:"\2da"}.wds-icon-check:before{content:"\28"}.wds-icon-close:before{content:"\29"}.wds-icon-at-sign:before{content:"\40"}.wds-icon-calendar:before{content:"\220f"}.wds-icon-camera:before{content:"\d8"}.wds-icon-clipboard-notes:before{content:"\bf"}.wds-icon-clock:before{content:"\2c"}.wds-icon-cloud:before{content:"\2122"}.wds-icon-download-cloud:before{content:"\a3"}.wds-icon-upload-cloud:before{content:"\a2"}.wds-icon-comment:before{content:"\a7"}.wds-icon-comments:before{content:"\b6"}.wds-icon-comment-3:before{content:"\aa"}.wds-icon-compass:before{content:"\2c6"}.wds-icon-credit-card:before{content:"\63"}.wds-icon-crop:before{content:"\43"}.wds-icon-crown:before{content:"\a1"}.wds-icon-italic:before{content:"\7b"}.wds-icon-bold:before{content:"\42"}.wds-icon-underline:before{content:"\55"}.wds-icon-text-color:before{content:"\a8"}.wds-icon-style-type:before{content:"\3c"}.wds-icon-quote-2:before{content:"\27"}.wds-icon-quote:before{content:"\3b"}.wds-icon-paperclip:before{content:"\41"}.wds-icon-indent-less:before{content:"\201d"}.wds-icon-indent-more:before{content:"\2019"}.wds-icon-list-bullet:before{content:"\38"}.wds-icon-list-number:before{content:"\37"}.wds-icon-list:before{content:"\60"}.wds-icon-link:before{content:"\35"}.wds-icon-unlink:before{content:"\36"}.wds-icon-color-pick-eyedropper:before{content:"\a5"}.wds-icon-wand-magic:before{content:"\5a"}.wds-icon-layers:before{content:"\e6"}.wds-icon-dislike:before{content:"\6b"}.wds-icon-like:before{content:"\6a"}.wds-icon-dollar:before{content:"\24"}.wds-icon-download:before{content:"\e93b"}.wds-icon-eye:before{content:"\65"}.wds-icon-eye-hide:before{content:"\71"}.wds-icon-arrow-return-back:before{content:"\52"}.wds-icon-first-aid:before{content:"\e93f"}.wds-icon-folder:before{content:"\2d8"}.wds-icon-map:before{content:"\34"}.wds-icon-graph-bar:before{content:"\c7"}.wds-icon-graph-bar_1:before{content:"\2db"}.wds-icon-heart:before{content:"\4b"}.wds-icon-home:before{content:"\4a"}.wds-icon-info:before{content:"\49"}.wds-icon-key:before{content:"\25ca"}.wds-icon-laptop:before{content:"\ab"}.wds-icon-lightbulb:before{content:"\4c"}.wds-icon-asterisk:before{content:"\2a"}.wds-icon-lock:before{content:"\39"}.wds-icon-unlock:before{content:"\30"}.wds-icon-mail:before{content:"\6d"}.wds-icon-location-marker:before{content:"\6c"}.wds-icon-microphone-audio:before{content:"\2030"}.wds-icon-mobile-signal:before{content:"\201b"}.wds-icon-mobile:before{content:"\201c"}.wds-icon-monitor:before{content:"\5c"}.wds-icon-magnifying-glass-search:before{content:"\ba"}.wds-icon-zoom-in:before{content:"\2260"}.wds-icon-zoom-out:before{content:"\2013"}.wds-icon-magnifying-search-glass-love:before{content:"\2022"}.wds-icon-price-tag:before{content:"\2c7"}.wds-icon-bookmark:before{content:"\221a"}.wds-icon-book-bookmark:before{content:"\2d9"}.wds-icon-book:before{content:"\2206"}.wds-icon-page-multiple:before{content:"\e7"}.wds-icon-page-pdf:before{content:"\c6"}.wds-icon-page-search:before{content:"\da"}.wds-icon-page:before{content:"\d2"}.wds-icon-paint-bucket:before{content:"\222b"}.wds-icon-paypal:before{content:"\59"}.wds-icon-pencil:before{content:"\2f"}.wds-icon-photo-picture:before{content:"\44"}.wds-icon-play:before{content:"\70"}.wds-icon-pause:before{content:"\6f"}.wds-icon-fast-forward:before{content:"\3e"}.wds-icon-refresh:before{content:"\45"}.wds-icon-update:before{content:"\ae"}.wds-icon-puzzle:before{content:"\7d"}.wds-icon-layout-grid:before{content:"\221e"}.wds-icon-sheild-badge:before{content:"\e96a"}.wds-icon-coffee-cup:before{content:"\e96b"}.wds-icon-skull:before{content:"\e96c"}.wds-icon-social-android:before{content:"\2e"}.wds-icon-social-apple:before{content:"\61"}.wds-icon-social-drive:before{content:"\76"}.wds-icon-social-dropbox:before{content:"\64"}.wds-icon-social-facebook:before{content:"\66"}.wds-icon-social-github:before{content:"\68"}.wds-icon-social-google-plus:before{content:"\67"}.wds-icon-social-linkedin:before{content:"\69"}.wds-icon-social-twitter:before{content:"\74"}.wds-icon-animation-video:before{content:"\46"}.wds-icon-social-youtube:before{content:"\79"}.wds-icon-white-label-video:before{content:"\75"}.wds-icon-star:before{content:"\53"}.wds-icon-tablet-landscape:before{content:"\5b"}.wds-icon-tablet-portrait:before{content:"\5d"}.wds-icon-thumbnails:before{content:"\47"}.wds-icon-ticket:before{content:"\e97d"}.wds-icon-profile-male:before{content:"\b5"}.wds-icon-profile-female:before{content:"\192"}.wds-icon-community-people:before{content:"\2018"}.wds-icon-trash:before{content:"\51"}.wds-icon-notification:before{content:"\6e"}.wds-icon-user-hero-points-trophy:before{content:"\31"}.wds-icon-megaphone:before{content:"\c5"}.wds-icon-flag:before{content:"\7c"}.wds-icon-stopwatch:before{content:"\e986"}.wds-icon-shopping-cart:before{content:"\cd"}.wds-icon-share:before{content:"\73"}.wds-icon-help-support:before{content:"\48"}.wds-icon-web-globe-world:before{content:"\57"}.wds-icon-widget-settings-config:before{content:"\78"}.wds-icon-wrench-tool:before{content:"\2044"}.wds-icon-settings-slider-control:before{content:"\153"}.wds-icon-filter:before{content:"\7a"}.wds-icon-reply:before{content:"\72"}.wds-icon-finger-point:before{content:"\2248"}.wds-icon-finger-swipe:before{content:"\2203"}.wds-icon-mouse-scroll:before{content:"\df"}.wds-icon-plugin-2:before{content:"\4f"}.wds-icon-brush:before{content:"\7e"}.wds-icon-themes:before{content:"\54"}.wds-icon-plugins:before{content:"\50"}.wds-icon-question:before{content:"\3f"}.wds-icon-warning-alert:before{content:"\21"}.wds-icon-check-tick:before{content:"\5f"}.wds-icon-cross-close:before{content:"\2b"}.wds-icon-user-reputation-points:before{content:"\32"}.wds-icon-user-star-level-up:before{content:"\33"}.wds-icon-icon-devman:before{content:"\20ac"}.wds-icon-icon-defender:before{content:"\b7"}.wds-icon-icon-hub:before{content:"\fb02"}.wds-icon-icon-hummingbird:before{content:"\b0"}.wds-icon-icon-hustle:before{content:"\2014"}.wds-icon-icon-smart-crawl:before{content:"\2202"}.wds-icon-icon-smush:before{content:"\2021"}.wds-icon-icon-snapshot:before{content:"\fb01"}.wds-icon-icon-upfront:before{content:"\201a"}.wds-icon-icon-uptime:before{content:"\b1"}.wds-icon-icon-pulse:before{content:"\201e"}.wds-icon-icon-automate:before{content:"\152"}.wds-icon-academy:before{content:"\3c0"}.wds-icon-wordpress:before{content:"\77"}.wds-icon-infinity:before{content:"\56"}.wds-icon-audio-sound:before{content:"\e9ae"}.wds-icon-sitemap:before{content:"\b8"}.wds-icon-google-analytics:before{content:"\e5"}.wds-icon-progress:before{content:"\e9b1"}.wds-icon-dashboard:before{content:"\e9b2"}.wds-icon-ab-testing:before{content:"\bb"}.wds-icon-testing-bottle-beaker:before{content:"\e9b4"}.wds-icon-archive:before{content:"\62"}.wds-icon-zip:before{content:"\3a9"}.wds-icon-arrow-location:before{content:"\4d"}.wds-icon-arrow-pointer-cursor:before{content:"\4e"}.wds-icon-code:before{content:"\3a"}.wds-icon-news-paper:before{content:"\2211"}.wds-icon-gallery-slider:before{content:"\f7"}.wds-icon-layout:before{content:"\a9"}.wds-icon-storage-server-data:before{content:"\ce"}.wds-icon-loader:before{content:"\e9be"}.wds-icon-rocket-launch:before{content:"\e9bf"}.wds-icon-target:before{content:"\2020"}.wpmud #page-header{margin-bottom:70px;text-align:center}.wpmud .dev-box .box-title .buttons-icon{margin-top:18px}.wpmud .dev-box .box-title .buttons-icon a{width:20px;height:20px;color:#888}.wpmud .wds-table{border:0;border-spacing:0;border-collapse:collapse;width:100%}.wpmud .wds-data-table{border:1px solid #E5E5E5;border-collapse:collapse;border-spacing:0;color:#777771;width:100%}.wpmud .wds-data-table>thead{border-bottom:1px solid #E5E5E5}.wpmud .wds-data-table>tfoot{border-top:1px solid #E5E5E5}.wpmud .wds-data-table>thead th,.wpmud .wds-data-table>tfoot th{font:700 15px/20px "Roboto Condensed","Roboto",Arial,sans-serif;padding:15px 10px;text-transform:uppercase}.wpmud .wds-data-table>tbody td{font-size:13px;line-height:20px;padding:20px 10px;vertical-align:top}.wpmud .wds-data-table th,.wpmud .wds-data-table td{text-align:left}.wpmud .wds-data-table .label{width:75%}.wpmud .wds-data-table .result{width:25%}.wpmud .wds-data-table .data-small{padding:10px}.wpmud .wds-data-table-inverse .label{width:25%}.wpmud .wds-data-table-inverse .result{width:75%}.wpmud .wds-data-table-inverse-large .label{width:40%}.wpmud .wds-data-table-inverse-large .result{width:60%}.wpmud .wds-list-table{width:100%;border:1px solid #EAEAEA;border-collapse:separate;border-spacing:unset;border-radius:5px;color:#888;font-size:13px}.wpmud .wds-list-table th{text-align:left;padding:20px 30px;font-weight:500;color:#333}.wpmud .wds-list-table tr th,.wpmud .wds-list-table tr td{border-bottom:1px solid #EAEAEA}.wpmud .wds-list-table tr td{padding:15px 30px}.wpmud .wds-list-table tr:last-child td{border-bottom:none}.wpmud .wds-list-table tfoot th{border-bottom:none;border-top:1px solid #EAEAEA}@media only screen and (max-width: 783px){.wpmud .list-table>thead>tr>th,.wpmud .list-table>thead>tr>td,.wpmud .list-table>tbody>tr>th,.wpmud .list-table>tbody>tr>td{width:100%}}.wpmud .wds-notice{border-radius:5px;color:#333;font:400 15px/18px "Roboto",Arial,sans-serif;margin:15px 0;padding:20px 30px;position:relative;text-align:left;display:table;width:100%}.wpmud .wds-notice-success{background-color:#D1F1EA}.wpmud .wds-notice-success::before{content:"_";color:#1ABC9C}.wpmud .wds-notice-error{background-color:#FFE5E9}.wpmud .wds-notice-error::before{content:"!";color:#FF6D6D}.wpmud .wds-notice-warning{background-color:#FFF5D5}.wpmud .wds-notice-warning::before{content:"!";color:#fecf2f}.wpmud .wds-notice-info{background-color:#D6EAF3}.wpmud .wds-notice-info::before{content:"!";color:#17a8e3}.wpmud .wds-notice::before{display:table-cell;font-family:"wpmu-dev-seo-icons";font-size:20px;vertical-align:top;width:30px;padding-top:8px}.wpmud .wds-notice p{color:#333;margin:0 0 10px;padding:0;vertical-align:top;display:table-cell}.wpmud .wds-notice p:last-of-type{margin:0}.wpmud .wds-notice p a{color:#333;font-weight:500;text-decoration:underline}.wpmud .wds-notice p a:hover{color:#333;text-decoration:none}.wpmud .wds-notice p a.wds-notice-dismiss{color:#808080;display:table;margin-top:5px;text-decoration:none;text-transform:uppercase}.wpmud .wds-notice .wds-icon,.wpmud .wds-notice .wds-icon .wdv-icon{font-size:22px;height:22px;line-height:22px;width:22px}.wpmud .wds-notice.can-close .close{cursor:pointer;display:block;height:22px;line-height:22px;margin:0;position:absolute;right:10px;text-shadow:none;top:10px;width:22px}.wpmud .wds-notice.can-close:after{bottom:0;color:#fff;content:"\79";font-style:normal;font-weight:normal;font-variant:normal;font-family:'WPMU-DEV-App-Icons';font-size:22px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;left:0;line-height:22px;opacity:0.8;position:absolute;right:0;speak:none;text-align:center;text-transform:none;top:0;transition:opacity 0.3s}.wpmud .wds-notice.can-close:hover:after{opacity:1}.wpmud .wds-notice-box{margin:20px 0 40px;padding:30px}.wpmud .wds-notice-box p a{font-weight:700;text-decoration:underline}.wpmud .wds-notice-floating{position:fixed;top:30px;right:0;left:0;margin:0 auto;border-top-left-radius:0;border-top-right-radius:0;max-width:600px;box-shadow:0 5px 25px 0 rgba(0,0,0,0.15);z-index:99998}.wpmud .wds-mascot-message{display:table}.wpmud .wds-mascot-message .wds-mascot,.wpmud .wds-mascot-message .wds-mascot-bubble-container{display:table-cell;vertical-align:top}.wpmud .wds-mascot-message .wds-mascot{height:148px;width:100px;background:url("../images/mascot-message.png") no-repeat;background-size:100px 148px}.wpmud .wds-mascot-message .wds-mascot-bubble-container{padding-left:30px}.wpmud .wds-mascot-message .wds-mascot-bubble-container .wds-mascot-bubble{position:relative;background:#E1F6FF;padding:15px 20px;border-radius:4px}.wpmud .wds-mascot-message .wds-mascot-bubble-container .wds-mascot-bubble:after{content:'';position:absolute;border-style:solid;border-width:8px 12px 8px 0;border-color:transparent #E1F6FF;display:block;width:0;z-index:1;left:-12px;top:38%}.wpmud .wds-mascot-message .wds-mascot-bubble-container .wds-mascot-bubble p{color:#333}.wpmud .wds-mascot-message .wds-mascot-bubble-container .wds-mascot-bubble p a{color:#333;text-decoration:underline;font-weight:500}.wpmud .wds-mascot-message .wds-mascot-bubble-container .wds-mascot-bubble-dismiss{float:right;font-size:16px;cursor:pointer;padding-left:10px}.wpmud .wds-keyword-pairs .wds-group-field{clear:none;float:left;margin-left:1%;width:48%}.wpmud .wds-keyword-pairs .wds-group-field:first-child{margin-left:0}.wpmud .wds-keyword-pairs .wds-keyword-pair{margin-top:20px;position:relative}.wpmud .wds-keyword-pairs .wds-keyword-pair:first-child{margin-top:0}.wpmud .wds-keyword-pairs .wds-keyword-pair-new{padding-top:20px}.wpmud .wds-keyword-pairs-existing{margin-top:30px}.wpmud .wds-keyword-pairs-existing tr td.wds-pair-actions{width:10%;text-align:right}.wpmud .wds-keyword-pairs-existing tr td.wds-pair-keyword,.wpmud .wds-keyword-pairs-existing tr td.wds-pair-url{width:45%}.wpmud .wds-keyword-pairs-existing tr td.wds-pair-hidden-fields{display:none}.wpmud .insert-macro{position:absolute;right:0;top:0}.wpmud .insert-macro .button-fields-trigger{border-radius:0 5px 5px 0;float:right;position:relative;font-size:16px;font-weight:300}.wpmud .insert-macro .button-fields-trigger:after{background:#fff;border-bottom:1px solid #fff;border-top:1px solid #fff;bottom:-2px;content:"";display:block;height:1px;left:0;margin:0;opacity:0;pointer-events:none;position:absolute;right:0;width:auto;z-index:11}.wpmud .insert-macro.is-open .button-fields-trigger,.wpmud .insert-macro.is-open .button-fields-trigger:hover:not(:focus):not(:active){background:#fff;border:1px solid #bfbfbf;color:#808080;padding:12px 12px 8px 12px;margin:0;border-radius:0 5px 0 0}.wpmud .insert-macro.is-open .button-fields-trigger:after{opacity:1}.wpmud .insert-macro .macro-list{background:#fff;border:1px solid #BFBFBF;clear:both;height:100%;max-height:260px;overflow-y:auto;padding:5px 0;position:relative;z-index:10}.wpmud .insert-macro .macro-list ul{margin:0;padding:0}.wpmud .insert-macro .macro-list li{cursor:pointer;font:400 13px/26px "Roboto",Arial,sans-serif;margin:0;padding:0 10px}.wpmud .insert-macro .macro-list li:hover{background:#F2F2F2;color:#333}@keyframes wds-metabox-icon-spin{100%{transform:rotate(360deg)}}.wpmud .wds-item-loading{position:relative}.wpmud .wds-item-loading::before{font-family:"wpmu-dev-seo-icons";color:#888;content:"";animation:wds-metabox-icon-spin 1s linear infinite;display:block;position:absolute}.wpmud .wds-strong-text{color:#333;font-size:15px;line-height:30px;font-weight:500;font-family:"Roboto",Arial,sans-serif}.wpmud .wds-small-text{font-size:13px;line-height:22px;color:#888}.wpmud .wds-small-text strong{color:#333}.wpmud .wds-issues{border-radius:13px;display:inline-block;font-size:13px;font-weight:500;line-height:1;padding:5px 16px;vertical-align:middle;margin-left:8px;color:#333;font-family:"Roboto",Arial,sans-serif}.wpmud .wds-issues a{color:#333}.wpmud .wds-issues-invalid{background:#E6E6E6}.wpmud .wds-issues-warning{background:#FECF2F}.wpmud .wds-issues-error{background:#FF7F83;color:#ffffff}.wpmud .wds-issues-error a{color:#ffffff}.wpmud .wds-issues-success-bg{background:#1ABC9C;color:#ffffff}.wpmud .wds-issues-success-bg a{color:#ffffff}.wpmud .wds-issues-success{background:transparent;padding:0}.wpmud .wds-issues-success::before{font-family:"wpmu-dev-seo-icons";content:"_";color:#1ABC9C;font-size:20px}.wpmud .wds-issues.wds-item-loading{background:transparent;padding:0}.wpmud .wds-issues.wds-item-loading span{display:none}.wpmud .wds-issues.wds-item-loading::before{font-size:20px;content:"";color:#888;position:relative}.wpmud .wds-report-stats{background:#ffffff;padding:30px 30px 30px 140px;display:table;width:100%;margin-bottom:30px;border-radius:4px;box-shadow:0 2px 0 0 #E6E6E6;background-repeat:no-repeat;background-position:30px bottom}.wpmud .wds-report-stats>div{display:table-cell;vertical-align:middle;text-align:center;width:40%}.wpmud .wds-report-stats .wds-report-score .wds-score{display:table;font-size:50px;line-height:55px;color:#333;position:relative;margin:0 auto}.wpmud .wds-report-stats .wds-report-score .wds-score::after{content:"!";font-size:20px;position:absolute;font-family:"wpmu-dev-seo-icons";bottom:15px;right:5px}.wpmud .wds-report-stats .wds-report-score .wds-score .wds-total{font-size:13px;line-height:22px;width:26px;display:inline-block}.wpmud .wds-report-stats .wds-report-score .wds-score.wds-score-invalid:after{color:#888}.wpmud .wds-report-stats .wds-report-score .wds-score.wds-score-error:after{color:#FF7F83}.wpmud .wds-report-stats .wds-report-score .wds-score.wds-score-warning:after{color:#FECF2F}.wpmud .wds-report-stats .wds-report-score .wds-score.wds-score-success:after{content:"_";color:#1ABC9C}.wpmud .wds-report-stats .wds-stacked-stats{display:table;width:100%}.wpmud .wds-report-stats .wds-stacked-stats>div{display:table-row}.wpmud .wds-report-stats .wds-stacked-stats>div .wds-stat-name,.wpmud .wds-report-stats .wds-stacked-stats>div .wds-stat-value{display:table-cell;border-bottom:1px solid #EAEAEA;line-height:30px;padding:15px 0}.wpmud .wds-report-stats .wds-stacked-stats>div:first-child .wds-stat-name,.wpmud .wds-report-stats .wds-stacked-stats>div:first-child .wds-stat-value{padding-top:0}.wpmud .wds-report-stats .wds-stacked-stats>div:last-child .wds-stat-name,.wpmud .wds-report-stats .wds-stacked-stats>div:last-child .wds-stat-value{border-bottom:none;padding-bottom:0}.wpmud .wds-report-stats .wds-stacked-stats .wds-stat-name{font-size:13px;color:#333;font-weight:500;text-align:left}.wpmud .wds-report-stats .wds-stacked-stats .wds-stat-value{font-size:18px;color:#888;font-family:"Roboto Condensed","Roboto",Arial,sans-serif;text-align:right}.wpmud .wds-report .wds-accordion{margin-left:-30px;width:calc(100% + 60px);display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;border-top:1px solid #EAEAEA}.wpmud .wds-report .wds-accordion .wds-accordion-section{width:100%;display:block}.wpmud .wds-report .wds-accordion .wds-accordion-section:first-of-type{border-top:none}.wpmud .wds-report .wds-accordion .wds-accordion-section .wds-accordion-handle{display:table;width:100%}.wpmud .wds-report .wds-accordion .wds-accordion-section .wds-accordion-handle::after{display:table-cell;width:20px;float:none;padding-left:20px}.wpmud .wds-report .wds-accordion .wds-accordion-section .wds-accordion-handle::before{display:table-cell;font-family:"wpmu-dev-seo-icons";font-size:20px;margin-right:4px;vertical-align:middle;width:34px}.wpmud .wds-report .wds-accordion .wds-accordion-section .wds-accordion-handle .wds-accordion-handle-part{display:table-cell;vertical-align:middle}.wpmud .wds-report .wds-accordion .wds-accordion-section.wds-check-success{border-left:3px solid #1ABC9C}.wpmud .wds-report .wds-accordion .wds-accordion-section.wds-check-success .wds-accordion-handle::before{content:"_";color:#1ABC9C}.wpmud .wds-report .wds-accordion .wds-accordion-section.wds-check-warning{border-left:3px solid #FECF2F}.wpmud .wds-report .wds-accordion .wds-accordion-section.wds-check-warning .wds-accordion-handle::before{content:"!";color:#FECF2F}.wpmud .wds-report .wds-accordion .wds-accordion-section.wds-check-error{border-left:3px solid #FF7F83}.wpmud .wds-report .wds-accordion .wds-accordion-section.wds-check-error .wds-accordion-handle::before{content:"!";color:#FF7F83}.wpmud .wds-report .wds-accordion .wds-accordion-section.wds-check-invalid{border-left:3px solid #888}.wpmud .wds-report .wds-accordion .wds-accordion-section.wds-check-invalid .wds-accordion-handle:before{content:"!";color:#888}.wpmud .wds-report .wds-accordion .wds-accordion-section.open .wds-accordion-handle{border-bottom:1px solid #E6E6E6;margin-bottom:30px;padding-bottom:18px}.wpmud .wds-report .wds-check-item strong{color:#333}.wpmud .wds-report .wds-check-item p{margin-bottom:15px}.wpmud .wds-report .wds-check-item p:last-child{margin-bottom:0}.wpmud .wds-report .wds-check-item ul{margin:0}.wpmud .wds-report .wds-check-item .wds-recommendation{margin-bottom:15px}.wpmud .wds-report .wds-check-item .wds-more-info{padding-top:15px;border-top:1px solid #EAEAEA}.wpmud .wds-report .wds-check-item .wds-unignore-container{width:90px}.wpmud .wds-report .wds-check-item .wds-ignore-container{margin-top:30px;border:1px solid #EAEAEA;padding:30px;border-radius:7px}.wpmud .wds-report .wds-check-item .wds-check-item-indicator{border-radius:13px;font-size:13px;margin-left:6px;padding:5px 16px;vertical-align:top}.wpmud .wds-report .wds-check-item.wds-check-success .wds-check-item-indicator{color:#ffffff;background:#1ABC9C}.wpmud .wds-report .wds-check-item.wds-check-warning .wds-check-item-indicator{background:#FECF2F}.wpmud .wds-report .wds-check-item.wds-check-error .wds-check-item-indicator{color:#ffffff;background:#FF7F83}.wpmud .wds-report .wds-check-item.wds-check-invalid .wds-check-item-indicator{background:#f2f2f2}.wpmud .wds-report-vertical-tab.tab>label{position:relative}.wpmud .wds-report-vertical-tab.tab>label *{line-height:1}.wpmud .wds-report-vertical-tab.tab>label .wds-issues{display:none;line-height:1;position:absolute;top:2px;right:3px;font-family:"Roboto",Arial,sans-serif;font-weight:500;padding-top:6px;padding-bottom:6px}.wpmud .wds-report-vertical-tab .tab-title{display:table;width:100%}.wpmud .wds-report-vertical-tab .tab-title .wds-issues{display:none;font-family:"Roboto",Arial,sans-serif;font-weight:500}.wpmud .wds-report-vertical-tab .tab-title .wds-tab-title-part:nth-child(1){width:10px;white-space:nowrap}.wpmud .wds-report-vertical-tab .tab-title .wds-tab-title-part:nth-child(3){text-align:right}.wpmud .wds-report-vertical-tab .tab-title .wds-tab-title-part{vertical-align:middle;display:table-cell}.wpmud .wds-report-vertical-tab .tab-title .wds-button-with-left-loader.wds-item-loading::before{right:110%;font-size:18px}.wpmud .wds-report-vertical-tab .tab-title .wds-ignore-all{display:none}.wpmud .wds-report-vertical-tab .wds-seamless-footer{border-top:none;padding:0}.wpmud .wds-report-vertical-tab .wds-content-tabs-inner{padding-bottom:0}.wpmud.wds-metabox #container{margin:0}.wpmud.wds-metabox .wds-issues-invalid:not(.wds-item-loading)::before{content:"-"}.wpmud.wds-metabox a[href="#reload"]{display:none}.wpmud.wds-metabox .wds-analysis-working{background:#E6E6E6;padding:20px 30px}.wpmud.wds-metabox .wds-analysis-working p{margin-left:1.5em;position:relative}.wpmud.wds-metabox .wds-analysis-working p:before{font-family:"wpmu-dev-seo-icons";content:"";animation:wds-metabox-icon-spin 1s linear infinite;display:block;position:absolute;left:-1.5em}.wpmud.wds-metabox button.wds-refresh-analysis:before{font-family:"wpmu-dev-seo-icons";content:"E"}.wpmud.wds-metabox .wds-metabox-section{border-top:1px solid #EAEAEA;padding:30px}.wpmud.wds-metabox .wds-metabox-section:first-of-type{border-top:none}.wpmud.wds-metabox .wds_seo .wds-metabox-preview>.wds-label,.wpmud.wds-metabox .wds_seo .wds-seo-analysis-container>.wds-label{margin-bottom:10px}.wpmud.wds-metabox .wds_seo .wds-preview-description{color:#888}.wpmud.wds-metabox .wds_seo .wds-seo-analysis-container .wds-seo-analysis-label{margin-bottom:20px}.wpmud.wds-metabox .wds_seo .wds-seo-analysis-container .wds-seo-analysis-label label{float:left}.wpmud.wds-metabox .wds_seo .wds-seo-analysis-container .wds-seo-analysis-label button{float:right}.wpmud.wds-metabox .wds_seo .wds-seo-analysis-container .wds-focus-keyword{border:1px solid #EAEAEA;padding:30px;border-radius:7px;margin-bottom:30px;position:relative}.wpmud.wds-metabox .wds_seo .wds-seo-analysis-container .wds-focus-keyword::before{display:none;bottom:40px;right:38px;font-size:20px;z-index:30}.wpmud.wds-metabox .wds_seo .wds-seo-analysis-container .wds-focus-keyword-invalid::before{display:table-cell;content:"!";font-family:"wpmu-dev-seo-icons";color:#888;position:absolute}.wpmud.wds-metabox .wds_seo .wds-seo-analysis-container .wds-focus-keyword-loaded::before{display:table-cell;content:"_";font-family:"wpmu-dev-seo-icons";color:#17a8e3;position:absolute}.wpmud.wds-metabox .wds_seo .wds-seo-analysis-container .wds-focus-keyword.wds-item-loading::before{display:table-cell;content:""}.wpmud.wds-metabox .wds_seo .wds-seo-analysis-container .wds-focus-keyword input{margin-bottom:0}.wpmud.wds-metabox .wds_seo .wds-seo-analysis-container .wds-notice{margin-top:0;margin-bottom:30px}.wpmud.wds-metabox .wds_seo .wds-edit-meta-toggleable .toggle-checkbox{display:none}.wpmud.wds-metabox .wds_seo .wds-edit-meta-toggleable>label{display:table;padding:0;margin:0}.wpmud.wds-metabox .wds_seo .wds-no-focus-keywords .wds-notice-warning{background:#F2F2F2}.wpmud.wds-metabox .wds_seo .wds-no-focus-keywords .wds-notice-warning::before{color:#888}.wpmud.wds-metabox .wds_readability .wds-readability-legend{color:#666666}.wpmud.wds-metabox .wds_readability .wds-readability-legend span{margin-left:30px}.wpmud.wds-metabox .wds_readability .wds-readability-legend span:first-child{margin-left:0}.wpmud.wds-metabox .wds_readability .wds-readability-stats{box-shadow:none;background-image:url("../images/readability-info.png");background-size:92px 107px;background-color:#F8F8F8}.wpmud.wds-metabox .wds_readability .wds-readability-stats .wds-readability-level-description strong{color:#333;font-weight:normal}.wpmud.wds-metabox .wds_readability .wds-list-table{margin-bottom:30px}.wpmud.wds-metabox .wds_readability .wds-list-table tr:nth-child(2n){background:#f8f8f8}.wpmud.wds-metabox .wds_readability .wds-readability-level{text-align:right}.wpmud.wds-metabox .wds-report .wds-accordion .wds-accordion-section.wds-check-error{-ms-flex-order:0;order:0}.wpmud.wds-metabox .wds-report .wds-accordion .wds-accordion-section.wds-check-warning{-ms-flex-order:5;order:5}.wpmud.wds-metabox .wds-report .wds-accordion .wds-accordion-section.wds-check-success{-ms-flex-order:10;order:10}.wpmud.wds-metabox .wds-report .wds-accordion .wds-accordion-section.wds-check-invalid{-ms-flex-order:15;order:15}.wpmud.wds-moz-url-metrics-metabox{padding:25px}#wds-wds-meta-box>h2 span{position:relative}#wds-wds-meta-box>h2 span::before,#wds-wds-meta-box>h2 span::after{border-radius:100%;content:"";display:inline-block;height:12px;position:absolute;top:3px;width:12px}#wds-wds-meta-box>h2 span::before{left:calc(100% + 6px)}#wds-wds-meta-box>h2 span::after{left:calc(100% + 25px)}#wds-wds-meta-box.wds-seo-success>h2 span::before{background:#1ABC9C}#wds-wds-meta-box.wds-seo-warning>h2 span::before{background:#FECF2F}#wds-wds-meta-box.wds-seo-invalid>h2 span::before{background:#E6E6E6}#wds-wds-meta-box.wds-readability-invalid>h2 span::after{background:#E6E6E6}#wds-wds-meta-box.wds-readability-error>h2 span::after{background:#FF7F83}#wds-wds-meta-box.wds-readability-warning>h2 span::after{background:#FECF2F}#wds-wds-meta-box.wds-readability-success>h2 span::after{background:#1ABC9C}#wds-wds-meta-box .inside{padding:0;margin:0;overflow:hidden !important}.misc-pub-section.seo-analysis>i,.misc-pub-section.readability-analysis>i{color:#82878c;font-size:16px;padding-right:5px;vertical-align:-1px}.misc-pub-section.seo-analysis.wds-status-success i,.misc-pub-section.readability-analysis.wds-status-success i{color:#1ABC9C}.misc-pub-section.seo-analysis.wds-status-warning i,.misc-pub-section.readability-analysis.wds-status-warning i{color:#fecf2f}.misc-pub-section.seo-analysis.wds-status-error i,.misc-pub-section.readability-analysis.wds-status-error i{color:#FF6D6D}@keyframes wds-loader-icon-spin{100%{transform:rotate(360deg)}}.wpmud .wds-progress{background-color:#F8F8F8;border-radius:5px;height:60px;overflow:hidden;padding:0 30px;width:100%;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;margin-bottom:10px}.wpmud .wds-progress::before{font-family:"wpmu-dev-seo-icons";color:#888;content:"";font-size:20px;animation:wds-loader-icon-spin 1.5s linear infinite}.wpmud .wds-progress-bar{-ms-flex-positive:3;flex-grow:3;height:10px;border-radius:10px;background:#E6E6E6;overflow:hidden}.wpmud .wds-progress-bar-current-percent{padding-right:10px;padding-left:10px;color:#333;font-size:13px;font-weight:bold;font-family:"Roboto Condensed","Roboto",Arial,sans-serif}.wpmud .wds-progress-bar-inside{background:#17a8e3;height:10px;border-radius:10px;min-width:10px;transition:width 2s}.wpmud .wds-preview{background:#fff;border:1px solid #DFDFDF;padding:30px;border-radius:7px}.wpmud .wds-preview-container{padding-bottom:20px}.wpmud .wds-preview-description{font-size:13px;line-height:22px;margin-top:10px}.wpmud .wds-preview *{font-family:Arial, sans-serif;font-weight:400;letter-spacing:initial;text-align:left}.wpmud .wds-preview-title h3{font-size:18px;line-height:21px;margin:0;text-transform:none}.wpmud .wds-preview-title h3 a{color:#1a0dab;text-decoration:none}.wpmud .wds-preview-url{font-size:14px;line-height:16px;margin-bottom:2px}.wpmud .wds-preview-url a{color:#006621;text-decoration:none}.wpmud .wds-preview-meta{color:#545454;font-size:13px;line-height:18px}.wds-toggleable .wds-toggleable-inside{display:block}.wds-toggleable .wds-toggleable-inside-box{border:1px solid #EAEAEA;border-radius:4px;margin-top:20px;padding:20px 30px}.wds-toggleable.inactive .wds-toggleable-inside{display:none}.wds-toggleable.inactive .wds-toggleable-inside-box{display:none}.wds-toggleable legend{cursor:pointer;color:#BABABA;font-size:15px;font-weight:500;font-family:'Roboto', sans-serif;transition:color .4s}.wds-toggleable legend:hover{color:#808080}.wds-conditional .wds-conditional-inside{display:none}.wds-conditional .wds-conditional-inside-box{border:1px solid #EAEAEA;border-radius:4px;margin-top:20px;padding:20px 30px}.wpmud .wds-links-dropdown{width:25px;position:relative;display:inline-block;text-align:left}.wpmud .wds-links-dropdown-anchor{display:inline-block;font-size:34px;line-height:10px;padding-bottom:20px;vertical-align:top;color:#888}.wpmud .wds-links-dropdown-anchor:hover:not(:focus):not(:active),.wpmud .wds-links-dropdown-anchor:hover,.wpmud .wds-links-dropdown-anchor:active,.wpmud .wds-links-dropdown-anchor:focus{color:#17a8e3}.wpmud .wds-links-dropdown.open .wds-links-dropdown-anchor{color:#17a8e3}.wpmud .wds-links-dropdown.open ul{display:block}.wpmud .wds-links-dropdown-label{color:#333;font-family:"Roboto Condensed","Roboto",Arial,sans-serif;font-size:13px;font-weight:bold;border-bottom:1px solid #E6E6E6;line-height:30px;margin-bottom:20px}.wpmud .wds-links-dropdown ul{border:1px solid #E6E6E6;padding:20px;box-shadow:0 3px 7px 0 rgba(0,0,0,0.05);width:180px;margin-bottom:0;margin-top:0;background:#fff;position:absolute;right:-20px;top:130%;z-index:10;border-radius:5px;display:none}.wpmud .wds-links-dropdown ul li:last-child{margin-bottom:0}.wpmud .wds-links-dropdown ul:after,.wpmud .wds-links-dropdown ul:before{content:'';position:absolute;border-style:solid;border-width:0 9px 9px;display:block;width:0;right:23px}.wpmud .wds-links-dropdown ul:after{border-color:#FFFFFF transparent;z-index:1;top:-8px}.wpmud .wds-links-dropdown ul:before{border-color:#d6d6d6 transparent;z-index:0;top:-9px}.wpmud .wds-styleable-file-input input[type="file"]{width:0.1px;height:0.1px;opacity:0;overflow:hidden;position:absolute;z-index:-1}.wpmud .wds-styleable-file-input input[readonly]{max-width:200px;float:left;border-right:none;border-top-right-radius:0;border-bottom-right-radius:0}.wpmud .wds-styleable-file-input .button{float:left;border-top-left-radius:0;border-bottom-left-radius:0}.wpmud .wds-accordion{background:#f8f8f8}.wpmud .wds-accordion .wds-accordion-section{padding:0;margin:0;border-bottom:1px solid #EAEAEA;position:relative}.wpmud .wds-accordion .wds-accordion-section .wds-accordion-handle{line-height:24px;max-width:100%;margin:0;padding:18px 30px;text-align:left;font-size:15px;color:#333;font-family:"Roboto",Arial,sans-serif;font-weight:500;background:#FFF;cursor:pointer}.wpmud .wds-accordion .wds-accordion-section .wds-accordion-handle:after{font-family:"WPMU-DEV-App-Icons",sans-serif;content:"\65";float:right;font-size:20px;vertical-align:middle;color:#888;cursor:pointer}.wpmud .wds-accordion .wds-accordion-section .wds-accordion-content{padding:30px;background:#FFF;border-radius:7px;box-shadow:0 2px 0 #ddd;display:none}.wpmud .wds-accordion .wds-accordion-section:first-of-type{border-top:1px solid #EAEAEA}.wpmud .wds-accordion .wds-accordion-section.open{padding:18px 30px 30px 30px}.wpmud .wds-accordion .wds-accordion-section.open .wds-accordion-handle{background:transparent;padding:0 0 18px 0}.wpmud .wds-accordion .wds-accordion-section.open .wds-accordion-handle:after{content:"\72"}.wpmud .wds-accordion .wds-accordion-section.open .wds-accordion-content{display:block}.wpmud .wds-accordion .wds-accordion-section.disabled .wds-accordion-handle{cursor:default;color:#666}.wpmud .wds-accordion .wds-accordion-section.disabled .wds-accordion-handle:after{display:none}.wpmud .wds-horizontal-tabs .wds-horizontal-tab-nav{padding:0 20px;border-bottom:1px solid #E6E6E6}.wpmud .wds-horizontal-tabs .wds-horizontal-tab-nav label{padding:15px;margin:0;font-size:15px;font-weight:normal;color:#888;line-height:30px;display:inline-block;vertical-align:middle}.wpmud .wds-horizontal-tabs .wds-horizontal-tab-nav .wds-nav-item{display:inline-table;width:auto;letter-spacing:0.01em;cursor:pointer}.wpmud .wds-horizontal-tabs .wds-horizontal-tab-nav .wds-nav-item.active{border-bottom:2px solid #17a8e3;letter-spacing:0}.wpmud .wds-horizontal-tabs .wds-horizontal-tab-nav .wds-nav-item.active label{color:#333;font-weight:500}.wpmud .wds-horizontal-tabs .wds-horizontal-tab .wds-horizontal-tab-content{display:none}.wpmud .wds-horizontal-tabs .wds-horizontal-tab input[type="radio"]{display:none}.wpmud .wds-horizontal-tabs .wds-horizontal-tab input[type="radio"]:checked+.wds-horizontal-tab-content{display:block}.wds-optimum-length-indicator-field{margin-bottom:0 !important;position:relative;z-index:20}.wds-optimum-length-indicator-field+.wds-optimum-length-indicator{background:transparent;border-radius:4px;height:10px;margin-top:-8px;margin-bottom:15px;position:relative;z-index:10}.wds-optimum-length-indicator-field.over+.wds-optimum-length-indicator,.wds-optimum-length-indicator-field.under+.wds-optimum-length-indicator{background:red}.wds-optimum-length-indicator-field.almost-over+.wds-optimum-length-indicator,.wds-optimum-length-indicator-field.almost-under+.wds-optimum-length-indicator{background:#FECF2F}.wds-optimum-length-indicator-field.just-right+.wds-optimum-length-indicator{background:#1ABC9C}.wpmud .wds-user-search>ul li{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.wpmud .wds-user-search-user{font-size:15px}.wpmud .wds-user-search-user,.wpmud .wds-user-search-you{margin-left:10px;color:#666}.wpmud .wds-user-search-you{background:#F2F2F2;font-size:13px;padding:3px 15px;border-radius:20px;text-transform:uppercase;font-weight:500}.wpmud .wds-user-search-remove{-ms-flex-positive:10;flex-grow:10;text-align:right;font-size:13px}.wpmud .wds-user-search-avatar{width:40px}.wpmud .wds-user-search-avatar .avatar{border-radius:100%;height:auto;width:40px}.wpmud .wds-user-search-field{display:table;width:100%}.wpmud .wds-user-search-field .select2-selection--single{height:40px}.wpmud .wds-user-search-field .select2-selection{border-bottom-right-radius:0;border-top-right-radius:0}.wpmud .wds-user-search-field input[type="button"]{border-bottom-left-radius:0;border-top-left-radius:0}.wpmud .wds-user-search-field>div{display:table-cell;vertical-align:bottom}.wpmud .wds-user-search-field>div:nth-child(2){width:10px}.wpmud .wds-obfuscate-section{background:rgba(242,242,242,0.5);position:absolute;top:0;left:0;width:100%;height:100%;z-index:2}.wpmud .wds-upsell-modal .box{background-image:url("../images/modal-upsell.png");background-position:bottom center;background-repeat:no-repeat;background-size:499px auto;padding-bottom:180px}.wpmud .wds-upgrade-benefits-list li{margin-bottom:20px;margin-left:30px;position:relative}.wpmud .wds-upgrade-benefits-list li:before{position:absolute;content:"_";color:#17a8e3;font-family:"wpmu-dev-seo-icons";right:100%;font-size:18px;margin-right:10px;top:7px}.wpmud .dev-box .box-title h3>i{margin-right:5px;vertical-align:-1px}.wpmud .dev-box .box-content p.wds-small-text{margin-bottom:15px}.wpmud .dev-box .box-content .wds-separator-top{margin-top:20px;padding-top:20px}.wpmud .dev-box .wds-box-stat-value{float:right;font-size:18px;color:#666;font-family:"Roboto Condensed","Roboto",Arial,sans-serif}.wpmud .dev-box .wds-box-stat-value-success{color:#888;font-size:13px;font-family:"Roboto",Arial,sans-serif}.wpmud .dev-box .wds-box-stat-value-success:before{font-family:"wpmu-dev-seo-icons";content:"_";color:#17a8e3;font-size:20px;vertical-align:-4px;margin-right:10px}.wpmud .dev-box .wds-autolinking-section{margin-bottom:30px}.wpmud .dev-box .wds-autolinking-section.wds-box-blocked-area{margin-bottom:0}.wpmud .dev-box .wds-box-blocked-area{margin-left:-30px;padding-bottom:20px;padding-left:30px;padding-right:30px;width:calc(100% + 60px);position:relative}.wpmud .dev-box .wds-box-blocked-area::before{background:rgba(242,242,242,0.5);content:"";height:100%;left:0;position:absolute;top:0;width:100%}.wpmud .dev-box .wds-box-blocked-area .wds-upgrade-button{position:absolute;top:18px;right:30px;padding:5px 16px}.wpmud .dev-box .wds-box-blocked-area .wds-small-text{margin-top:15px}.wpmud .dev-box .box-content .wds-mascot-message.seo-checkup-upsell{margin-bottom:-30px;margin-top:30px}.wpmud .dev-box#wds-content-analysis-box .wds-issues{margin-left:0}.wpmud .dev-box#wds-content-analysis-box .wds-accordion{margin:0;width:100%;border:1px solid #EAEAEA}.wpmud .dev-box#wds-content-analysis-box .wds-accordion .wds-check-item{border:none}.wpmud .dev-box#wds-content-analysis-box.wds-seo-analysis-enabled .wds-accordion,.wpmud .dev-box#wds-content-analysis-box.wds-seo-analysis-enabled .wds-accordion .wds-accordion-handle,.wpmud .dev-box#wds-content-analysis-box.wds-readability-analysis-enabled .wds-accordion,.wpmud .dev-box#wds-content-analysis-box.wds-readability-analysis-enabled .wds-accordion .wds-accordion-handle{border-radius:7px}.wpmud .dev-box#wds-content-analysis-box.wds-readability-analysis-enabled .wds-accordion{margin-top:20px}.wpmud .dev-box#wds-content-analysis-box.wds-seo-analysis-enabled.wds-readability-analysis-enabled .wds-accordion{margin-top:0}.wpmud .dev-box#wds-content-analysis-box.wds-seo-analysis-enabled.wds-readability-analysis-enabled .wds-accordion:first-child,.wpmud .dev-box#wds-content-analysis-box.wds-seo-analysis-enabled.wds-readability-analysis-enabled .wds-accordion:first-child .wds-accordion-handle{border-top-right-radius:7px;border-top-left-radius:7px;border-bottom-right-radius:0;border-bottom-left-radius:0}.wpmud .dev-box#wds-content-analysis-box.wds-seo-analysis-enabled.wds-readability-analysis-enabled .wds-accordion:last-child{border-top:none}.wpmud .dev-box#wds-content-analysis-box.wds-seo-analysis-enabled.wds-readability-analysis-enabled .wds-accordion:last-child,.wpmud .dev-box#wds-content-analysis-box.wds-seo-analysis-enabled.wds-readability-analysis-enabled .wds-accordion:last-child .wds-accordion-handle{border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:7px;border-bottom-left-radius:7px}.wpmud .dev-box#wds-content-analysis-box .wds-list-table tr th,.wpmud .dev-box#wds-content-analysis-box .wds-list-table tr td{padding-right:5px;padding-left:5px}.wpmud .dev-box#wds-content-analysis-box .wds-list-table tr th:first-child,.wpmud .dev-box#wds-content-analysis-box .wds-list-table tr td:first-child{padding-left:20px}.wpmud .dev-box#wds-sitemap-box .wds-box-crawl-stats{float:right}.wpmud .dev-box#wds-sitemap-box .wds-box-stat-value-success::before{color:#1ABC9C}.wpmud .dev-box#wds-seo-checkup .wds-report .wds-accordion .wds-check-success{display:none}.wpmud .dev-box#wds-seo-checkup .wds-box-report-details{padding-top:30px}.wpmud .dev-box#wds-seo-checkup .wds-box-report-details .wds-box-stat-value{padding-top:7px}.wpmud .dev-box#wds-seo-checkup .wds-mascot-message{margin-top:30px;margin-bottom:-30px}.wpmud .dev-box .wds-accordion-handle-part:nth-child(2){text-align:right}.wpmud .dev-box .wds-dash-configure-button::before,.wpmud .dev-box .wds-dash-edit-posts-button::before,.wpmud .dev-box .wds-dash-view-report-button::before,.wpmud .dev-box .wds-dash-view-report-button::before{font-family:"wpmu-dev-seo-icons";margin-right:4px;text-transform:none}.wpmud .dev-box .wds-dash-configure-button::before{content:"\2044"}.wpmud .dev-box .wds-dash-edit-posts-button::before{content:"\2f"}.wpmud .dev-box .wds-dash-view-report-button::before{content:"\e93b"}.wpmud .dev-box .wds-dash-view-report-button::before{content:'\65'}.wpmud .dev-box .wds-notice::before{padding-top:4px}.wpmud .dev-box .wds-notice p{font-size:13px;line-height:22px}.wpmud .wds-onboard-dialog .box{background-image:url("../images/url-crawler-stats.png");background-size:128px 121px;background-repeat:no-repeat;background-position:center bottom;padding-bottom:60px}.wpmud .wds-onboard-dialog .wds-notice::before{padding-top:2px}.wpmud .wds-onboard-dialog .wds-toggle-table{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}.wpmud .wds-onboard-dialog .wds-toggle-table .toggle.wds-toggle{-ms-flex-order:2;order:2}.wpmud .wds-onboard-dialog .wds-onboarding-setup{float:right}.wpmud .wds-dash-stats.wds-seo-checkup-stats{margin-bottom:30px;background-size:141px 141px}.wpmud .wds-dash-stats.wds-seo-checkup-stats .wds-report-score .wds-score{margin-top:0}.wpmud .wds-dash-stats.wds-seo-checkup-stats .wds-last-checkup-never{margin:0 auto;max-width:280px;text-align:left;width:100%}.wpmud .wds-dash-stats.wds-seo-checkup-stats .wds-last-checkup-never .wds-small-text{margin-bottom:15px}.wpmud .wds-dash-stats.wds-seo-checkup-stats .wds-stat-value .wds-crawl-in-progress{color:#888;font-family:"Roboto",Arial,sans-serif;font-size:13px;font-weight:400}.wpmud .wds-dash-stats.wds-seo-checkup-stats .wds-stat-value .wds-crawl-in-progress:before{font-size:13px;color:#888;font-family:"wpmu-dev-seo-icons";content:"";display:inline-table;margin-right:5px;animation:wds-loader-icon-spin 1.5s linear infinite}#wds-show-supported-macros{max-height:520px;overflow-y:scroll}.wpmud .note{float:left;margin:20px 0}.wpmud .wds-preset-separators input[type="radio"]{display:none}.wpmud .wds-preset-separators .separator-selector{background:#f4f4f4;border:1px solid #ddd;border-radius:4px;float:left;margin-right:10px;margin-bottom:10px;min-width:40px;text-align:center;vertical-align:middle;height:40px;line-height:23px}.wpmud .vertical-tabs>.tab input[type="radio"]:checked+label.separator-selector{border:1px solid #17A8E3;background-color:#E1F6FF}.wpmud .wds-custom-separator-message{margin:10px 0 20px 0}.wds-preview-container.wds-preview-loading{opacity:.7}.wpmud .box-sitemaps-xml-sitemap-settings .box-content>p{margin-bottom:10px}.wpmud .wds-sitemap-part{display:table;width:100%;border-bottom:1px solid #EAEAEA;margin-bottom:15px;padding-bottom:15px}.wpmud .wds-sitemap-part:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.wpmud .wds-sitemap-part-label,.wpmud .wds-sitemap-part-name,.wpmud .wds-sitemap-part-toggle{display:table-cell;vertical-align:middle}.wpmud .wds-sitemap-part-name{color:#888;font-size:13px;width:150px}.wpmud .wds-sitemap-part-toggle{width:100px}.wpmud .wds-sitemap-part-toggle .toggle{float:right}.wpmud .wds-sitemap-section{border-bottom:1px solid #EAEAEA;margin-bottom:15px;padding-bottom:20px}.wpmud .wds-sitemap-section:last-child{border-bottom:none;padding-bottom:0;margin-bottom:0}.wpmud .wds-sitemap-section>.wds-sitemap-part{border-bottom:medium none;padding-bottom:0;margin-bottom:0}.wpmud .wds-disable-updates .wds-notice-warning{font-size:13px}.wpmud .wds-content-tabs.tab_url_crawler .wds-list-table td:last-child{text-align:right}.wpmud .wds-content-tabs.tab_url_crawler .wds-list-table td:last-child:first-child{text-align:inherit}.wpmud .wds-content-tabs.tab_url_crawler .wds-list-table tr.wds-controls-row td{padding:30px}.wpmud .wds-content-tabs.tab_url_crawler .wds-crawl-issues-table{margin-bottom:30px}.wpmud .wds-content-tabs.tab_url_crawler .wds-ignored-items-table tbody tr td{background:#F9F9F9}.wpmud .wds-content-tabs.tab_url_crawler .wds-links-dropdown.wds-item-loading{font-size:18px}.wpmud .wds-content-tabs.tab_url_crawler .wds-links-dropdown.wds-item-loading .wds-links-dropdown-anchor{visibility:hidden}.wpmud .wds-content-tabs.tab_url_crawler .wds-url-crawler-stats{display:none}.wpmud .wds-url-crawler-stats{background-image:url("../images/url-crawler-stats.png");background-size:128px 121px}.wpmud .wds-path-occurrences{padding-top:30px;border-top:1px solid #EAEAEA}.wpmud .wds-action-button{float:right}.wpmud .wds-issues-type-sitemap .wds-notice{margin-bottom:30px}.wpmud .wds-postlist-selector-modal .box{background:#F1F1F1;padding:0 10px}.wpmud .wds-postlist-selector-modal .box .title{border-bottom:none;margin:0;padding:15px 0 0 20px}.wpmud .wds-postlist-selector-modal .box .title h3{font-weight:400;padding:0}.wpmud .wds-postlist-selector-modal .box .title .close{color:#777771}.wpmud .wds-postlist-selector-modal .vertical-tabs{margin-bottom:0}.wpmud .wds-postlist-selector-modal .wds-postlist-list-items{margin:0;padding:0}.wpmud .wds-postlist-selector-modal .wds-postlist-list-item{margin:25px 0 0;padding:0}.wpmud .wds-postlist-selector-modal .wds-postlist-list-item-first-child{margin-top:0}.wpmud .wds-postlist-selector-modal .wds-postlist-list-item+label{color:#aaa;margin-left:5px}.wpmud .wds-postlist-selector-modal .wds-postlist-list-item:checked+label{color:#4A4A4A}.wpmud .wds-postlist-selector-modal .wds-postlist-list-pagination{margin-top:30px}.wpmud .wds-postlist-add-post{padding-top:20px}.wpmud .wds-postlist-item-title,.wpmud .wds-postlist-item-type{width:40%}.wpmud .wds-postlist-item-remove{text-align:right}.wpmud .wds-postlist-empty_list{display:none}.wpmud .wds-custom-keywords-modal .wds-action-button{float:right}.wpmud .wds-automatic-linking-insert-links,.wpmud .wds-automatic-linking-link-to{width:calc(50% - 10px);float:left;border:1px solid #EAEAEA;border-radius:5px}.wpmud .wds-automatic-linking-insert-links:last-child,.wpmud .wds-automatic-linking-link-to:last-child{margin-left:20px}.wpmud .wds-automatic-linking-insert-links .label,.wpmud .wds-automatic-linking-link-to .label{width:100%;padding:20px 30px}.wpmud .wds-automatic-linking-insert-links .label .wds-label,.wpmud .wds-automatic-linking-link-to .label .wds-label{font-size:13px}.wpmud .wds-automatic-linking-insert-links .fields,.wpmud .wds-automatic-linking-link-to .fields{width:100%}.wpmud .wds-automatic-linking-insert-links .fields .wds-toggle-table,.wpmud .wds-automatic-linking-link-to .fields .wds-toggle-table{padding:15px 30px;border-top:1px solid #EAEAEA}.wpmud .wds-automatic-linking-insert-links .fields .wds-toggle-table .toggle,.wpmud .wds-automatic-linking-link-to .fields .wds-toggle-table .toggle{width:40px;float:right}.wpmud .wds-automatic-linking-insert-links .fields .wds-toggle-table .wds-toggle-description,.wpmud .wds-automatic-linking-link-to .fields .wds-toggle-table .wds-toggle-description{float:left}.wpmud .wds-moz-table strong{font-size:15px;color:#666;line-height:30px}.wpmud .wds-moz-api-credentials{border:1px solid #EAEAEA;border-radius:4px;padding:30px}.wpmud .wds-moz-api-credentials .button{margin-top:20px;float:right}.wpmud [name="reset-moz-credentials"]{margin-bottom:30px;float:right}.wpmud .wds-redirects input{margin-bottom:0}.wpmud .wds-redirects-buttons-top{margin-bottom:10px}.wpmud .wds-redirects-buttons-bottom button{float:right}.wpmud .wds-redirects .wds-redirection_item-type select{width:200px}.wpmud .wds-redirects .wds-bulk-remove{display:none}.wpmud .wds-redirects .wds-redirects-unsaved-notice{display:none}.wpmud .wds-redirects .wds-redirects-table.wds-list-table th,.wpmud .wds-redirects .wds-redirects-table.wds-list-table td{padding:20px 5px}.wpmud .wds-redirects .wds-redirects-table.wds-list-table th:first-child,.wpmud .wds-redirects .wds-redirects-table.wds-list-table th:last-child,.wpmud .wds-redirects .wds-redirects-table.wds-list-table td:first-child,.wpmud .wds-redirects .wds-redirects-table.wds-list-table td:last-child{width:10px}.wpmud .wds-redirects .wds-redirects-table.wds-list-table th:first-child,.wpmud .wds-redirects .wds-redirects-table.wds-list-table td:first-child{padding-left:20px}.wpmud .wds-redirects .wds-redirects-table.wds-list-table th:last-child,.wpmud .wds-redirects .wds-redirects-table.wds-list-table td:last-child{padding-right:20px}.wpmud .wds-redirects .wds-redirects-table.wds-list-table tbody tr:last-child td{border-bottom:1px solid #EAEAEA}.wpmud .wds-bulk-update-redirects-modal .wds-action-button{float:right}.wpmud .wds-custom-meta-tags{margin-top:15px}.wpmud .wds-meta-tags-example{font-size:0.8em}.wpmud .wds-third-party-plugins{border-radius:7px;border:1px solid #EAEAEA;margin-bottom:20px}.wpmud .wds-third-party-plugins .wds-third-party-plugin{padding:15px 20px;display:table;width:100%}.wpmud .wds-third-party-plugins .wds-third-party-plugin-name,.wpmud .wds-third-party-plugins .wds-third-party-plugin-button{display:table-cell;vertical-align:middle}.wpmud .wds-third-party-plugins .wds-third-party-plugin-name{color:#333;font-size:13px;font-weight:500}.wpmud .wds-third-party-plugins .wds-third-party-plugin-button{text-align:right}.wpmud .wds-third-party-plugins .wds-third-party-plugin.wds-aioseop{border-top:1px solid #EAEAEA}.wpmud .wds-import-status-dialog .box{background-image:url("../images/url-crawler-stats.png");background-size:128px 121px;background-repeat:no-repeat;background-position:center bottom;padding-bottom:100px}.wpmud .wds-import-status-dialog .wds-separator-top.wds-import-item{margin-top:15px;padding-top:15px}.wpmud .wds-import-status-dialog .wds-toggle-table{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}.wpmud .wds-import-status-dialog .wds-toggle-table .toggle.wds-toggle{-ms-flex-order:2;order:2;width:auto}.wpmud .wds-import-status-dialog .wds-box-footer-description{color:#888;font-size:13px;float:left}.wpmud .wds-import-status-dialog .wds-import-main-action{float:right;margin-left:20px}.wpmud .wds-import-status-dialog .wds-label{display:table}.wpmud .wds-import-status-dialog .wds-import-placeholder{visibility:hidden}.wpmud .wds-import-status-dialog .wds-site-progress label,.wpmud .wds-import-status-dialog .wds-post-progress label{color:#888;font-size:12px}.wpmud .wds-import-status-dialog .wds-advanced-import-options>span{background:#EAEAEA;padding:3px 7px 6px 6px;display:table;cursor:pointer;float:right;margin-top:20px;border-radius:3px}.wpmud .wds-import-status-dialog .wds-advanced-import-options>span:before{content:"+";margin-right:2px}.wpmud .wds-import-status-dialog .wds-advanced-import-options .wds-separator-top.wds-import-item:first-of-type{margin-top:0;padding-top:20px}.wpmud .wds-import-status-dialog .wds-advanced-import-options-inner{clear:both;display:none}.wpmud .wds-import-status-dialog .wds-advanced-import-options.open>span{border-radius:3px 3px 0 0}.wpmud .wds-import-status-dialog .wds-advanced-import-options.open>span:before{content:"-"}.wpmud .wds-import-status-dialog .wds-advanced-import-options.open .wds-advanced-import-options-inner{display:block}.wpmud .fields{position:relative}.wpmud .fields.wds-twitter-username::before{color:#aaaaaa;content:"@";font-family:"Roboto",Arial,sans-serif;font-size:15px;position:absolute;right:100.8%;top:8px}.wpmud .wds-twitter-embed{margin-top:30px;height:320px}.wpmud .wds-twitter-embed-large{height:560px}.wpmud .wds-twitter-embed iframe{margin:0 auto}.wpmud .wds-seo-checkup-stats{background-image:url("../images/seo-checkup-stats.png");background-size:181px 182px}.wpmud .wds-seo-checkup-stats .wds-checkup-frequency{text-transform:capitalize}.wpmud .wds-seo-checkup-stats .wds-checkup-frequency-details{font-size:13px}.wpmud .wds-content-tabs.tab_checkup .wds-mascot-message.seo-checkup-upsell{margin-top:30px;margin-bottom:-30px}@media only screen and (max-width: 960px){.wpmud .row .col-third,.wpmud .row .col-two-third,.wpmud .row .col-half,.wpmud .row .col-quarter,.wpmud .row .col-three-quarters{display:block;margin-top:30px;padding:0;width:100%}.wpmud .row .col-third:first-child,.wpmud .row .col-two-third:first-child,.wpmud .row .col-half:first-child,.wpmud .row .col-quarter:first-child,.wpmud .row .col-three-quarters:first-child{margin-top:0}}@media only screen and (max-width: 600px){.wpmud .dev-box .box-title{padding:15px 30px}}@media only screen and (max-width: 783px){.wpmud .dev-box .box-title .toggle-troup{margin-top:0}}@media only screen and (max-width: 600px){.wpmud .dev-box .box-title h3,.wpmud .dev-box .box-title .buttons,.wpmud .dev-box .box-title .actions,.wpmud .dev-box .box-title .extra{float:none;display:block}}@media only screen and (max-width: 600px){.wpmud .dev-box .box-title .buttons,.wpmud .dev-box .box-title .actions,.wpmud .dev-box .box-title .extra{margin-top:15px}}@media only screen and (max-width: 600px){.wpmud .dev-box .box-title h3{line-height:1em}}@media only screen and (max-width: 960px){.wpmud .wrap-wds #header h1,.wpmud .wrap-wds #header .actions{display:block;float:none}.wpmud .wrap-wds #header .actions{margin-top:15px;margin-bottom:5px}}@media only screen and (max-width: 1100px){.wpmud .content-box-two-cols-image-left .wds-block-entry{text-align:center}.wpmud .content-box-two-cols-image-left .wds-block-entry-image{float:none;margin-bottom:30px}.wpmud .content-box-two-cols-image-left .wds-block-entry-image .wds-image{margin:0 auto}.wpmud .content-box-two-cols-image-left .wds-block-entry-content{margin:0}.wpmud .content-box-two-cols-image-left .wds-block-entry-content .title{text-align:center}}.wpmud button#collapse-button{font:inherit;text-transform:none}
|
includes/css/wp-dashboard.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.cf:after{content:"";display:table;clear:both}@media only screen and (max-width: 1200px){.hide-to-large{display:none}}@media only screen and (max-width: 1100px){.hide-to-desktop{display:none}}.wpmud .wds-table{border:0;border-spacing:0;border-collapse:collapse;width:100%}.wpmud .wds-data-table{border:1px solid #E5E5E5;border-collapse:collapse;border-spacing:0;color:#777771;width:100%}.wpmud .wds-data-table>thead{border-bottom:1px solid #E5E5E5}.wpmud .wds-data-table>tfoot{border-top:1px solid #E5E5E5}.wpmud .wds-data-table>thead th,.wpmud .wds-data-table>tfoot th{font:700 15px/20px "Roboto Condensed","Roboto",Arial,sans-serif;padding:15px 10px;text-transform:uppercase}.wpmud .wds-data-table>tbody td{font-size:13px;line-height:20px;padding:20px 10px;vertical-align:top}.wpmud .wds-data-table th,.wpmud .wds-data-table td{text-align:left}.wpmud .wds-data-table .label{width:75%}.wpmud .wds-data-table .result{width:25%}.wpmud .wds-data-table .data-small{padding:10px}.wpmud .wds-data-table-inverse .label{width:25%}.wpmud .wds-data-table-inverse .result{width:75%}.wpmud .wds-data-table-inverse-large .label{width:40%}.wpmud .wds-data-table-inverse-large .result{width:60%}.wpmud .wds-list-table{width:100%;border:1px solid #EAEAEA;border-collapse:separate;border-spacing:unset;border-radius:5px;color:#888;font-size:13px}.wpmud .wds-list-table th{text-align:left;padding:20px 30px;font-weight:500;color:#333}.wpmud .wds-list-table tr th,.wpmud .wds-list-table tr td{border-bottom:1px solid #EAEAEA}.wpmud .wds-list-table tr td{padding:15px 30px}.wpmud .wds-list-table tr:last-child td{border-bottom:none}.wpmud .wds-list-table tfoot th{border-bottom:none;border-top:1px solid #EAEAEA}
|
1 |
+
.cf:after,.wds-sitemaps-widget:after{content:"";display:table;clear:both}@media only screen and (max-width: 1200px){.hide-to-large{display:none}}@media only screen and (max-width: 1100px){.hide-to-desktop{display:none}}.wpmud .wds-table{border:0;border-spacing:0;border-collapse:collapse;width:100%}.wpmud .wds-data-table{border:1px solid #E5E5E5;border-collapse:collapse;border-spacing:0;color:#777771;width:100%}.wpmud .wds-data-table>thead{border-bottom:1px solid #E5E5E5}.wpmud .wds-data-table>tfoot{border-top:1px solid #E5E5E5}.wpmud .wds-data-table>thead th,.wpmud .wds-data-table>tfoot th{font:700 15px/20px "Roboto Condensed","Roboto",Arial,sans-serif;padding:15px 10px;text-transform:uppercase}.wpmud .wds-data-table>tbody td{font-size:13px;line-height:20px;padding:20px 10px;vertical-align:top}.wpmud .wds-data-table th,.wpmud .wds-data-table td{text-align:left}.wpmud .wds-data-table .label{width:75%}.wpmud .wds-data-table .result{width:25%}.wpmud .wds-data-table .data-small{padding:10px}.wpmud .wds-data-table-inverse .label{width:25%}.wpmud .wds-data-table-inverse .result{width:75%}.wpmud .wds-data-table-inverse-large .label{width:40%}.wpmud .wds-data-table-inverse-large .result{width:60%}.wpmud .wds-list-table{width:100%;border:1px solid #EAEAEA;border-collapse:separate;border-spacing:unset;border-radius:5px;color:#888;font-size:13px}.wpmud .wds-list-table th{text-align:left;padding:20px 30px;font-weight:500;color:#333}.wpmud .wds-list-table tr th,.wpmud .wds-list-table tr td{border-bottom:1px solid #EAEAEA}.wpmud .wds-list-table tr td{padding:15px 30px}.wpmud .wds-list-table tr:last-child td{border-bottom:none}.wpmud .wds-list-table tfoot th{border-bottom:none;border-top:1px solid #EAEAEA}.wds-sitemaps-widget-left{width:45%;float:left}.wds-sitemaps-widget-right{width:45%;float:right}
|
includes/front.php
CHANGED
@@ -48,6 +48,8 @@ class Smartcrawl_Front {
|
|
48 |
}
|
49 |
}
|
50 |
|
|
|
|
|
51 |
add_filter( 'the_content', array( $this, 'process_frontend_rendering' ), 999 );
|
52 |
|
53 |
}
|
48 |
}
|
49 |
}
|
50 |
|
51 |
+
Smartcrawl_Compatibility::run();
|
52 |
+
|
53 |
add_filter( 'the_content', array( $this, 'process_frontend_rendering' ), 999 );
|
54 |
|
55 |
}
|
includes/js/wds-admin-onpage.js
CHANGED
@@ -26,15 +26,39 @@
|
|
26 |
var $section = $tab.find('.wds-accordion-section.open .wds-content-tabs-inner');
|
27 |
$text = $section.find(':text[name*="title-"]');
|
28 |
}
|
|
|
|
|
|
|
29 |
else {
|
30 |
$text = $tab.find(':text[name*="title-"]');
|
31 |
}
|
32 |
|
33 |
-
if ($text.length) {
|
34 |
render_preview_change.apply($text.get(), arguments);
|
35 |
}
|
36 |
}
|
37 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
38 |
/**
|
39 |
* Handles change/keyup event title&meta preview update dispatch
|
40 |
*
|
26 |
var $section = $tab.find('.wds-accordion-section.open .wds-content-tabs-inner');
|
27 |
$text = $section.find(':text[name*="title-"]');
|
28 |
}
|
29 |
+
else if ($('[data-type="static-homepage"]', $tab).length) {
|
30 |
+
load_static_homepage_preview();
|
31 |
+
}
|
32 |
else {
|
33 |
$text = $tab.find(':text[name*="title-"]');
|
34 |
}
|
35 |
|
36 |
+
if ($text && $text.length) {
|
37 |
render_preview_change.apply($text.get(), arguments);
|
38 |
}
|
39 |
}
|
40 |
|
41 |
+
function load_static_homepage_preview() {
|
42 |
+
var $container = $('[data-type="static-homepage"]'),
|
43 |
+
$preview = $container.find(".wds-preview-container");
|
44 |
+
|
45 |
+
$preview.addClass("wds-preview-loading");
|
46 |
+
$.post(ajaxurl, {
|
47 |
+
action: "wds-onpage-preview",
|
48 |
+
type: $container.data("type"),
|
49 |
+
_wds_nonce: _wds_onpage.nonce
|
50 |
+
}, 'json').done(function (rsp) {
|
51 |
+
var status = (rsp || {}).status || false,
|
52 |
+
html = (rsp || {}).markup || false;
|
53 |
+
|
54 |
+
if (status && !!html) {
|
55 |
+
$preview.replaceWith(html);
|
56 |
+
}
|
57 |
+
}).always(function () {
|
58 |
+
$preview.removeClass("wds-preview-loading");
|
59 |
+
});
|
60 |
+
}
|
61 |
+
|
62 |
/**
|
63 |
* Handles change/keyup event title&meta preview update dispatch
|
64 |
*
|
includes/js/wds-admin-pointers.js
ADDED
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery(document).ready(function ($) {
|
2 |
+
function open_pointer(id) {
|
3 |
+
var pointers = (_wds_pointers || {}).pointers;
|
4 |
+
if (!pointers || !pointers[id]) {
|
5 |
+
return;
|
6 |
+
}
|
7 |
+
|
8 |
+
var pointer = pointers[id],
|
9 |
+
options = $.extend(pointer.options, {
|
10 |
+
pointerClass: 'wp-pointer wds-pointer',
|
11 |
+
show: function (event, target) {
|
12 |
+
target.pointer.css({'position': 'fixed'});
|
13 |
+
target.pointer.data('target', pointer.target);
|
14 |
+
},
|
15 |
+
close: function () {
|
16 |
+
$.post(ajaxurl, {
|
17 |
+
pointer: pointer.pointer_id,
|
18 |
+
action: 'dismiss-wp-pointer'
|
19 |
+
});
|
20 |
+
}
|
21 |
+
});
|
22 |
+
|
23 |
+
var $target = $(pointer.target);
|
24 |
+
$target.pointer(options);
|
25 |
+
if ($target.is(':visible')) {
|
26 |
+
$target.pointer('open');
|
27 |
+
}
|
28 |
+
}
|
29 |
+
|
30 |
+
function reposition_all_pointers() {
|
31 |
+
$('.wds-pointer').each(function (index, element) {
|
32 |
+
var $target = $($(element).data('target'));
|
33 |
+
if ($target.is(':visible') && $target.pointer('instance')) {
|
34 |
+
$target.pointer('reposition');
|
35 |
+
}
|
36 |
+
});
|
37 |
+
}
|
38 |
+
|
39 |
+
$(document).on('wp-collapse-menu', reposition_all_pointers);
|
40 |
+
$(window).on('resize', _.debounce(reposition_all_pointers, 250));
|
41 |
+
|
42 |
+
open_pointer('wds-activation-pointer');
|
43 |
+
});
|
includes/js/wds-admin-settings.js
CHANGED
@@ -10,75 +10,6 @@
|
|
10 |
$new_input.find('input').val('').focus();
|
11 |
}
|
12 |
|
13 |
-
function import_yoast_data_button_clicked(e) {
|
14 |
-
e.preventDefault();
|
15 |
-
|
16 |
-
var $target = $(e.target),
|
17 |
-
$importButtons = $('.wds-third-party-plugins .button');
|
18 |
-
|
19 |
-
$target.html(_wds_setting.strings.importing);
|
20 |
-
$importButtons.prop('disabled', true);
|
21 |
-
|
22 |
-
import_yoast_data(function (data) {
|
23 |
-
navigate_to_success_url(data.url);
|
24 |
-
}, function (data) {
|
25 |
-
alert(data.message);
|
26 |
-
$target.html(_wds_setting.strings.import);
|
27 |
-
$importButtons.prop('disabled', false);
|
28 |
-
});
|
29 |
-
}
|
30 |
-
|
31 |
-
function import_aioseop_data_button_clicked(e) {
|
32 |
-
e.preventDefault();
|
33 |
-
|
34 |
-
var $target = $(e.target),
|
35 |
-
$importButtons = $('.wds-third-party-plugins .button');
|
36 |
-
|
37 |
-
$target.html(_wds_setting.strings.importing);
|
38 |
-
$importButtons.prop('disabled', true);
|
39 |
-
|
40 |
-
import_aioseop_data(function (data) {
|
41 |
-
navigate_to_success_url(data.url);
|
42 |
-
}, function (data) {
|
43 |
-
alert(data.message);
|
44 |
-
$target.html(_wds_setting.strings.import);
|
45 |
-
$importButtons.prop('disabled', false);
|
46 |
-
});
|
47 |
-
}
|
48 |
-
|
49 |
-
function navigate_to_success_url(url) {
|
50 |
-
if (window.location.href == url) {
|
51 |
-
window.location.reload();
|
52 |
-
}
|
53 |
-
else {
|
54 |
-
window.location.href = url;
|
55 |
-
}
|
56 |
-
}
|
57 |
-
|
58 |
-
function import_yoast_data(onComplete, onError) {
|
59 |
-
import_data(onComplete, onError, 'import_yoast_data');
|
60 |
-
}
|
61 |
-
|
62 |
-
function import_aioseop_data(onComplete, onError) {
|
63 |
-
import_data(onComplete, onError, 'import_aioseop_data');
|
64 |
-
}
|
65 |
-
|
66 |
-
function import_data(onComplete, onError, action) {
|
67 |
-
$.post(ajaxurl, {
|
68 |
-
action: action
|
69 |
-
}, function (data) {
|
70 |
-
if (data.success) {
|
71 |
-
if (data.in_progress) {
|
72 |
-
import_data(onComplete, onError, action);
|
73 |
-
} else {
|
74 |
-
onComplete(data);
|
75 |
-
}
|
76 |
-
} else {
|
77 |
-
onError(data);
|
78 |
-
}
|
79 |
-
}, 'json');
|
80 |
-
}
|
81 |
-
|
82 |
function update_toggles() {
|
83 |
var $sitewide_toggle = $('[name="wds_settings_options[wds_sitewide_mode]"]');
|
84 |
|
@@ -111,8 +42,6 @@
|
|
111 |
minimumResultsForSearch: -1
|
112 |
});
|
113 |
$('.wpmud').on('click', '.wds-custom-meta-tags button', add_custom_meta_tag_field);
|
114 |
-
$('.wds-yoast .button').on('click', import_yoast_data_button_clicked);
|
115 |
-
$('.wds-aioseop .button').on('click', import_aioseop_data_button_clicked);
|
116 |
|
117 |
update_toggles();
|
118 |
}
|
10 |
$new_input.find('input').val('').focus();
|
11 |
}
|
12 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
function update_toggles() {
|
14 |
var $sitewide_toggle = $('[name="wds_settings_options[wds_sitewide_mode]"]');
|
15 |
|
42 |
minimumResultsForSearch: -1
|
43 |
});
|
44 |
$('.wpmud').on('click', '.wds-custom-meta-tags button', add_custom_meta_tag_field);
|
|
|
|
|
45 |
|
46 |
update_toggles();
|
47 |
}
|
includes/js/wds-admin.js
CHANGED
@@ -447,6 +447,7 @@ window.Wds.update_progress_bar = function ($element, value) {
|
|
447 |
return;
|
448 |
}
|
449 |
|
|
|
450 |
$element.find('.wds-progress-bar-current-percent').html(value + '%');
|
451 |
$element.find('.wds-progress-bar-inside').width(value + '%');
|
452 |
};
|
447 |
return;
|
448 |
}
|
449 |
|
450 |
+
$element.data('progress', value);
|
451 |
$element.find('.wds-progress-bar-current-percent').html(value + '%');
|
452 |
$element.find('.wds-progress-bar-inside').width(value + '%');
|
453 |
};
|
includes/js/wds-metabox.js
CHANGED
@@ -32,6 +32,11 @@
|
|
32 |
|
33 |
}
|
34 |
|
|
|
|
|
|
|
|
|
|
|
35 |
function init () {
|
36 |
window.setTimeout( function() {
|
37 |
var editor = typeof tinymce !== 'undefined' && tinymce.get('content');
|
@@ -61,13 +66,9 @@
|
|
61 |
// Boot
|
62 |
$(init);
|
63 |
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
* Deal with SEO analysis updates
|
68 |
-
*/
|
69 |
-
;(function ($, undefined) {
|
70 |
-
|
71 |
function render_update(extended_data) {
|
72 |
var $metabox = $("#wds-wds-meta-box"),
|
73 |
$seo_report = $('.wds-seo-analysis', $metabox),
|
@@ -103,7 +104,7 @@
|
|
103 |
);
|
104 |
|
105 |
// Enable the refresh button.
|
106 |
-
if (focus_keywords.length) {
|
107 |
$(".wds-refresh-analysis", $metabox).attr('disabled', false);
|
108 |
}
|
109 |
|
@@ -111,39 +112,53 @@
|
|
111 |
});
|
112 |
}
|
113 |
|
114 |
-
function
|
|
|
|
|
115 |
render_update();
|
116 |
}
|
117 |
|
118 |
-
function
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
var cback = function() {
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
$('.wds-analysis-working', $metabox).remove();
|
138 |
-
});
|
139 |
};
|
|
|
|
|
|
|
|
|
140 |
var save = (((wp || {}).autosave || {}).server || {}).triggerSave;
|
141 |
if (save) {
|
142 |
-
|
|
|
|
|
|
|
143 |
wp.autosave.server.triggerSave();
|
144 |
} else cback();
|
145 |
}
|
146 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
147 |
function before_ajax_request($target_element) {
|
148 |
$target_element.addClass('wds-item-loading');
|
149 |
$('.wds-disabled-during-request').prop('disabled', true);
|
@@ -181,6 +196,7 @@
|
|
181 |
$readability_report = $('.wds-readability-report', $metabox),
|
182 |
$readability_issues = $('label[for="wds_readability"]').find('.wds-issues'),
|
183 |
$all_issues = $('.wds-issues'),
|
|
|
184 |
was_metabox_closed = $metabox.is('.closed');
|
185 |
|
186 |
$all_issues.find('span').html('');
|
@@ -198,7 +214,7 @@
|
|
198 |
$metabox.addClass('wds-seo-warning');
|
199 |
$seo_issues.addClass('wds-issues-warning').find('span').html(seo_errors);
|
200 |
}
|
201 |
-
else if (seo_errors
|
202 |
$metabox.addClass('wds-seo-success');
|
203 |
$seo_issues.addClass('wds-issues-success');
|
204 |
}
|
@@ -214,6 +230,9 @@
|
|
214 |
$readability_issues.find('span').html('1');
|
215 |
}
|
216 |
|
|
|
|
|
|
|
217 |
update_focus_keyword_state();
|
218 |
}
|
219 |
|
@@ -277,8 +296,8 @@
|
|
277 |
|
278 |
$.post(ajaxurl, {
|
279 |
action: "wds-metabox-preview",
|
280 |
-
|
281 |
-
|
282 |
post_id: post_id,
|
283 |
_wds_nonce: _wds_metabox.nonce
|
284 |
}, 'json').done(function (data) {
|
@@ -286,28 +305,26 @@
|
|
286 |
$('.wds-metabox-preview').replaceWith(
|
287 |
$((data || {}).markup)
|
288 |
);
|
289 |
-
render_update();
|
290 |
}
|
291 |
}).always(function () {
|
292 |
$('.wds-preview-container').removeClass("wds-preview-loading");
|
293 |
});
|
294 |
}
|
295 |
|
296 |
-
function
|
297 |
window.render_update = render_update;
|
298 |
window.Wds.dismissible_message();
|
299 |
|
300 |
$(document)
|
301 |
-
.on('after-autosave',
|
302 |
-
.on('after-autosave', refresh_preview)
|
303 |
.on('click', '#wds-wds-meta-box .wds-ignore', handle_ignore_toggle)
|
304 |
.on('click', '#wds-wds-meta-box .wds-unignore', handle_ignore_toggle)
|
305 |
.on('click', '#wds-wds-meta-box a[href="#reload"]', handle_update)
|
306 |
.on('input propertychange', '.wds-focus-keyword input', _.debounce(save_focus_keywords, 2000))
|
307 |
-
.on('input propertychange', '.wds-meta-field', _.debounce(
|
308 |
|
309 |
// Refresh analysis button handler (both SEO and readability)
|
310 |
-
.on('click', '.wds-refresh-analysis',
|
311 |
;
|
312 |
update_metabox_state();
|
313 |
hook_select2();
|
@@ -322,6 +339,9 @@
|
|
322 |
window.Wds.set_cookie('wds-seo-metabox', 'open');
|
323 |
}
|
324 |
});
|
|
|
|
|
|
|
325 |
// Set metabox state on page load based on cookie value.
|
326 |
// Fixes: https://app.asana.com/0/0/580085427092951/f
|
327 |
if ('open' === window.Wds.get_cookie('wds-seo-metabox')) {
|
@@ -329,5 +349,5 @@
|
|
329 |
}
|
330 |
}
|
331 |
|
332 |
-
$(
|
333 |
})(jQuery);
|
32 |
|
33 |
}
|
34 |
|
35 |
+
function refresh_meta_field_placeholders() {
|
36 |
+
// The following line will trigger a call to ajax wds_metabox_update
|
37 |
+
$('input#title').trigger('input');
|
38 |
+
}
|
39 |
+
|
40 |
function init () {
|
41 |
window.setTimeout( function() {
|
42 |
var editor = typeof tinymce !== 'undefined' && tinymce.get('content');
|
66 |
// Boot
|
67 |
$(init);
|
68 |
|
69 |
+
/**
|
70 |
+
* Deal with SEO analysis updates
|
71 |
+
*/
|
|
|
|
|
|
|
|
|
72 |
function render_update(extended_data) {
|
73 |
var $metabox = $("#wds-wds-meta-box"),
|
74 |
$seo_report = $('.wds-seo-analysis', $metabox),
|
104 |
);
|
105 |
|
106 |
// Enable the refresh button.
|
107 |
+
if (focus_keywords && focus_keywords.length) {
|
108 |
$(".wds-refresh-analysis", $metabox).attr('disabled', false);
|
109 |
}
|
110 |
|
112 |
});
|
113 |
}
|
114 |
|
115 |
+
function handle_autosave() {
|
116 |
+
refresh_meta_field_placeholders();
|
117 |
+
refresh_preview();
|
118 |
render_update();
|
119 |
}
|
120 |
|
121 |
+
function handle_page_load() {
|
122 |
+
before_ajax_request_blocking();
|
123 |
+
refresh_meta_field_placeholders();
|
124 |
+
refresh_preview();
|
125 |
+
render_update();
|
126 |
+
}
|
127 |
+
|
128 |
+
function handle_meta_change() {
|
129 |
+
render_update();
|
130 |
+
refresh_preview();
|
131 |
+
}
|
132 |
+
|
133 |
+
function handle_refresh_click() {
|
134 |
+
before_ajax_request_blocking();
|
135 |
+
|
136 |
+
var cback = function () {
|
137 |
+
handle_autosave();
|
138 |
+
// Re-hook our regular autosave handler
|
139 |
+
$(document).on('after-autosave.smartcrawl', handle_autosave);
|
|
|
|
|
140 |
};
|
141 |
+
var editorSync = (tinyMCE || {}).triggerSave;
|
142 |
+
if (editorSync) {
|
143 |
+
editorSync();
|
144 |
+
}
|
145 |
var save = (((wp || {}).autosave || {}).server || {}).triggerSave;
|
146 |
if (save) {
|
147 |
+
// We are already hooked to autosave so let's disable our regular autosave handler momentarily to avoid multiple calls ...
|
148 |
+
$(document).off('after-autosave.smartcrawl');
|
149 |
+
// hook a new handler to heartbeat-tick.autosave
|
150 |
+
$(document).one('heartbeat-tick.autosave', cback);
|
151 |
wp.autosave.server.triggerSave();
|
152 |
} else cback();
|
153 |
}
|
154 |
|
155 |
+
function before_ajax_request_blocking() {
|
156 |
+
$('.wds-analysis-working').show();
|
157 |
+
$('.wds-report-inner').hide();
|
158 |
+
$('.wds-disabled-during-request').prop('disabled', true);
|
159 |
+
$('.wds-nav-item .wds-issues').addClass('wds-item-loading');
|
160 |
+
}
|
161 |
+
|
162 |
function before_ajax_request($target_element) {
|
163 |
$target_element.addClass('wds-item-loading');
|
164 |
$('.wds-disabled-during-request').prop('disabled', true);
|
196 |
$readability_report = $('.wds-readability-report', $metabox),
|
197 |
$readability_issues = $('label[for="wds_readability"]').find('.wds-issues'),
|
198 |
$all_issues = $('.wds-issues'),
|
199 |
+
$analysis_working_message = $('.wds-analysis-working', $metabox),
|
200 |
was_metabox_closed = $metabox.is('.closed');
|
201 |
|
202 |
$all_issues.find('span').html('');
|
214 |
$metabox.addClass('wds-seo-warning');
|
215 |
$seo_issues.addClass('wds-issues-warning').find('span').html(seo_errors);
|
216 |
}
|
217 |
+
else if (seo_errors === 0) {
|
218 |
$metabox.addClass('wds-seo-success');
|
219 |
$seo_issues.addClass('wds-issues-success');
|
220 |
}
|
230 |
$readability_issues.find('span').html('1');
|
231 |
}
|
232 |
|
233 |
+
$('.wds-report-inner').show();
|
234 |
+
$analysis_working_message.hide();
|
235 |
+
|
236 |
update_focus_keyword_state();
|
237 |
}
|
238 |
|
296 |
|
297 |
$.post(ajaxurl, {
|
298 |
action: "wds-metabox-preview",
|
299 |
+
wds_title: title,
|
300 |
+
wds_description: description,
|
301 |
post_id: post_id,
|
302 |
_wds_nonce: _wds_metabox.nonce
|
303 |
}, 'json').done(function (data) {
|
305 |
$('.wds-metabox-preview').replaceWith(
|
306 |
$((data || {}).markup)
|
307 |
);
|
|
|
308 |
}
|
309 |
}).always(function () {
|
310 |
$('.wds-preview-container').removeClass("wds-preview-loading");
|
311 |
});
|
312 |
}
|
313 |
|
314 |
+
function init_analysis () {
|
315 |
window.render_update = render_update;
|
316 |
window.Wds.dismissible_message();
|
317 |
|
318 |
$(document)
|
319 |
+
.on('after-autosave.smartcrawl', handle_autosave)
|
|
|
320 |
.on('click', '#wds-wds-meta-box .wds-ignore', handle_ignore_toggle)
|
321 |
.on('click', '#wds-wds-meta-box .wds-unignore', handle_ignore_toggle)
|
322 |
.on('click', '#wds-wds-meta-box a[href="#reload"]', handle_update)
|
323 |
.on('input propertychange', '.wds-focus-keyword input', _.debounce(save_focus_keywords, 2000))
|
324 |
+
.on('input propertychange', '.wds-meta-field', _.debounce(handle_meta_change, 2000))
|
325 |
|
326 |
// Refresh analysis button handler (both SEO and readability)
|
327 |
+
.on('click', '.wds-refresh-analysis', handle_refresh_click)
|
328 |
;
|
329 |
update_metabox_state();
|
330 |
hook_select2();
|
339 |
window.Wds.set_cookie('wds-seo-metabox', 'open');
|
340 |
}
|
341 |
});
|
342 |
+
|
343 |
+
handle_page_load();
|
344 |
+
|
345 |
// Set metabox state on page load based on cookie value.
|
346 |
// Fixes: https://app.asana.com/0/0/580085427092951/f
|
347 |
if ('open' === window.Wds.get_cookie('wds-seo-metabox')) {
|
349 |
}
|
350 |
}
|
351 |
|
352 |
+
$(init_analysis);
|
353 |
})(jQuery);
|
includes/js/wds-third-party-import.js
ADDED
@@ -0,0 +1,213 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
;(function ($, undefined) {
|
2 |
+
Wds.ThirdPartyImport = function () {
|
3 |
+
var sourcePlugin = false,
|
4 |
+
sourcePluginName = false,
|
5 |
+
_templates = {
|
6 |
+
import_options: Wds.tpl_compile(Wds.template('import', 'import-options')),
|
7 |
+
import_error: Wds.tpl_compile(Wds.template('import', 'import-error')),
|
8 |
+
import_progress: Wds.tpl_compile(Wds.template('import', 'import-progress')),
|
9 |
+
import_progress_reset: Wds.tpl_compile(Wds.template('import', 'import-progress-reset')),
|
10 |
+
import_success: Wds.tpl_compile(Wds.template('import', 'import-success'))
|
11 |
+
};
|
12 |
+
|
13 |
+
function skip() {
|
14 |
+
WDP.closeOverlay();
|
15 |
+
}
|
16 |
+
|
17 |
+
function update_checkbox() {
|
18 |
+
var $label = $(this),
|
19 |
+
$dialog = $label.closest('.wds-modal'),
|
20 |
+
$checkbox = $dialog.find('#' + $label.attr('for')),
|
21 |
+
$dependent = $dialog.find('#' + $checkbox.data('dependent')),
|
22 |
+
newStatus = !$checkbox.is(':checked'); // Opposite of the previous value
|
23 |
+
|
24 |
+
if ($checkbox.is(':disabled')) {
|
25 |
+
return;
|
26 |
+
}
|
27 |
+
|
28 |
+
$checkbox.attr('checked', newStatus);
|
29 |
+
$checkbox.trigger('change');
|
30 |
+
|
31 |
+
$dependent.attr('disabled', !newStatus);
|
32 |
+
$dependent.closest('.wds-toggle-table').toggleClass('disabled', !newStatus);
|
33 |
+
if (!newStatus) {
|
34 |
+
$dependent.attr('checked', false);
|
35 |
+
$dependent.trigger('change');
|
36 |
+
}
|
37 |
+
}
|
38 |
+
|
39 |
+
function toggle_enabled_actions() {
|
40 |
+
var $all = $(this).closest(".wds-import-status-dialog").find(":checkbox"),
|
41 |
+
$button = $("button.wds-import-start"),
|
42 |
+
disabled = true;
|
43 |
+
$all.each(function () {
|
44 |
+
disabled = disabled && !$(this).is(":checked");
|
45 |
+
});
|
46 |
+
if (disabled) {
|
47 |
+
$button.attr("disabled", true).addClass("disabled");
|
48 |
+
} else {
|
49 |
+
$button.attr("disabled", false).removeClass("disabled");
|
50 |
+
}
|
51 |
+
}
|
52 |
+
|
53 |
+
function set_source_plugin(plugin) {
|
54 |
+
if (plugin === 'yoast') {
|
55 |
+
sourcePlugin = 'yoast';
|
56 |
+
sourcePluginName = Wds.l10n('import', 'Yoast');
|
57 |
+
} else if (plugin === 'aioseop') {
|
58 |
+
sourcePlugin = 'aioseop';
|
59 |
+
sourcePluginName = Wds.l10n('import', 'All In One SEO');
|
60 |
+
}
|
61 |
+
}
|
62 |
+
|
63 |
+
function show_import_options() {
|
64 |
+
var importOptionsHTML = _templates.import_options({plugin_name: sourcePluginName});
|
65 |
+
WDP.overlay.box_content.html(importOptionsHTML);
|
66 |
+
}
|
67 |
+
|
68 |
+
function show_dialog() {
|
69 |
+
WDP.showOverlay('#wds-import-status');
|
70 |
+
show_import_options();
|
71 |
+
}
|
72 |
+
|
73 |
+
function show_yoast_dialog(event) {
|
74 |
+
event.preventDefault();
|
75 |
+
set_source_plugin('yoast');
|
76 |
+
show_dialog();
|
77 |
+
}
|
78 |
+
|
79 |
+
function show_aioseop_dialog(event) {
|
80 |
+
event.preventDefault();
|
81 |
+
set_source_plugin('aioseop');
|
82 |
+
show_dialog();
|
83 |
+
}
|
84 |
+
|
85 |
+
function start_import() {
|
86 |
+
var progressHTML = _templates.import_progress({plugin_name: sourcePluginName}),
|
87 |
+
itemsToImport = get_items_to_import();
|
88 |
+
WDP.overlay.box_content.html(progressHTML);
|
89 |
+
import_data(itemsToImport, 1);
|
90 |
+
}
|
91 |
+
|
92 |
+
function get_items_to_import() {
|
93 |
+
var $all = WDP.overlay.box_content.find(':checkbox'),
|
94 |
+
items_to_import = {};
|
95 |
+
|
96 |
+
$all.each(function () {
|
97 |
+
var $checkbox = $(this),
|
98 |
+
name = $checkbox.attr('name');
|
99 |
+
items_to_import[name] = $checkbox.is(":checked") ? 1 : 0;
|
100 |
+
});
|
101 |
+
|
102 |
+
return items_to_import;
|
103 |
+
}
|
104 |
+
|
105 |
+
function reset_progress_bar($progress_bar) {
|
106 |
+
var $new_progress_bar = $(_templates.import_progress_reset({}));
|
107 |
+
$progress_bar.replaceWith($new_progress_bar);
|
108 |
+
return $new_progress_bar;
|
109 |
+
}
|
110 |
+
|
111 |
+
function update_site_progress(status) {
|
112 |
+
var $progress = WDP.overlay.box_content.find('.wds-site-progress .wds-progress');
|
113 |
+
if ($progress.length === 0) {
|
114 |
+
return;
|
115 |
+
}
|
116 |
+
|
117 |
+
var total_sites = status.total_sites || 0,
|
118 |
+
completed_sites = status.completed_sites || 0,
|
119 |
+
site_progress = total_sites > 0 ? (completed_sites / total_sites) * 100 : 0;
|
120 |
+
|
121 |
+
Wds.update_progress_bar($progress, site_progress);
|
122 |
+
}
|
123 |
+
|
124 |
+
function update_post_progress(status) {
|
125 |
+
var $progress_bar = WDP.overlay.box_content.find('.wds-post-progress .wds-progress');
|
126 |
+
if ($progress_bar.length === 0) {
|
127 |
+
return;
|
128 |
+
}
|
129 |
+
|
130 |
+
var remaining_posts = status.remaining_posts || 0,
|
131 |
+
completed_posts = status.completed_posts || 0,
|
132 |
+
prev_value = $progress_bar.data('progress'),
|
133 |
+
total_posts = remaining_posts + completed_posts,
|
134 |
+
post_progress = total_posts > 0 ? (completed_posts / total_posts) * 100 : 0;
|
135 |
+
|
136 |
+
if (prev_value >= post_progress) {
|
137 |
+
$progress_bar = reset_progress_bar($progress_bar);
|
138 |
+
}
|
139 |
+
|
140 |
+
Wds.update_progress_bar($progress_bar, post_progress);
|
141 |
+
}
|
142 |
+
|
143 |
+
function show_success_message(data) {
|
144 |
+
Wds.update_progress_bar(WDP.overlay.box_content.find(".wds-progress"), 100);
|
145 |
+
setTimeout(function () {
|
146 |
+
var successHTML = _templates.import_success({
|
147 |
+
plugin_name: sourcePluginName,
|
148 |
+
deactivation_url: data.deactivation_url
|
149 |
+
});
|
150 |
+
WDP.overlay.box_content.html(successHTML);
|
151 |
+
}, 2500);
|
152 |
+
}
|
153 |
+
|
154 |
+
function import_data(itemsToImport, restart) {
|
155 |
+
var action = sourcePlugin === 'yoast' ? 'import_yoast_data' : 'import_aioseop_data';
|
156 |
+
|
157 |
+
return $.post({
|
158 |
+
url: ajaxurl,
|
159 |
+
data: {
|
160 |
+
action: action,
|
161 |
+
restart: restart,
|
162 |
+
items_to_import: itemsToImport,
|
163 |
+
_wds_nonce: _wds_import.nonce
|
164 |
+
},
|
165 |
+
success: function (data) {
|
166 |
+
if (data.success) {
|
167 |
+
if (data.in_progress) {
|
168 |
+
update_site_progress(data.status);
|
169 |
+
update_post_progress(data.status);
|
170 |
+
import_data(itemsToImport, 0);
|
171 |
+
} else {
|
172 |
+
show_success_message(data);
|
173 |
+
}
|
174 |
+
} else {
|
175 |
+
handle_import_error(data.message);
|
176 |
+
}
|
177 |
+
},
|
178 |
+
error: function (jqXHR, textStatus, errorThrown) {
|
179 |
+
handle_import_error(errorThrown);
|
180 |
+
},
|
181 |
+
dataType: 'JSON'
|
182 |
+
});
|
183 |
+
}
|
184 |
+
|
185 |
+
function handle_import_error(errorString) {
|
186 |
+
var errorHTML = _templates.import_error({error: errorString});
|
187 |
+
|
188 |
+
WDP.overlay.box_content.html(errorHTML);
|
189 |
+
}
|
190 |
+
|
191 |
+
function toggle_advanced_options(event) {
|
192 |
+
var $this = $(event.target),
|
193 |
+
$advanced_options = $this.closest('.wds-advanced-import-options');
|
194 |
+
|
195 |
+
$advanced_options.toggleClass('open');
|
196 |
+
}
|
197 |
+
|
198 |
+
$(document).on("click", "button.wds-import-skip", skip);
|
199 |
+
$(document).on("click", "div.wds-import-status-dialog label", update_checkbox);
|
200 |
+
$(document).on("click", ".wds-yoast .button", show_yoast_dialog);
|
201 |
+
$(document).on("click", ".wds-aioseop .button", show_aioseop_dialog);
|
202 |
+
$(document).on("click", "button.wds-import-start", start_import);
|
203 |
+
$(document).on("click", "button.wds-reattempt-import", show_import_options);
|
204 |
+
$(document).on("click", ".wds-advanced-import-options > span", toggle_advanced_options);
|
205 |
+
$(document).on("change", "div.wds-import-status-dialog :checkbox", toggle_enabled_actions);
|
206 |
+
};
|
207 |
+
|
208 |
+
function init() {
|
209 |
+
var thirdPartyImport = Wds.ThirdPartyImport();
|
210 |
+
}
|
211 |
+
|
212 |
+
$(init);
|
213 |
+
})(jQuery);
|
includes/tools/class-wds-opengraph-printer.php
CHANGED
@@ -64,9 +64,7 @@ class Smartcrawl_OpenGraph_Printer {
|
|
64 |
|
65 |
$this->_is_done = true;
|
66 |
|
67 |
-
return
|
68 |
-
? $this->inject_specific_og_tags()
|
69 |
-
: $this->inject_generic_og_tags();
|
70 |
}
|
71 |
|
72 |
/**
|
@@ -77,9 +75,6 @@ class Smartcrawl_OpenGraph_Printer {
|
|
77 |
if ( ! empty( $settings['fb-app-id'] ) ) {
|
78 |
$this->print_og_tag( 'fb:app_id', $settings['fb-app-id'] );
|
79 |
}
|
80 |
-
|
81 |
-
$this->inject_type();
|
82 |
-
$this->inject_url();
|
83 |
}
|
84 |
|
85 |
/**
|
@@ -118,22 +113,6 @@ class Smartcrawl_OpenGraph_Printer {
|
|
118 |
return false;
|
119 |
}
|
120 |
|
121 |
-
if ( is_array( $value ) ) {
|
122 |
-
$results = array();
|
123 |
-
foreach ( $value as $val ) {
|
124 |
-
$tmp = $this->get_og_tag( $tag, $val );
|
125 |
-
if ( ! empty( $tmp ) ) {
|
126 |
-
$results[] = $tmp;
|
127 |
-
}
|
128 |
-
}
|
129 |
-
|
130 |
-
return join( "\n", $results );
|
131 |
-
}
|
132 |
-
|
133 |
-
$tag = preg_replace( '/-/', ':', $tag );
|
134 |
-
$value = smartcrawl_replace_vars( $value, get_queried_object() );
|
135 |
-
$value = wp_strip_all_tags( $value );
|
136 |
-
|
137 |
return '<meta property="' . esc_attr( $tag ) . '" content="' . esc_attr( $value ) . '" />' . "\n";
|
138 |
}
|
139 |
|
@@ -164,90 +143,31 @@ class Smartcrawl_OpenGraph_Printer {
|
|
164 |
*
|
165 |
* @return bool
|
166 |
*/
|
167 |
-
public function
|
168 |
-
$
|
169 |
-
if ( !
|
170 |
return false;
|
171 |
}
|
172 |
|
173 |
-
|
174 |
-
$
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
// if needs be
|
189 |
-
if ( has_post_thumbnail( $post ) ) {
|
190 |
-
$url = get_the_post_thumbnail_url();
|
191 |
-
if ( ! empty( $url ) ) {
|
192 |
-
$this->print_og_images( $url );
|
193 |
-
$image_urls[] = $url;
|
194 |
-
}
|
195 |
-
}
|
196 |
-
|
197 |
-
$raw = array_filter( $raw );
|
198 |
-
if ( empty( $raw ) ) {
|
199 |
-
return $this->inject_generic_og_tags();
|
200 |
-
}
|
201 |
-
|
202 |
-
// Separately process any other images
|
203 |
-
$images = $this->get_post_images();
|
204 |
-
unset( $raw['images'] );
|
205 |
-
foreach ( $images as $img ) {
|
206 |
-
if ( in_array( $img, $image_urls, true ) ) {
|
207 |
-
continue; // Do not double-print images
|
208 |
-
}
|
209 |
-
$this->print_og_images( $img );
|
210 |
-
$image_urls[] = $img;
|
211 |
-
}
|
212 |
-
|
213 |
-
$supported_keys = array( 'title', 'description', 'images' );
|
214 |
-
foreach ( $supported_keys as $key ) {
|
215 |
-
$value = $this->get_tag_value( $key );
|
216 |
-
if ( empty( $value ) ) {
|
217 |
-
continue;
|
218 |
-
}
|
219 |
-
|
220 |
-
if ( 'images' === $key ) {
|
221 |
-
if ( is_array( $value ) ) {
|
222 |
-
$clean = array();
|
223 |
-
foreach ( $value as $img ) {
|
224 |
-
if ( in_array( $img, $image_urls, true ) ) {
|
225 |
-
continue; // Do not double-print images
|
226 |
-
}
|
227 |
-
$clean[] = $img;
|
228 |
-
$image_urls[] = $img;
|
229 |
-
}
|
230 |
-
$value = $clean;
|
231 |
-
} elseif ( ! empty( $value ) ) {
|
232 |
-
if ( in_array( $value, $image_urls, true ) ) {
|
233 |
-
continue; // Do not double-print images
|
234 |
-
}
|
235 |
-
$image_urls[] = $value;
|
236 |
-
}
|
237 |
-
$this->print_og_images( $value );
|
238 |
-
} else {
|
239 |
-
$this->print_og_tag( "og:{$key}", $value );
|
240 |
}
|
241 |
}
|
242 |
|
243 |
-
|
244 |
-
$this->print_og_tag( 'article:published_time', $date );
|
245 |
-
|
246 |
-
$user_id = $post->post_author;
|
247 |
-
if ( ! empty( $user_id ) ) {
|
248 |
-
$user = Smartcrawl_Model_User::get( $user_id );
|
249 |
-
$this->print_og_tag( 'article:author', $user->get_full_name() );
|
250 |
-
}
|
251 |
}
|
252 |
|
253 |
public function print_og_images( $values ) {
|
@@ -268,136 +188,10 @@ class Smartcrawl_OpenGraph_Printer {
|
|
268 |
$image_tags[] = $this->get_og_tag( 'og:image:height', $attachment['height'] );
|
269 |
}
|
270 |
}
|
271 |
-
$markup = join( "
|
272 |
echo wp_kses( $markup, $this->get_allowed_tags() );
|
273 |
}
|
274 |
|
275 |
-
/**
|
276 |
-
* Use global setup to resolve tag values
|
277 |
-
* @return boolean
|
278 |
-
*/
|
279 |
-
public function inject_generic_og_tags() {
|
280 |
-
$keys = array(
|
281 |
-
'og-title' => '',
|
282 |
-
'og-description' => '',
|
283 |
-
'og-images' => array(),
|
284 |
-
);
|
285 |
-
$type = false;
|
286 |
-
|
287 |
-
if ( is_front_page() ) {
|
288 |
-
$type = 'home';
|
289 |
-
} elseif ( is_search() ) {
|
290 |
-
$type = 'search';
|
291 |
-
} elseif ( is_category() ) {
|
292 |
-
$type = 'category';
|
293 |
-
} elseif ( is_tag() ) {
|
294 |
-
$type = 'post_tag';
|
295 |
-
} elseif ( is_tax() ) {
|
296 |
-
$term = get_queried_object();
|
297 |
-
if ( ! empty( $term ) && is_object( $term ) && ! empty( $term->taxonomy ) ) {
|
298 |
-
$type = $term->taxonomy;
|
299 |
-
}
|
300 |
-
} elseif ( is_singular() ) {
|
301 |
-
$type = get_post_type();
|
302 |
-
} elseif ( is_author() ) {
|
303 |
-
$type = 'author';
|
304 |
-
} elseif ( is_date() ) {
|
305 |
-
$type = 'date';
|
306 |
-
} elseif ( is_post_type_archive() ) {
|
307 |
-
$post_type = get_queried_object();
|
308 |
-
if ( is_a( $post_type, 'WP_Post_Type' ) ) {
|
309 |
-
$type = Smartcrawl_Onpage_Settings::PT_ARCHIVE_PREFIX . $post_type->name;
|
310 |
-
}
|
311 |
-
}
|
312 |
-
|
313 |
-
if ( empty( $type ) ) {
|
314 |
-
return false; // We don't know what to do here
|
315 |
-
}
|
316 |
-
|
317 |
-
$smartcrawl_options = Smartcrawl_Settings::get_options();
|
318 |
-
if ( empty( $smartcrawl_options["og-active-{$type}"] ) || ! $smartcrawl_options["og-active-{$type}"] ) {
|
319 |
-
return false;
|
320 |
-
}
|
321 |
-
|
322 |
-
if ( is_category() || is_tag() || is_tax() ) {
|
323 |
-
$term_obj = get_queried_object();
|
324 |
-
$opengraph = smartcrawl_get_term_meta( $term_obj, $type, 'opengraph' );
|
325 |
-
if ( ! empty( $opengraph ) ) {
|
326 |
-
if ( ! empty( $opengraph['disabled'] ) ) {
|
327 |
-
return false;
|
328 |
-
}
|
329 |
-
foreach ( $opengraph as $og_item => $value ) {
|
330 |
-
if ( ! in_array( "og-{$og_item}", array_keys( $keys ), true ) ) {
|
331 |
-
continue;
|
332 |
-
}
|
333 |
-
$keys["og-{$og_item}"] = $value;
|
334 |
-
}
|
335 |
-
}
|
336 |
-
}
|
337 |
-
|
338 |
-
foreach ( $keys as $key => $val ) {
|
339 |
-
if ( 'og-images' === $key ) {
|
340 |
-
$this->print_og_images(
|
341 |
-
! empty( $val ) ? $val : $this->get_generic_og_tag_value( $key, $type )
|
342 |
-
);
|
343 |
-
} else {
|
344 |
-
$this->print_og_tag(
|
345 |
-
$key,
|
346 |
-
! empty( $val ) ? $val : $this->get_generic_og_tag_value( $key, $type )
|
347 |
-
);
|
348 |
-
}
|
349 |
-
}
|
350 |
-
|
351 |
-
return true;
|
352 |
-
}
|
353 |
-
|
354 |
-
/**
|
355 |
-
* Gets a generic OG tag value
|
356 |
-
*
|
357 |
-
* Value will be resolved to what's in OG settings, or
|
358 |
-
* alternatively will fall back to title/description
|
359 |
-
* resolution for those tags specifically.
|
360 |
-
*
|
361 |
-
* @param string $key OG tag internal key representation
|
362 |
-
* @param string $type Entity type
|
363 |
-
*
|
364 |
-
* @return string|bool Either a resolved tag value, or false on failure
|
365 |
-
*/
|
366 |
-
public function get_generic_og_tag_value( $key, $type ) {
|
367 |
-
if ( empty( $key ) || empty( $type ) ) {
|
368 |
-
return false;
|
369 |
-
}
|
370 |
-
|
371 |
-
$smartcrawl_options = Smartcrawl_Settings::get_options();
|
372 |
-
if ( empty( $smartcrawl_options["{$key}-{$type}"] ) ) {
|
373 |
-
$value = false;
|
374 |
-
if ( class_exists( 'Smartcrawl_OnPage' ) && 'og-title' === $key ) {
|
375 |
-
$value = Smartcrawl_OnPage::get()->get_title();
|
376 |
-
} elseif ( class_exists( 'Smartcrawl_OnPage' ) && 'og-description' === $key ) {
|
377 |
-
$value = Smartcrawl_OnPage::get()->get_description();
|
378 |
-
}
|
379 |
-
|
380 |
-
return $value;
|
381 |
-
}
|
382 |
-
|
383 |
-
return $smartcrawl_options["{$key}-{$type}"];
|
384 |
-
}
|
385 |
-
|
386 |
-
public function get_post_images() {
|
387 |
-
$raw = smartcrawl_get_value( 'opengraph' );
|
388 |
-
|
389 |
-
return ! empty( $raw['images'] ) ? $raw['images'] : array();
|
390 |
-
}
|
391 |
-
|
392 |
-
public function get_tag_value( $suffix ) {
|
393 |
-
$raw = smartcrawl_get_value( 'opengraph' );
|
394 |
-
$post = get_post();
|
395 |
-
|
396 |
-
return empty( $raw[ $suffix ] )
|
397 |
-
? $this->get_generic_og_tag_value( "og-{$suffix}", get_post_type( $post ) )
|
398 |
-
: $raw[ $suffix ];
|
399 |
-
}
|
400 |
-
|
401 |
/**
|
402 |
* @return array
|
403 |
*/
|
64 |
|
65 |
$this->_is_done = true;
|
66 |
|
67 |
+
return $this->inject_og_tags();
|
|
|
|
|
68 |
}
|
69 |
|
70 |
/**
|
75 |
if ( ! empty( $settings['fb-app-id'] ) ) {
|
76 |
$this->print_og_tag( 'fb:app_id', $settings['fb-app-id'] );
|
77 |
}
|
|
|
|
|
|
|
78 |
}
|
79 |
|
80 |
/**
|
113 |
return false;
|
114 |
}
|
115 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
116 |
return '<meta property="' . esc_attr( $tag ) . '" content="' . esc_attr( $value ) . '" />' . "\n";
|
117 |
}
|
118 |
|
143 |
*
|
144 |
* @return bool
|
145 |
*/
|
146 |
+
public function inject_og_tags() {
|
147 |
+
$value_helper = new Smartcrawl_OpenGraph_Value_Helper();
|
148 |
+
if ( ! $value_helper->is_enabled() ) {
|
149 |
return false;
|
150 |
}
|
151 |
|
152 |
+
$this->inject_type();
|
153 |
+
$this->inject_url();
|
154 |
+
$this->print_og_tag( 'og:title', $value_helper->get_title() );
|
155 |
+
$this->print_og_tag( 'og:description', $value_helper->get_description() );
|
156 |
+
$this->print_og_images( $value_helper->get_images() );
|
157 |
+
|
158 |
+
if ( is_singular() ) {
|
159 |
+
$post = get_post();
|
160 |
+
$date = get_the_date( 'Y-m-d\TH:i:s', $post );
|
161 |
+
$this->print_og_tag( 'article:published_time', $date );
|
162 |
+
|
163 |
+
$user_id = $post->post_author;
|
164 |
+
if ( ! empty( $user_id ) ) {
|
165 |
+
$user = Smartcrawl_Model_User::get( $user_id );
|
166 |
+
$this->print_og_tag( 'article:author', $user->get_full_name() );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
167 |
}
|
168 |
}
|
169 |
|
170 |
+
return true;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
171 |
}
|
172 |
|
173 |
public function print_og_images( $values ) {
|
188 |
$image_tags[] = $this->get_og_tag( 'og:image:height', $attachment['height'] );
|
189 |
}
|
190 |
}
|
191 |
+
$markup = join( "", array_filter( $image_tags ) );
|
192 |
echo wp_kses( $markup, $this->get_allowed_tags() );
|
193 |
}
|
194 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
195 |
/**
|
196 |
* @return array
|
197 |
*/
|
includes/tools/class-wds-twitter-printer.php
CHANGED
@@ -19,7 +19,7 @@ class Smartcrawl_Twitter_Printer extends Smartcrawl_WorkUnit {
|
|
19 |
/**
|
20 |
* Holds resolver instance
|
21 |
*
|
22 |
-
* @var
|
23 |
*/
|
24 |
private $_resolver;
|
25 |
|
@@ -103,9 +103,9 @@ class Smartcrawl_Twitter_Printer extends Smartcrawl_WorkUnit {
|
|
103 |
|
104 |
private function get_twitter_meta( $key ) {
|
105 |
$meta = array();
|
106 |
-
$queried_object = get_queried_object();
|
107 |
if ( is_a( $queried_object, 'WP_Post' ) ) {
|
108 |
-
$meta = smartcrawl_get_value( 'twitter' );
|
109 |
} elseif ( is_a( $queried_object, 'WP_Term' ) ) {
|
110 |
$meta = smartcrawl_get_term_meta( $queried_object, $queried_object->taxonomy, 'twitter' );
|
111 |
}
|
@@ -126,7 +126,7 @@ class Smartcrawl_Twitter_Printer extends Smartcrawl_WorkUnit {
|
|
126 |
// @todo: make sure are location types from Smartcrawl_Endpoint_Resolver are handled
|
127 |
$mapping = array(
|
128 |
Smartcrawl_Endpoint_Resolver::L_BLOG_HOME => 'home',
|
129 |
-
Smartcrawl_Endpoint_Resolver::L_STATIC_HOME => '
|
130 |
Smartcrawl_Endpoint_Resolver::L_SEARCH => 'search',
|
131 |
Smartcrawl_Endpoint_Resolver::L_404 => '404',
|
132 |
Smartcrawl_Endpoint_Resolver::L_AUTHOR_ARCHIVE => 'author',
|
@@ -135,7 +135,7 @@ class Smartcrawl_Twitter_Printer extends Smartcrawl_WorkUnit {
|
|
135 |
Smartcrawl_Endpoint_Resolver::L_DATE_ARCHIVE => 'date',
|
136 |
);
|
137 |
|
138 |
-
$queried_object = get_queried_object();
|
139 |
if ( is_a( $queried_object, 'WP_Post' ) ) {
|
140 |
$mapping[ Smartcrawl_Endpoint_Resolver::L_SINGULAR ] = get_post_type( $queried_object );
|
141 |
} elseif ( is_a( $queried_object, 'WP_Term' ) ) {
|
@@ -195,12 +195,19 @@ class Smartcrawl_Twitter_Printer extends Smartcrawl_WorkUnit {
|
|
195 |
// Check the plugin settings for required value
|
196 |
$value_from_settings = $this->get_twitter_setting( $key );
|
197 |
if ( ! empty( $value_from_settings ) ) {
|
198 |
-
return smartcrawl_replace_vars( $value_from_settings, get_queried_object() );
|
199 |
}
|
200 |
|
201 |
return $default;
|
202 |
}
|
203 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
204 |
/**
|
205 |
* Gets HTML element ready for rendering
|
206 |
*
|
19 |
/**
|
20 |
* Holds resolver instance
|
21 |
*
|
22 |
+
* @var Smartcrawl_Endpoint_Resolver instance
|
23 |
*/
|
24 |
private $_resolver;
|
25 |
|
103 |
|
104 |
private function get_twitter_meta( $key ) {
|
105 |
$meta = array();
|
106 |
+
$queried_object = $this->get_queried_object();
|
107 |
if ( is_a( $queried_object, 'WP_Post' ) ) {
|
108 |
+
$meta = smartcrawl_get_value( 'twitter', $queried_object->ID );
|
109 |
} elseif ( is_a( $queried_object, 'WP_Term' ) ) {
|
110 |
$meta = smartcrawl_get_term_meta( $queried_object, $queried_object->taxonomy, 'twitter' );
|
111 |
}
|
126 |
// @todo: make sure are location types from Smartcrawl_Endpoint_Resolver are handled
|
127 |
$mapping = array(
|
128 |
Smartcrawl_Endpoint_Resolver::L_BLOG_HOME => 'home',
|
129 |
+
Smartcrawl_Endpoint_Resolver::L_STATIC_HOME => 'page',
|
130 |
Smartcrawl_Endpoint_Resolver::L_SEARCH => 'search',
|
131 |
Smartcrawl_Endpoint_Resolver::L_404 => '404',
|
132 |
Smartcrawl_Endpoint_Resolver::L_AUTHOR_ARCHIVE => 'author',
|
135 |
Smartcrawl_Endpoint_Resolver::L_DATE_ARCHIVE => 'date',
|
136 |
);
|
137 |
|
138 |
+
$queried_object = $this->get_queried_object();
|
139 |
if ( is_a( $queried_object, 'WP_Post' ) ) {
|
140 |
$mapping[ Smartcrawl_Endpoint_Resolver::L_SINGULAR ] = get_post_type( $queried_object );
|
141 |
} elseif ( is_a( $queried_object, 'WP_Term' ) ) {
|
195 |
// Check the plugin settings for required value
|
196 |
$value_from_settings = $this->get_twitter_setting( $key );
|
197 |
if ( ! empty( $value_from_settings ) ) {
|
198 |
+
return smartcrawl_replace_vars( $value_from_settings, $this->get_queried_object() );
|
199 |
}
|
200 |
|
201 |
return $default;
|
202 |
}
|
203 |
|
204 |
+
private function get_queried_object() {
|
205 |
+
$resolver = Smartcrawl_Endpoint_Resolver::resolve();
|
206 |
+
$query = $resolver->get_query_context();
|
207 |
+
|
208 |
+
return ! empty( $query ) ? $query->get_queried_object() : null;
|
209 |
+
}
|
210 |
+
|
211 |
/**
|
212 |
* Gets HTML element ready for rendering
|
213 |
*
|
includes/tools/onpage.php
CHANGED
@@ -64,9 +64,16 @@ class Smartcrawl_OnPage {
|
|
64 |
add_action( 'wp_head', array( $this, 'smartcrawl_head' ), 10, 1 );
|
65 |
|
66 |
// wp_title isn't enough. We'll do it anyway: suspenders and belt approach.
|
67 |
-
add_filter( 'wp_title', array( $this, 'smartcrawl_title' ),
|
|
|
|
|
|
|
|
|
68 |
// Buffer the header output and process it instead.
|
69 |
-
|
|
|
|
|
|
|
70 |
// This should now work with BuddyPress as well.
|
71 |
add_filter( 'bp_page_title', array( $this, 'smartcrawl_title' ), 10, 3 );
|
72 |
|
@@ -155,15 +162,13 @@ class Smartcrawl_OnPage {
|
|
155 |
* @return string Resolved title
|
156 |
*/
|
157 |
public function get_title( $title = '' ) {
|
158 |
-
$request_title = $this->get_request_param( 'wds_title' );
|
159 |
-
if ( ! empty( $request_title ) ) {
|
160 |
-
return $request_title;
|
161 |
-
}
|
162 |
-
|
163 |
$resolver = $this->get_resolver();
|
164 |
-
|
165 |
$post = $resolver->get_context();
|
166 |
$wp_query = $resolver->get_query_context();
|
|
|
|
|
|
|
|
|
167 |
|
168 |
$smartcrawl_options = Smartcrawl_Settings::get_options();
|
169 |
|
@@ -182,7 +187,7 @@ class Smartcrawl_OnPage {
|
|
182 |
$title = smartcrawl_replace_vars( $smartcrawl_options['title-home'], (array) $post );
|
183 |
} elseif ( Smartcrawl_Endpoint_Resolver::L_STATIC_HOME === $location ) {
|
184 |
$post = get_post( get_option( 'page_for_posts' ) );
|
185 |
-
$fixed_title = smartcrawl_get_value( 'title' );
|
186 |
if ( $fixed_title ) {
|
187 |
$title = smartcrawl_replace_vars( $fixed_title, (array) $post );
|
188 |
} elseif ( ! empty( $post->post_type ) && isset( $smartcrawl_options[ 'title-' . $post->post_type ] ) && ! empty( $smartcrawl_options[ 'title-' . $post->post_type ] ) ) {
|
@@ -234,10 +239,14 @@ class Smartcrawl_OnPage {
|
|
234 |
$title = smartcrawl_replace_vars( $smartcrawl_options[ 'title-' . $post->post_type ], (array) $post );
|
235 |
}
|
236 |
} elseif ( Smartcrawl_Endpoint_Resolver::L_WOO_SHOP === $location ) { // WooCommerce shop page.
|
237 |
-
$
|
238 |
-
|
239 |
-
|
240 |
-
|
|
|
|
|
|
|
|
|
241 |
}
|
242 |
}
|
243 |
|
@@ -297,7 +306,9 @@ class Smartcrawl_OnPage {
|
|
297 |
global $wp_query, $paged;
|
298 |
$smartcrawl_options = Smartcrawl_Settings::get_options();
|
299 |
|
300 |
-
$this->
|
|
|
|
|
301 |
|
302 |
$robots = '';
|
303 |
|
@@ -326,7 +337,7 @@ class Smartcrawl_OnPage {
|
|
326 |
}
|
327 |
|
328 |
private function print_html_tag( $html ) {
|
329 |
-
if (!preg_match('/\<(link|meta)/', $html)) {
|
330 |
// Do not allow plaintext output.
|
331 |
return false;
|
332 |
}
|
@@ -417,70 +428,9 @@ class Smartcrawl_OnPage {
|
|
417 |
* @return bool|mixed|string|WP_Error
|
418 |
*/
|
419 |
public function get_canonical_url() {
|
420 |
-
|
421 |
-
$canonical = smartcrawl_get_value( 'canonical' );
|
422 |
-
|
423 |
-
if ( empty( $canonical ) ) {
|
424 |
-
if ( is_singular() ) {
|
425 |
-
$canonical = $this->get_rel_canonical();
|
426 |
-
} else {
|
427 |
-
$canonical = '';
|
428 |
-
if ( is_front_page() ) {
|
429 |
-
$canonical = trailingslashit( get_bloginfo( 'url' ) );
|
430 |
-
} elseif ( is_tax() || is_tag() || is_category() ) {
|
431 |
-
$term = $wp_query->get_queried_object();
|
432 |
-
$canonical = smartcrawl_get_term_meta( $term, $term->taxonomy, 'wds_canonical' );
|
433 |
-
$canonical = $canonical ? $canonical : get_term_link( $term, $term->taxonomy );
|
434 |
-
} elseif ( is_date() ) {
|
435 |
-
$requested_year = get_query_var( 'year' );
|
436 |
-
$requested_month = get_query_var( 'monthnum' );
|
437 |
-
$date_callback = ! empty( $requested_year ) && empty( $requested_month )
|
438 |
-
? 'get_year_link'
|
439 |
-
: 'get_month_link';
|
440 |
-
$canonical = $date_callback( $requested_year, $requested_month );
|
441 |
-
} elseif ( is_author() ) {
|
442 |
-
$user = get_queried_object();
|
443 |
-
$canonical = get_author_posts_url( $user->ID );
|
444 |
-
}
|
445 |
|
446 |
-
|
447 |
-
if ( $canonical && ! is_wp_error( $canonical ) ) {
|
448 |
-
if ( $paged && ! is_wp_error( $paged ) ) {
|
449 |
-
$canonical .= trailingslashit( 'page/' . $paged );
|
450 |
-
}
|
451 |
-
}
|
452 |
-
}
|
453 |
-
}
|
454 |
-
|
455 |
-
$canonical = apply_filters( 'wds_filter_canonical', $canonical );
|
456 |
-
|
457 |
-
return $canonical;
|
458 |
-
}
|
459 |
-
|
460 |
-
/**
|
461 |
-
* Gets singular entity fallback canonical URL
|
462 |
-
*
|
463 |
-
* @return string|bool Canonical URL, or (bool)false
|
464 |
-
*/
|
465 |
-
private function get_rel_canonical() {
|
466 |
-
$link = false;
|
467 |
-
if ( ! is_singular() ) {
|
468 |
-
return $link;
|
469 |
-
}
|
470 |
-
|
471 |
-
global $wp_the_query;
|
472 |
-
$id = $wp_the_query->get_queried_object_id();
|
473 |
-
if ( ! $id ) {
|
474 |
-
return;
|
475 |
-
}
|
476 |
-
|
477 |
-
$link = get_permalink( $id );
|
478 |
-
$page = get_query_var( 'cpage' );
|
479 |
-
if ( $page ) {
|
480 |
-
$link = get_comments_pagenum_link( $page );
|
481 |
-
}
|
482 |
-
|
483 |
-
return $link;
|
484 |
}
|
485 |
|
486 |
/**
|
@@ -607,15 +557,13 @@ class Smartcrawl_OnPage {
|
|
607 |
* @return string Resolved description
|
608 |
*/
|
609 |
public function get_description( $metadesc = '' ) {
|
610 |
-
$request_description = $this->get_request_param( 'wds_description' );
|
611 |
-
if ( ! empty( $request_description ) ) {
|
612 |
-
return $request_description;
|
613 |
-
}
|
614 |
-
|
615 |
$resolver = $this->get_resolver();
|
616 |
-
|
617 |
$post = $resolver->get_context();
|
618 |
$wp_query = $resolver->get_query_context();
|
|
|
|
|
|
|
|
|
619 |
|
620 |
if ( empty( $metadesc ) && is_object( $post ) ) {
|
621 |
$metadesc = smartcrawl_get_trimmed_excerpt( $post->post_excerpt, $post->post_content );
|
@@ -653,10 +601,14 @@ class Smartcrawl_OnPage {
|
|
653 |
$metadesc = $stored;
|
654 |
}
|
655 |
} elseif ( Smartcrawl_Endpoint_Resolver::L_WOO_SHOP === $location ) { // WooCommerce shop page.
|
656 |
-
$
|
657 |
-
|
658 |
-
|
659 |
-
|
|
|
|
|
|
|
|
|
660 |
}
|
661 |
} elseif ( Smartcrawl_Endpoint_Resolver::L_BLOG_HOME === $location && isset( $smartcrawl_options['metadesc-home'] ) ) {
|
662 |
$metadesc = smartcrawl_replace_vars( $smartcrawl_options['metadesc-home'], array() );
|
@@ -753,6 +705,15 @@ class Smartcrawl_OnPage {
|
|
753 |
$metakey = smartcrawl_get_value( 'keywords', $post_id );
|
754 |
$use_tags = smartcrawl_get_value( 'tags_to_keywords', $post_id );
|
755 |
$metakey = $use_tags ? $this->_tags_to_keywords( $metakey ) : $metakey;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
756 |
} else {
|
757 |
$metakey = $resolver->is_singular( $location ) ? smartcrawl_get_value( 'keywords', $post->ID ) : false;
|
758 |
if ( $resolver->is_singular( $location ) ) {
|
@@ -908,4 +869,8 @@ class Smartcrawl_OnPage {
|
|
908 |
exit;
|
909 |
}
|
910 |
}
|
|
|
|
|
|
|
|
|
911 |
}
|
64 |
add_action( 'wp_head', array( $this, 'smartcrawl_head' ), 10, 1 );
|
65 |
|
66 |
// wp_title isn't enough. We'll do it anyway: suspenders and belt approach.
|
67 |
+
add_filter( 'wp_title', array( $this, 'smartcrawl_title' ), 100, 3 );
|
68 |
+
|
69 |
+
// For newer themes using wp_get_document_title()
|
70 |
+
add_filter( 'pre_get_document_title', array( $this, 'smartcrawl_title' ), 100 );
|
71 |
+
|
72 |
// Buffer the header output and process it instead.
|
73 |
+
if ( $this->force_rewrite_title() ) {
|
74 |
+
add_action( 'template_redirect', array( $this, 'smartcrawl_start_title_buffer' ), 99 );
|
75 |
+
}
|
76 |
+
|
77 |
// This should now work with BuddyPress as well.
|
78 |
add_filter( 'bp_page_title', array( $this, 'smartcrawl_title' ), 10, 3 );
|
79 |
|
162 |
* @return string Resolved title
|
163 |
*/
|
164 |
public function get_title( $title = '' ) {
|
|
|
|
|
|
|
|
|
|
|
165 |
$resolver = $this->get_resolver();
|
|
|
166 |
$post = $resolver->get_context();
|
167 |
$wp_query = $resolver->get_query_context();
|
168 |
+
$request_title = $this->get_request_param( 'wds_title' );
|
169 |
+
if ( ! empty( $request_title ) ) {
|
170 |
+
return smartcrawl_replace_vars( $request_title, $post );
|
171 |
+
}
|
172 |
|
173 |
$smartcrawl_options = Smartcrawl_Settings::get_options();
|
174 |
|
187 |
$title = smartcrawl_replace_vars( $smartcrawl_options['title-home'], (array) $post );
|
188 |
} elseif ( Smartcrawl_Endpoint_Resolver::L_STATIC_HOME === $location ) {
|
189 |
$post = get_post( get_option( 'page_for_posts' ) );
|
190 |
+
$fixed_title = smartcrawl_get_value( 'title', ! empty( $post->ID ) ? $post->ID : 0 );
|
191 |
if ( $fixed_title ) {
|
192 |
$title = smartcrawl_replace_vars( $fixed_title, (array) $post );
|
193 |
} elseif ( ! empty( $post->post_type ) && isset( $smartcrawl_options[ 'title-' . $post->post_type ] ) && ! empty( $smartcrawl_options[ 'title-' . $post->post_type ] ) ) {
|
239 |
$title = smartcrawl_replace_vars( $smartcrawl_options[ 'title-' . $post->post_type ], (array) $post );
|
240 |
}
|
241 |
} elseif ( Smartcrawl_Endpoint_Resolver::L_WOO_SHOP === $location ) { // WooCommerce shop page.
|
242 |
+
$shop_page = get_post( wc_get_page_id( 'shop' ) );
|
243 |
+
if ( is_a( $shop_page, 'WP_Post' ) ) {
|
244 |
+
$fixed_shop_title = smartcrawl_get_value( 'title', $shop_page->ID );
|
245 |
+
if ( $fixed_shop_title ) {
|
246 |
+
$title = smartcrawl_replace_vars( $fixed_shop_title, (array) $shop_page );
|
247 |
+
} elseif ( isset( $smartcrawl_options['title-page'] ) && ! empty( $smartcrawl_options['title-page'] ) ) {
|
248 |
+
$title = smartcrawl_replace_vars( $smartcrawl_options['title-page'], (array) $shop_page );
|
249 |
+
}
|
250 |
}
|
251 |
}
|
252 |
|
306 |
global $wp_query, $paged;
|
307 |
$smartcrawl_options = Smartcrawl_Settings::get_options();
|
308 |
|
309 |
+
if ( $this->force_rewrite_title() ) {
|
310 |
+
$this->smartcrawl_stop_title_buffer(); // STOP processing the buffer.
|
311 |
+
}
|
312 |
|
313 |
$robots = '';
|
314 |
|
337 |
}
|
338 |
|
339 |
private function print_html_tag( $html ) {
|
340 |
+
if ( ! preg_match( '/\<(link|meta)/', $html ) ) {
|
341 |
// Do not allow plaintext output.
|
342 |
return false;
|
343 |
}
|
428 |
* @return bool|mixed|string|WP_Error
|
429 |
*/
|
430 |
public function get_canonical_url() {
|
431 |
+
$helper = new Smartcrawl_Canonical_Value_Helper();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
432 |
|
433 |
+
return $helper->get_canonical();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
434 |
}
|
435 |
|
436 |
/**
|
557 |
* @return string Resolved description
|
558 |
*/
|
559 |
public function get_description( $metadesc = '' ) {
|
|
|
|
|
|
|
|
|
|
|
560 |
$resolver = $this->get_resolver();
|
|
|
561 |
$post = $resolver->get_context();
|
562 |
$wp_query = $resolver->get_query_context();
|
563 |
+
$request_description = $this->get_request_param( 'wds_description' );
|
564 |
+
if ( ! empty( $request_description ) ) {
|
565 |
+
return smartcrawl_replace_vars( $request_description, $post );
|
566 |
+
}
|
567 |
|
568 |
if ( empty( $metadesc ) && is_object( $post ) ) {
|
569 |
$metadesc = smartcrawl_get_trimmed_excerpt( $post->post_excerpt, $post->post_content );
|
601 |
$metadesc = $stored;
|
602 |
}
|
603 |
} elseif ( Smartcrawl_Endpoint_Resolver::L_WOO_SHOP === $location ) { // WooCommerce shop page.
|
604 |
+
$shop_page = get_post( wc_get_page_id( 'shop' ) );
|
605 |
+
if ( is_a( $shop_page, 'WP_Post' ) ) {
|
606 |
+
$fixed_shop_desc = smartcrawl_get_value( 'metadesc', $shop_page->ID );
|
607 |
+
if ( $fixed_shop_desc ) {
|
608 |
+
$metadesc = smartcrawl_replace_vars( $fixed_shop_desc, (array) $shop_page );
|
609 |
+
} elseif ( isset( $smartcrawl_options['metadesc-page'] ) && ! empty( $smartcrawl_options['metadesc-page'] ) ) {
|
610 |
+
$metadesc = smartcrawl_replace_vars( $smartcrawl_options['metadesc-page'], (array) $shop_page );
|
611 |
+
}
|
612 |
}
|
613 |
} elseif ( Smartcrawl_Endpoint_Resolver::L_BLOG_HOME === $location && isset( $smartcrawl_options['metadesc-home'] ) ) {
|
614 |
$metadesc = smartcrawl_replace_vars( $smartcrawl_options['metadesc-home'], array() );
|
705 |
$metakey = smartcrawl_get_value( 'keywords', $post_id );
|
706 |
$use_tags = smartcrawl_get_value( 'tags_to_keywords', $post_id );
|
707 |
$metakey = $use_tags ? $this->_tags_to_keywords( $metakey ) : $metakey;
|
708 |
+
} elseif ( Smartcrawl_Endpoint_Resolver::L_STATIC_HOME === $location ) {
|
709 |
+
$posts_page = get_post( get_option( 'page_for_posts' ) );
|
710 |
+
if ( is_object( $posts_page ) && ! empty( $posts_page->ID ) ) {
|
711 |
+
$metakey = smartcrawl_get_value( 'keywords', $posts_page->ID );
|
712 |
+
if ( smartcrawl_get_value( 'tags_to_keywords', $posts_page->ID ) ) {
|
713 |
+
$extra = array_merge( $extra, $this->get_tag_keywords( $posts_page ) );
|
714 |
+
}
|
715 |
+
$extra = array_merge( $extra, $this->get_focus_keywords( $posts_page ) );
|
716 |
+
}
|
717 |
} else {
|
718 |
$metakey = $resolver->is_singular( $location ) ? smartcrawl_get_value( 'keywords', $post->ID ) : false;
|
719 |
if ( $resolver->is_singular( $location ) ) {
|
869 |
exit;
|
870 |
}
|
871 |
}
|
872 |
+
|
873 |
+
private function force_rewrite_title() {
|
874 |
+
return smartcrawl_is_switch_active( 'SMARTCRAWL_FORCE_REWRITE_TITLE' );
|
875 |
+
}
|
876 |
}
|
includes/tools/redirect.php
CHANGED
@@ -57,16 +57,41 @@ class Smartcrawl_Redirection_Front {
|
|
57 |
* @return string Safe redirection URL
|
58 |
*/
|
59 |
private function _to_safe_redirection( $redirection, $source = false ) {
|
60 |
-
$fallback = home_url();
|
61 |
-
|
62 |
$status = $this->_get_redirection_status( $source );
|
|
|
|
|
|
|
63 |
|
64 |
$redirection = wp_sanitize_redirect( $redirection );
|
65 |
-
$redirection = wp_validate_redirect( $redirection,
|
|
|
|
|
66 |
|
67 |
return $redirection;
|
68 |
}
|
69 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
/**
|
71 |
* Gets redirection status header code
|
72 |
*
|
57 |
* @return string Safe redirection URL
|
58 |
*/
|
59 |
private function _to_safe_redirection( $redirection, $source = false ) {
|
|
|
|
|
60 |
$status = $this->_get_redirection_status( $source );
|
61 |
+
$fallback = apply_filters( 'wp_safe_redirect_fallback', home_url(), $status );
|
62 |
+
|
63 |
+
add_filter( 'allowed_redirect_hosts', array( $this, 'allow_external_host' ), 10, 2 );
|
64 |
|
65 |
$redirection = wp_sanitize_redirect( $redirection );
|
66 |
+
$redirection = wp_validate_redirect( $redirection, $fallback );
|
67 |
+
|
68 |
+
remove_filter( 'allowed_redirect_hosts', array( $this, 'allow_external_host' ) );
|
69 |
|
70 |
return $redirection;
|
71 |
}
|
72 |
|
73 |
+
public function allow_external_host( $allowed_hosts, $host_being_checked ) {
|
74 |
+
$source = $this->_model->get_current_url();
|
75 |
+
$destination = $this->_model->get_redirection( $source );
|
76 |
+
$destination_parts = wp_parse_url( $destination );
|
77 |
+
|
78 |
+
if (
|
79 |
+
empty( $destination_parts['host'] )
|
80 |
+
|| $host_being_checked !== $destination_parts['host']
|
81 |
+
) {
|
82 |
+
return $allowed_hosts;
|
83 |
+
}
|
84 |
+
|
85 |
+
if ( ! is_array( $allowed_hosts ) ) {
|
86 |
+
$allowed_hosts = array();
|
87 |
+
}
|
88 |
+
|
89 |
+
return array_unique( array_merge(
|
90 |
+
$allowed_hosts,
|
91 |
+
array( $destination_parts['host'] )
|
92 |
+
) );
|
93 |
+
}
|
94 |
+
|
95 |
/**
|
96 |
* Gets redirection status header code
|
97 |
*
|
includes/tools/sitemaps-dashboard-widget.php
CHANGED
@@ -72,25 +72,32 @@ class Smartcrawl_Sitemaps_Dashboard_Widget {
|
|
72 |
* Widget
|
73 |
*/
|
74 |
public function widget() {
|
75 |
-
$
|
76 |
-
$
|
77 |
$engines = get_option( 'wds_engine_notification' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
78 |
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
$update_sitemap = __( 'Update sitemap now', 'wds' );
|
86 |
-
$update_engines = __( 'Force search engines notification', 'wds' );
|
87 |
-
$working = __( 'Updating...', 'wds' );
|
88 |
-
$done_msg = __( 'Done updating the sitemap, please hold on...', 'wds' );
|
89 |
-
|
90 |
-
$sitemap_url = smartcrawl_get_sitemap_url();
|
91 |
-
|
92 |
-
include SMARTCRAWL_PLUGIN_DIR . 'admin/templates/sitemaps-dashboard-widget.php';
|
93 |
-
|
94 |
}
|
95 |
|
96 |
}
|
72 |
* Widget
|
73 |
*/
|
74 |
public function widget() {
|
75 |
+
$sitemap_options = Smartcrawl_Settings::get_options();
|
76 |
+
$sitemap_stats = get_option( 'wds_sitemap_dashboard' );
|
77 |
$engines = get_option( 'wds_engine_notification' );
|
78 |
+
$last_update_date = ! empty( $sitemap_stats['time'] ) ? date_i18n( get_option( 'date_format' ), $sitemap_stats['time'] ) : false;
|
79 |
+
$last_update_time = ! empty( $sitemap_stats['time'] ) ? date_i18n( get_option( 'time_format' ), $sitemap_stats['time'] ) : false;
|
80 |
+
$last_update_timestamp = ( $last_update_date && $last_update_time )
|
81 |
+
? sprintf( esc_html__( 'It was last updated on %1$s, at %2$s.', 'wds' ), $last_update_date, $last_update_time )
|
82 |
+
: esc_html__( "Your sitemap hasn't been updated recently.", 'wds' );
|
83 |
+
$se_notifications_enabled = (boolean) smartcrawl_get_array_value( $sitemap_options, 'ping-google' )
|
84 |
+
|| (boolean) smartcrawl_get_array_value( $sitemap_options, 'ping-bing' );
|
85 |
+
|
86 |
+
Smartcrawl_Simple_Renderer::render( 'wp-dashboard/sitemaps-widget', array(
|
87 |
+
'engines' => $engines,
|
88 |
+
'sitemap_stats' => $sitemap_stats,
|
89 |
+
'last_update_date' => $last_update_date,
|
90 |
+
'last_update_time' => $last_update_time,
|
91 |
+
'last_update_timestamp' => $last_update_timestamp,
|
92 |
+
'se_notifications_enabled' => $se_notifications_enabled,
|
93 |
+
) );
|
94 |
|
95 |
+
Smartcrawl_Simple_Renderer::render( 'wp-dashboard/sitemaps-widget-js', array(
|
96 |
+
'updating' => __( 'Updating...', 'wds' ),
|
97 |
+
'updated' => __( 'Done updating the sitemap, please hold on...', 'wds' ),
|
98 |
+
'notifying' => __( 'Notifying...', 'wds' ),
|
99 |
+
'notified' => __( 'Done notifying search engines, please hold on...', 'wds' ),
|
100 |
+
) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
101 |
}
|
102 |
|
103 |
}
|
includes/tools/sitemaps.php
CHANGED
@@ -219,7 +219,7 @@ class Smartcrawl_Xml_Sitemap {
|
|
219 |
$text = $image['title'] ? $image['title'] : $image['alt'];
|
220 |
$map .= '<image:image>';
|
221 |
$map .= '<image:loc>' . esc_url( $image['src'] ) . '</image:loc>';
|
222 |
-
$map .= '<image:title>' . ent2ncr( $text ) . '</image:title>';
|
223 |
$map .= "</image:image>\n";
|
224 |
}
|
225 |
} else {
|
@@ -286,7 +286,7 @@ class Smartcrawl_Xml_Sitemap {
|
|
286 |
* Loads all items that will get into a sitemap.
|
287 |
*/
|
288 |
private function _load_all_items() {
|
289 |
-
$this->_add_item( home_url(), 1, 'daily' ); // Home URL.
|
290 |
$this->_load_post_items();
|
291 |
$this->_load_taxonomy_items();
|
292 |
// Load BuddyPress-specific items.
|
@@ -678,8 +678,10 @@ class Smartcrawl_Xml_Sitemap {
|
|
678 |
private function _get_stylesheet( $xsl ) {
|
679 |
if ( is_multisite() && defined( 'SUBDOMAIN_INSTALL' ) && ! SUBDOMAIN_INSTALL ) {
|
680 |
$plugin_host = wp_parse_url( SMARTCRAWL_PLUGIN_URL, PHP_URL_HOST );
|
681 |
-
$
|
682 |
-
|
|
|
|
|
683 |
$xsl_host = '../' . $xsl_host;
|
684 |
|
685 |
return "<?xml-stylesheet type='text/xml' href='{$xsl_host}admin/templates/xsl/{$xsl}.xsl'?>\n";
|
219 |
$text = $image['title'] ? $image['title'] : $image['alt'];
|
220 |
$map .= '<image:image>';
|
221 |
$map .= '<image:loc>' . esc_url( $image['src'] ) . '</image:loc>';
|
222 |
+
$map .= '<image:title>' . ent2ncr( esc_attr( $text ) ) . '</image:title>';
|
223 |
$map .= "</image:image>\n";
|
224 |
}
|
225 |
} else {
|
286 |
* Loads all items that will get into a sitemap.
|
287 |
*/
|
288 |
private function _load_all_items() {
|
289 |
+
$this->_add_item( home_url('/'), 1, 'daily' ); // Home URL.
|
290 |
$this->_load_post_items();
|
291 |
$this->_load_taxonomy_items();
|
292 |
// Load BuddyPress-specific items.
|
678 |
private function _get_stylesheet( $xsl ) {
|
679 |
if ( is_multisite() && defined( 'SUBDOMAIN_INSTALL' ) && ! SUBDOMAIN_INSTALL ) {
|
680 |
$plugin_host = wp_parse_url( SMARTCRAWL_PLUGIN_URL, PHP_URL_HOST );
|
681 |
+
$xsl_host = preg_replace(
|
682 |
+
'/^https?:\/\/' . preg_quote( $plugin_host . '/', '/' ) . '/',
|
683 |
+
'', SMARTCRAWL_PLUGIN_URL
|
684 |
+
);
|
685 |
$xsl_host = '../' . $xsl_host;
|
686 |
|
687 |
return "<?xml-stylesheet type='text/xml' href='{$xsl_host}admin/templates/xsl/{$xsl}.xsl'?>\n";
|
languages/{wpmu-dev-seo.pot → wds.pot}
RENAMED
@@ -2,9 +2,9 @@
|
|
2 |
# This file is distributed under the same license as the SmartCrawl package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: SmartCrawl 2.2.
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wpmu-dev-seo\n"
|
7 |
-
"POT-Creation-Date: 2018-
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=utf-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -13,14 +13,14 @@ msgstr ""
|
|
13 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
14 |
"X-Generator: grunt-wp-i18n1.0.2\n"
|
15 |
|
16 |
-
#: includes/admin/admin.php:
|
17 |
#: includes/admin/settings/settings.php:319
|
18 |
#: includes/admin/templates/advanced-tools/advanced-tools-settings.php:49
|
19 |
-
#: includes/admin/templates/onpage/onpage-settings.php:
|
20 |
msgid "Settings"
|
21 |
msgstr ""
|
22 |
|
23 |
-
#: includes/admin/admin.php:
|
24 |
msgid "Error: options page not found."
|
25 |
msgstr ""
|
26 |
|
@@ -28,18 +28,18 @@ msgstr ""
|
|
28 |
msgid "SmartCrawl"
|
29 |
msgstr ""
|
30 |
|
31 |
-
#: includes/admin/admin.php:
|
32 |
#: includes/admin/templates/dashboard/dashboard.php:18
|
33 |
msgid "Dashboard"
|
34 |
msgstr ""
|
35 |
|
36 |
-
#: includes/admin/admin.php:
|
37 |
msgid ""
|
38 |
"This site discourages search engines from indexing the pages, which will "
|
39 |
"affect your SEO efforts."
|
40 |
msgstr ""
|
41 |
|
42 |
-
#: includes/admin/admin.php:
|
43 |
msgid "You can fix this here"
|
44 |
msgstr ""
|
45 |
|
@@ -57,68 +57,70 @@ msgid ""
|
|
57 |
"shorter"
|
58 |
msgstr ""
|
59 |
|
60 |
-
#: includes/admin/metabox.php:
|
|
|
|
|
61 |
msgid "Analyzing content, please wait a few moments"
|
62 |
msgstr ""
|
63 |
|
64 |
-
#: includes/admin/metabox.php:
|
65 |
msgid "NO ODP (Block Open Directory Project description of the page)"
|
66 |
msgstr ""
|
67 |
|
68 |
-
#: includes/admin/metabox.php:
|
69 |
msgid "NO YDIR (Don't display the Yahoo! Directory titles and abstracts)"
|
70 |
msgstr ""
|
71 |
|
72 |
-
#: includes/admin/metabox.php:
|
73 |
msgid "No Archive"
|
74 |
msgstr ""
|
75 |
|
76 |
-
#: includes/admin/metabox.php:
|
77 |
msgid "No Snippet"
|
78 |
msgstr ""
|
79 |
|
80 |
-
#: includes/admin/metabox.php:
|
81 |
msgid "Automatic prioritization"
|
82 |
msgstr ""
|
83 |
|
84 |
-
#: includes/admin/metabox.php:
|
85 |
msgid "1 - Highest priority"
|
86 |
msgstr ""
|
87 |
|
88 |
-
#: includes/admin/metabox.php:
|
89 |
msgid "High priority (root pages default)"
|
90 |
msgstr ""
|
91 |
|
92 |
-
#: includes/admin/metabox.php:
|
93 |
msgid "Secondary priority (subpages default)"
|
94 |
msgstr ""
|
95 |
|
96 |
-
#: includes/admin/metabox.php:
|
97 |
msgid "Medium priority"
|
98 |
msgstr ""
|
99 |
|
100 |
-
#: includes/admin/metabox.php:
|
101 |
msgid "Lowest priority"
|
102 |
msgstr ""
|
103 |
|
104 |
-
#: includes/admin/metabox.php:
|
105 |
#: includes/admin/templates/quick-edit-title.php:5
|
106 |
msgid "Title Tag"
|
107 |
msgstr ""
|
108 |
|
109 |
-
#: includes/admin/metabox.php:
|
110 |
msgid "Robots Meta"
|
111 |
msgstr ""
|
112 |
|
113 |
-
#: includes/admin/metabox.php:
|
114 |
msgid "Redirects to %s"
|
115 |
msgstr ""
|
116 |
|
117 |
-
#: includes/admin/metabox.php:
|
118 |
msgid "No ODP"
|
119 |
msgstr ""
|
120 |
|
121 |
-
#: includes/admin/metabox.php:
|
122 |
msgid "No YDIR"
|
123 |
msgstr ""
|
124 |
|
@@ -232,162 +234,162 @@ msgstr ""
|
|
232 |
msgid "Your description seems to be a bit on the long side, consider trimming it"
|
233 |
msgstr ""
|
234 |
|
235 |
-
#: includes/admin/settings/onpage.php:
|
236 |
#: includes/admin/templates/sitemap/sitemap-crawl-issues-group.php:41
|
237 |
msgid "No"
|
238 |
msgstr ""
|
239 |
|
240 |
-
#: includes/admin/settings/onpage.php:
|
241 |
#: includes/admin/settings/sitemap.php:224
|
242 |
#: includes/admin/settings/sitemap.php:351
|
243 |
msgid "Yes"
|
244 |
msgstr ""
|
245 |
|
246 |
-
#: includes/admin/settings/onpage.php:
|
247 |
#: includes/admin/settings/sitemap.php:347
|
248 |
msgid "Google"
|
249 |
msgstr ""
|
250 |
|
251 |
-
#: includes/admin/settings/onpage.php:
|
252 |
#: includes/admin/settings/sitemap.php:348
|
253 |
msgid "Bing"
|
254 |
msgstr ""
|
255 |
|
256 |
-
#: includes/admin/settings/onpage.php:
|
257 |
#: includes/admin/templates/onpage/onpage-section-settings.php:5
|
258 |
msgid "Separator"
|
259 |
msgstr ""
|
260 |
|
261 |
-
#: includes/admin/settings/onpage.php:
|
262 |
msgid "Date of the post/page"
|
263 |
msgstr ""
|
264 |
|
265 |
-
#: includes/admin/settings/onpage.php:
|
266 |
msgid "Title of the post/page"
|
267 |
msgstr ""
|
268 |
|
269 |
-
#: includes/admin/settings/onpage.php:
|
270 |
msgid "Site's name"
|
271 |
msgstr ""
|
272 |
|
273 |
-
#: includes/admin/settings/onpage.php:
|
274 |
msgid "Site's tagline / description"
|
275 |
msgstr ""
|
276 |
|
277 |
-
#: includes/admin/settings/onpage.php:
|
278 |
msgid "Post/page excerpt (or auto-generated if it does not exist)"
|
279 |
msgstr ""
|
280 |
|
281 |
-
#: includes/admin/settings/onpage.php:
|
282 |
msgid "Post/page excerpt (without auto-generation)"
|
283 |
msgstr ""
|
284 |
|
285 |
-
#: includes/admin/settings/onpage.php:
|
286 |
msgid "Current tag/tags"
|
287 |
msgstr ""
|
288 |
|
289 |
-
#: includes/admin/settings/onpage.php:
|
290 |
msgid "Post categories (comma separated)"
|
291 |
msgstr ""
|
292 |
|
293 |
-
#: includes/admin/settings/onpage.php:
|
294 |
msgid "Category description"
|
295 |
msgstr ""
|
296 |
|
297 |
-
#: includes/admin/settings/onpage.php:
|
298 |
msgid "Tag description"
|
299 |
msgstr ""
|
300 |
|
301 |
-
#: includes/admin/settings/onpage.php:
|
302 |
msgid "Term description"
|
303 |
msgstr ""
|
304 |
|
305 |
-
#: includes/admin/settings/onpage.php:
|
306 |
msgid "Term name"
|
307 |
msgstr ""
|
308 |
|
309 |
-
#: includes/admin/settings/onpage.php:
|
310 |
msgid "Post/page modified time"
|
311 |
msgstr ""
|
312 |
|
313 |
-
#: includes/admin/settings/onpage.php:
|
314 |
msgid "Post/page ID"
|
315 |
msgstr ""
|
316 |
|
317 |
-
#: includes/admin/settings/onpage.php:
|
318 |
msgid "Post/page author's 'nicename'"
|
319 |
msgstr ""
|
320 |
|
321 |
-
#: includes/admin/settings/onpage.php:
|
322 |
msgid "Post/page author's userid"
|
323 |
msgstr ""
|
324 |
|
325 |
-
#: includes/admin/settings/onpage.php:
|
326 |
msgid "Current search phrase"
|
327 |
msgstr ""
|
328 |
|
329 |
-
#: includes/admin/settings/onpage.php:
|
330 |
msgid "Current time"
|
331 |
msgstr ""
|
332 |
|
333 |
-
#: includes/admin/settings/onpage.php:
|
334 |
msgid "Current date"
|
335 |
msgstr ""
|
336 |
|
337 |
-
#: includes/admin/settings/onpage.php:
|
338 |
msgid "Current month"
|
339 |
msgstr ""
|
340 |
|
341 |
-
#: includes/admin/settings/onpage.php:
|
342 |
msgid "Current year"
|
343 |
msgstr ""
|
344 |
|
345 |
-
#: includes/admin/settings/onpage.php:
|
346 |
msgid "Current page number (i.e. page 2 of 4)"
|
347 |
msgstr ""
|
348 |
|
349 |
-
#: includes/admin/settings/onpage.php:
|
350 |
msgid "Current page total"
|
351 |
msgstr ""
|
352 |
|
353 |
-
#: includes/admin/settings/onpage.php:
|
354 |
msgid "Current page number"
|
355 |
msgstr ""
|
356 |
|
357 |
-
#: includes/admin/settings/onpage.php:
|
358 |
msgid "Attachment caption"
|
359 |
msgstr ""
|
360 |
|
361 |
-
#: includes/admin/settings/onpage.php:
|
362 |
-
#: includes/admin/settings/onpage.php:
|
363 |
msgid "Current page number, spelled out as numeral in English"
|
364 |
msgstr ""
|
365 |
|
366 |
-
#: includes/admin/settings/onpage.php:
|
367 |
msgid "Current page total, spelled out as numeral in English"
|
368 |
msgstr ""
|
369 |
|
370 |
-
#: includes/admin/settings/onpage.php:
|
371 |
msgid "Post type label plural"
|
372 |
msgstr ""
|
373 |
|
374 |
-
#: includes/admin/settings/onpage.php:
|
375 |
msgid "Post type label singular"
|
376 |
msgstr ""
|
377 |
|
378 |
-
#: includes/admin/settings/onpage.php:
|
379 |
msgid "BuddyPress group name"
|
380 |
msgstr ""
|
381 |
|
382 |
-
#: includes/admin/settings/onpage.php:
|
383 |
msgid "BuddyPress group description"
|
384 |
msgstr ""
|
385 |
|
386 |
-
#: includes/admin/settings/onpage.php:
|
387 |
msgid "BuddyPress username"
|
388 |
msgstr ""
|
389 |
|
390 |
-
#: includes/admin/settings/onpage.php:
|
391 |
msgid "BuddyPress user's full name"
|
392 |
msgstr ""
|
393 |
|
@@ -450,33 +452,33 @@ msgstr ""
|
|
450 |
msgid "Home page"
|
451 |
msgstr ""
|
452 |
|
453 |
-
#: includes/admin/settings/settings.php:468
|
454 |
#: includes/admin/templates/settings/settings-section-import-export.php:44
|
455 |
msgid "Yoast SEO"
|
456 |
msgstr ""
|
457 |
|
458 |
-
#: includes/admin/settings/settings.php:
|
459 |
#: includes/admin/templates/settings/settings-section-import-export.php:52
|
460 |
msgid "All In One SEO"
|
461 |
msgstr ""
|
462 |
|
463 |
-
#: includes/admin/settings/settings.php:
|
464 |
msgid "auto-import"
|
465 |
msgstr ""
|
466 |
|
467 |
-
#: includes/admin/settings/settings.php:
|
468 |
msgid ""
|
469 |
-
"We've detected you have %1$s
|
470 |
"configuration into SmartCrawl?"
|
471 |
msgstr ""
|
472 |
|
473 |
-
#: includes/admin/settings/settings.php:
|
474 |
msgid ""
|
475 |
"We have spent countless hours developing this free plugin for you, and we "
|
476 |
"would really appreciate it if you dropped us a quick rating."
|
477 |
msgstr ""
|
478 |
|
479 |
-
#: includes/admin/settings/settings.php:
|
480 |
msgid "Rate SmartCrawl"
|
481 |
msgstr ""
|
482 |
|
@@ -570,6 +572,7 @@ msgstr ""
|
|
570 |
|
571 |
#: includes/admin/settings.php:296 includes/admin/settings.php:360
|
572 |
#: includes/admin/templates/advanced-tools/underscore-bulk-update-form.php:31
|
|
|
573 |
#: includes/admin/templates/sitemap/sitemap-occurrences-overlay.php:39
|
574 |
#: includes/admin/templates/sitemap/sitemap-redirect-overlay.php:59
|
575 |
msgid "Cancel"
|
@@ -641,40 +644,22 @@ msgstr ""
|
|
641 |
msgid "Please select some items to edit them."
|
642 |
msgstr ""
|
643 |
|
644 |
-
#: includes/admin/settings.php:
|
645 |
-
msgid "
|
646 |
msgstr ""
|
647 |
|
648 |
-
#: includes/admin/settings.php:
|
649 |
-
#: includes/admin/templates/settings/settings-section-import-export.php:16
|
650 |
-
#: includes/admin/templates/settings/settings-section-import-export.php:34
|
651 |
-
#: includes/admin/templates/settings/settings-section-import-export.php:47
|
652 |
-
#: includes/admin/templates/settings/settings-section-import-export.php:55
|
653 |
-
msgid "Import"
|
654 |
-
msgstr ""
|
655 |
-
|
656 |
-
#: includes/admin/settings.php:572
|
657 |
msgid "Settings updated"
|
658 |
msgstr ""
|
659 |
|
660 |
-
#: includes/admin/settings.php:
|
661 |
msgid " & W3 Total Cache Page Cache flushed"
|
662 |
msgstr ""
|
663 |
|
664 |
-
#: includes/admin/settings.php:
|
665 |
msgid " & WP Super Cache flushed"
|
666 |
msgstr ""
|
667 |
|
668 |
-
#: includes/admin/settings.php:591
|
669 |
-
msgid "deactivate %s"
|
670 |
-
msgstr ""
|
671 |
-
|
672 |
-
#: includes/admin/settings.php:597
|
673 |
-
msgid ""
|
674 |
-
"Your %1$s configuration has been successfully imported! We recommend you "
|
675 |
-
"%2$s to avoid any potential conflicts."
|
676 |
-
msgstr ""
|
677 |
-
|
678 |
#: includes/admin/templates/advanced-tools/advanced-section-automatic-linking-settings.php:14
|
679 |
msgid "Min lengths"
|
680 |
msgstr ""
|
@@ -793,7 +778,7 @@ msgstr ""
|
|
793 |
|
794 |
#: includes/admin/templates/advanced-tools/advanced-section-moz.php:21
|
795 |
#: includes/admin/templates/onpage/onpage-og-disabled.php:10
|
796 |
-
#: includes/admin/templates/onpage/onpage-section-homepage.php:
|
797 |
#: includes/admin/templates/onpage/onpage-twitter-disabled.php:10
|
798 |
#: includes/admin/templates/progress-notice.php:27
|
799 |
#: includes/core/checks/class-wds-check-keywords-used.php:99
|
@@ -898,22 +883,6 @@ msgstr ""
|
|
898 |
msgid "View Documentation"
|
899 |
msgstr ""
|
900 |
|
901 |
-
#: includes/admin/templates/advanced-tools/advanced-tools-settings.php:26
|
902 |
-
msgid ""
|
903 |
-
"Configure SmartCrawl to automatically link certain key words to a page on "
|
904 |
-
"your blog or even"
|
905 |
-
msgstr ""
|
906 |
-
|
907 |
-
#: includes/admin/templates/advanced-tools/advanced-tools-settings.php:27
|
908 |
-
msgid ""
|
909 |
-
"a whole new site all together. Internal linking can help boost SEO but "
|
910 |
-
"giving search engines"
|
911 |
-
msgstr ""
|
912 |
-
|
913 |
-
#: includes/admin/templates/advanced-tools/advanced-tools-settings.php:28
|
914 |
-
msgid "ample ways to index your site."
|
915 |
-
msgstr ""
|
916 |
-
|
917 |
#: includes/admin/templates/advanced-tools/advanced-tools-settings.php:33
|
918 |
msgid "Activate Keyword Linking"
|
919 |
msgstr ""
|
@@ -999,7 +968,7 @@ msgstr ""
|
|
999 |
|
1000 |
#: includes/admin/templates/advanced-tools/advanced-tools-settings.php:99
|
1001 |
#: includes/admin/templates/dashboard/dashboard-widget-advanced-tools.php:64
|
1002 |
-
#: includes/admin/templates/metabox/metabox-tab-advanced.php:
|
1003 |
#: includes/admin/templates/upsell-modal.php:18
|
1004 |
msgid "Automatic Linking"
|
1005 |
msgstr ""
|
@@ -1031,21 +1000,21 @@ msgid ""
|
|
1031 |
msgstr ""
|
1032 |
|
1033 |
#: includes/admin/templates/checkup/checkup-checkup-results.php:53
|
1034 |
-
#: includes/admin/templates/metabox/analysis-seo-analysis.php:
|
1035 |
msgid "Recommendation"
|
1036 |
msgstr ""
|
1037 |
|
1038 |
#: includes/admin/templates/checkup/checkup-checkup-results.php:62
|
1039 |
-
#: includes/admin/templates/metabox/analysis-seo-analysis.php:
|
1040 |
msgid "More Info"
|
1041 |
msgstr ""
|
1042 |
|
1043 |
#: includes/admin/templates/checkup/checkup-checkup-results.php:77
|
1044 |
msgid ""
|
1045 |
"Grab the Pro version of SmartCrawl to unlock unlimited SEO Checkups plus "
|
1046 |
-
"automated scheduled reports to always stay on top of any issues
|
1047 |
-
"features are included in a WPMU DEV membership along with 100+ plugins "
|
1048 |
-
"
|
1049 |
msgstr ""
|
1050 |
|
1051 |
#: includes/admin/templates/checkup/checkup-checkup-results.php:78
|
@@ -1217,7 +1186,7 @@ msgstr ""
|
|
1217 |
#: includes/admin/templates/dashboard/dashboard-content-analysis-seo-overview.php:32
|
1218 |
#: includes/admin/templates/dashboard/dashboard-content-analysis-seo-overview.php:57
|
1219 |
#: includes/admin/templates/post-list/post-seo-analysis-good.php:2
|
1220 |
-
#: includes/core/class-wds-controller-analysis.php:
|
1221 |
msgid "Good"
|
1222 |
msgstr ""
|
1223 |
|
@@ -1383,7 +1352,7 @@ msgid ""
|
|
1383 |
msgstr ""
|
1384 |
|
1385 |
#: includes/admin/templates/dashboard/dashboard-widget-content-analysis.php:40
|
1386 |
-
#: includes/admin/templates/metabox/metabox-seo-analysis-container.php:
|
1387 |
msgid "SEO Analysis"
|
1388 |
msgstr ""
|
1389 |
|
@@ -1411,7 +1380,7 @@ msgid "Edit Posts"
|
|
1411 |
msgstr ""
|
1412 |
|
1413 |
#: includes/admin/templates/dashboard/dashboard-widget-onpage.php:23
|
1414 |
-
#: includes/admin/templates/metabox/metabox-tab-social.php:
|
1415 |
msgid "Titles & Meta"
|
1416 |
msgstr ""
|
1417 |
|
@@ -1510,9 +1479,9 @@ msgstr ""
|
|
1510 |
|
1511 |
#: includes/admin/templates/dashboard/dashboard-widget-social.php:38
|
1512 |
#: includes/admin/templates/dashboard/onboarding.php:57
|
1513 |
-
#: includes/admin/templates/metabox/metabox-tab-social.php:
|
1514 |
#: includes/admin/templates/social/social-settings.php:40
|
1515 |
-
#: includes/admin/templates/term-additions-form.php:
|
1516 |
msgid "OpenGraph"
|
1517 |
msgstr ""
|
1518 |
|
@@ -1564,7 +1533,7 @@ msgstr ""
|
|
1564 |
#: includes/admin/templates/dashboard/onboarding.php:5
|
1565 |
msgid ""
|
1566 |
"Welcome to SmartCrawl, the hottest SEO plugin for WordPress! Let's quickly "
|
1567 |
-
"set up the basics for you, then you can fine
|
1568 |
"our recommendations are on by default."
|
1569 |
msgstr ""
|
1570 |
|
@@ -1690,151 +1659,145 @@ msgid "Readability score"
|
|
1690 |
msgstr ""
|
1691 |
|
1692 |
#: includes/admin/templates/metabox/analysis-readability.php:60
|
1693 |
-
#: includes/admin/templates/metabox/metabox-seo-analysis-container.php:
|
1694 |
msgid "Refresh"
|
1695 |
msgstr ""
|
1696 |
|
1697 |
-
#: includes/admin/templates/metabox/analysis-readability.php:
|
1698 |
msgid "Flesch-Kincaid Test"
|
1699 |
msgstr ""
|
1700 |
|
1701 |
-
#: includes/admin/templates/metabox/analysis-readability.php:
|
1702 |
-
#: includes/admin/templates/metabox/analysis-seo-analysis.php:
|
1703 |
#: includes/admin/templates/sitemap/sitemap-crawl-issue-ignored.php:24
|
1704 |
msgid "Restore"
|
1705 |
msgstr ""
|
1706 |
|
1707 |
-
#: includes/admin/templates/metabox/analysis-readability.php:
|
1708 |
#: includes/admin/templates/sitemap/sitemap-crawl-issues-group.php:45
|
1709 |
msgid "Overview"
|
1710 |
msgstr ""
|
1711 |
|
1712 |
-
#: includes/admin/templates/metabox/analysis-readability.php:
|
1713 |
msgid ""
|
1714 |
"The Flesch-Kincaid readability tests are readability tests designed to "
|
1715 |
"indicate how difficult a passage in English is to understand. Here are the "
|
1716 |
"benchmarks."
|
1717 |
msgstr ""
|
1718 |
|
1719 |
-
#: includes/admin/templates/metabox/analysis-readability.php:
|
1720 |
msgid "Score"
|
1721 |
msgstr ""
|
1722 |
|
1723 |
-
#: includes/admin/templates/metabox/analysis-readability.php:
|
1724 |
-
#: includes/admin/templates/metabox/metabox-meta-edit-form.php:
|
1725 |
#: includes/admin/templates/metabox/metabox-social-meta-tags.php:51
|
1726 |
#: includes/admin/templates/onpage/onpage-social-meta-tags.php:64
|
1727 |
#: includes/admin/templates/term-additions-form.php:88
|
1728 |
-
#: includes/admin/templates/term-additions-form.php:
|
1729 |
msgid "Description"
|
1730 |
msgstr ""
|
1731 |
|
1732 |
-
#: includes/admin/templates/metabox/analysis-readability.php:
|
1733 |
msgid "How to fix"
|
1734 |
msgstr ""
|
1735 |
|
1736 |
-
#: includes/admin/templates/metabox/analysis-readability.php:
|
1737 |
msgid ""
|
1738 |
"Try to use shorter sentences, with less difficult words to improve "
|
1739 |
"readability."
|
1740 |
msgstr ""
|
1741 |
|
1742 |
-
#: includes/admin/templates/metabox/analysis-readability.php:
|
1743 |
-
#: includes/admin/templates/metabox/analysis-seo-analysis.php:
|
1744 |
#: includes/admin/templates/sitemap/sitemap-crawl-issue-generic.php:39
|
1745 |
#: includes/admin/templates/sitemap/sitemap-crawl-issue-sitemap.php:29
|
1746 |
msgid "Ignore"
|
1747 |
msgstr ""
|
1748 |
|
1749 |
#: includes/admin/templates/metabox/analysis-seo-analysis.php:14
|
1750 |
-
#: includes/core/class-wds-controller-analysis.php:
|
1751 |
msgid "You need to add focus keywords to see recommendations for this article."
|
1752 |
msgstr ""
|
1753 |
|
1754 |
-
#: includes/admin/templates/metabox/analysis-seo-analysis.php:
|
1755 |
msgid ""
|
1756 |
"You have %d SEO recommendations. We recommend you satisfy as many "
|
1757 |
"improvements as possible to ensure your content gets found."
|
1758 |
msgstr ""
|
1759 |
|
1760 |
-
#: includes/admin/templates/metabox/analysis-seo-analysis.php:
|
1761 |
msgid "You have optimized your SEO to the max. Bravo!"
|
1762 |
msgstr ""
|
1763 |
|
1764 |
#: includes/admin/templates/metabox/analysis.php:2
|
1765 |
-
#: includes/admin/templates/metabox/metabox-seo-analysis-container.php:
|
1766 |
#: includes/admin/templates/metabox/metabox-tab-readability.php:6
|
1767 |
msgid "Reload"
|
1768 |
msgstr ""
|
1769 |
|
|
|
|
|
|
|
|
|
|
|
1770 |
#: includes/admin/templates/metabox/metabox-main.php:25
|
1771 |
-
#: includes/core/class-wds-controller-analysis.php:
|
1772 |
msgid "SEO"
|
1773 |
msgstr ""
|
1774 |
|
1775 |
#: includes/admin/templates/metabox/metabox-main.php:26
|
1776 |
-
#: includes/core/class-wds-controller-analysis.php:
|
1777 |
msgid "Readability"
|
1778 |
msgstr ""
|
1779 |
|
1780 |
#: includes/admin/templates/metabox/metabox-main.php:30
|
|
|
1781 |
#: includes/admin/templates/sitemap/sitemap-settings.php:135
|
1782 |
msgid "Advanced"
|
1783 |
msgstr ""
|
1784 |
|
1785 |
-
#: includes/admin/templates/metabox/metabox-meta-edit-form.php:
|
1786 |
msgid "Edit Meta"
|
1787 |
msgstr ""
|
1788 |
|
1789 |
-
#: includes/admin/templates/metabox/metabox-meta-edit-form.php:
|
1790 |
-
#: includes/admin/templates/term-additions-form.php:
|
1791 |
msgid "SEO Title"
|
1792 |
msgstr ""
|
1793 |
|
1794 |
-
#: includes/admin/templates/metabox/metabox-meta-edit-form.php:
|
1795 |
msgid "- Include your focus keywords. 50-%d characters recommended."
|
1796 |
msgstr ""
|
1797 |
|
1798 |
-
#: includes/admin/templates/metabox/metabox-meta-edit-form.php:
|
1799 |
msgid "- Recommended minimum of 135 characters, maximum %d."
|
1800 |
msgstr ""
|
1801 |
|
1802 |
-
#: includes/admin/templates/metabox/metabox-meta-edit-form.php:
|
1803 |
msgid "Keywords"
|
1804 |
msgstr ""
|
1805 |
|
1806 |
-
#: includes/admin/templates/metabox/metabox-meta-edit-form.php:
|
1807 |
-
#: includes/admin/templates/metabox/metabox-meta-edit-form.php:
|
1808 |
msgid "- Try to avoid stop words like ‘and’ and ‘the’ which search engines ignore."
|
1809 |
msgstr ""
|
1810 |
|
1811 |
-
#: includes/admin/templates/metabox/metabox-meta-edit-form.php:
|
1812 |
msgid "News Keywords"
|
1813 |
msgstr ""
|
1814 |
|
1815 |
-
#: includes/admin/templates/metabox/metabox-meta-edit-form.php:
|
1816 |
msgid "Tags As Keywords"
|
1817 |
msgstr ""
|
1818 |
|
1819 |
-
#: includes/admin/templates/metabox/metabox-meta-edit-form.php:
|
1820 |
msgid ""
|
1821 |
"If you enable using tags, post tags will be merged in with any other "
|
1822 |
"keywords you enter in the text box."
|
1823 |
msgstr ""
|
1824 |
|
1825 |
-
#: includes/admin/templates/metabox/metabox-
|
1826 |
-
msgid "Dummy Title"
|
1827 |
-
msgstr ""
|
1828 |
-
|
1829 |
-
#: includes/admin/templates/metabox/metabox-preview.php:33
|
1830 |
-
msgid "Dummy description"
|
1831 |
-
msgstr ""
|
1832 |
-
|
1833 |
-
#: includes/admin/templates/metabox/metabox-preview.php:43
|
1834 |
-
msgid "Google Preview"
|
1835 |
-
msgstr ""
|
1836 |
-
|
1837 |
-
#: includes/admin/templates/metabox/metabox-seo-analysis-container.php:20
|
1838 |
msgid ""
|
1839 |
"This tool helps you optimize your content to give it the best chance of "
|
1840 |
"being found in search engines when people are looking for it. Start by "
|
@@ -1843,17 +1806,17 @@ msgid ""
|
|
1843 |
"highly optimized."
|
1844 |
msgstr ""
|
1845 |
|
1846 |
-
#: includes/admin/templates/metabox/metabox-seo-analysis-container.php:
|
1847 |
msgid "Focus keyword"
|
1848 |
msgstr ""
|
1849 |
|
1850 |
-
#: includes/admin/templates/metabox/metabox-seo-analysis-container.php:
|
1851 |
msgid ""
|
1852 |
"- Choose a single word, phrase or part of a sentence that people will "
|
1853 |
"likely search for."
|
1854 |
msgstr ""
|
1855 |
|
1856 |
-
#: includes/admin/templates/metabox/metabox-seo-analysis-container.php:
|
1857 |
msgid "E.g. broken iphone screen"
|
1858 |
msgstr ""
|
1859 |
|
@@ -1866,12 +1829,12 @@ msgstr ""
|
|
1866 |
#: includes/admin/templates/onpage/onpage-settings.php:28
|
1867 |
#: includes/admin/templates/onpage/onpage-social-meta-tags.php:48
|
1868 |
#: includes/admin/templates/term-additions-form.php:74
|
1869 |
-
#: includes/admin/templates/term-additions-form.php:
|
1870 |
msgid "Title"
|
1871 |
msgstr ""
|
1872 |
|
1873 |
#: includes/admin/templates/metabox/metabox-social-meta-tags.php:64
|
1874 |
-
#: includes/admin/templates/term-additions-form.php:
|
1875 |
msgid "Featured Image"
|
1876 |
msgstr ""
|
1877 |
|
@@ -1883,7 +1846,7 @@ msgstr ""
|
|
1883 |
#: includes/admin/templates/metabox/metabox-social-meta-tags.php:72
|
1884 |
#: includes/admin/templates/onpage/onpage-social-meta-tags.php:94
|
1885 |
#: includes/admin/templates/term-additions-form.php:105
|
1886 |
-
#: includes/admin/templates/term-additions-form.php:
|
1887 |
msgid "Add image"
|
1888 |
msgstr ""
|
1889 |
|
@@ -1897,100 +1860,100 @@ msgid ""
|
|
1897 |
"the post is shared."
|
1898 |
msgstr ""
|
1899 |
|
1900 |
-
#: includes/admin/templates/metabox/metabox-tab-advanced.php:
|
1901 |
#: includes/admin/templates/onpage/onpage-meta-robots.php:11
|
1902 |
msgid "Indexing"
|
1903 |
msgstr ""
|
1904 |
|
1905 |
-
#: includes/admin/templates/metabox/metabox-tab-advanced.php:
|
1906 |
msgid "Choose how search engines will index this particular page."
|
1907 |
msgstr ""
|
1908 |
|
1909 |
-
#: includes/admin/templates/metabox/metabox-tab-advanced.php:
|
1910 |
msgid "Index - Override Post Type Setting"
|
1911 |
msgstr ""
|
1912 |
|
1913 |
-
#: includes/admin/templates/metabox/metabox-tab-advanced.php:
|
1914 |
-
#: includes/admin/templates/metabox/metabox-tab-advanced.php:
|
1915 |
msgid ""
|
1916 |
"Instruct search engines whether or not you want this post to appear in "
|
1917 |
"search results."
|
1918 |
msgstr ""
|
1919 |
|
1920 |
-
#: includes/admin/templates/metabox/metabox-tab-advanced.php:
|
1921 |
msgid "Index"
|
1922 |
msgstr ""
|
1923 |
|
1924 |
-
#: includes/admin/templates/metabox/metabox-tab-advanced.php:
|
1925 |
msgid "Follow - Override Post Type Setting"
|
1926 |
msgstr ""
|
1927 |
|
1928 |
-
#: includes/admin/templates/metabox/metabox-tab-advanced.php:
|
1929 |
-
#: includes/admin/templates/metabox/metabox-tab-advanced.php:
|
1930 |
msgid ""
|
1931 |
"Tells search engines whether or not to follow the links on your page and "
|
1932 |
"crawl them too."
|
1933 |
msgstr ""
|
1934 |
|
1935 |
-
#: includes/admin/templates/metabox/metabox-tab-advanced.php:
|
1936 |
msgid "Follow"
|
1937 |
msgstr ""
|
1938 |
|
1939 |
-
#: includes/admin/templates/metabox/metabox-tab-advanced.php:
|
1940 |
msgid "Archive"
|
1941 |
msgstr ""
|
1942 |
|
1943 |
-
#: includes/admin/templates/metabox/metabox-tab-advanced.php:
|
1944 |
msgid "Instructs search engines to store a cached version of this page."
|
1945 |
msgstr ""
|
1946 |
|
1947 |
-
#: includes/admin/templates/metabox/metabox-tab-advanced.php:
|
1948 |
msgid "Snippet"
|
1949 |
msgstr ""
|
1950 |
|
1951 |
-
#: includes/admin/templates/metabox/metabox-tab-advanced.php:
|
1952 |
msgid ""
|
1953 |
"Allows search engines to show a snippet of this page in the search results "
|
1954 |
"and prevents them from caching the page."
|
1955 |
msgstr ""
|
1956 |
|
1957 |
-
#: includes/admin/templates/metabox/metabox-tab-advanced.php:
|
1958 |
-
#: includes/admin/templates/term-additions-form.php:
|
1959 |
msgid "Canonical"
|
1960 |
msgstr ""
|
1961 |
|
1962 |
-
#: includes/admin/templates/metabox/metabox-tab-advanced.php:
|
1963 |
msgid ""
|
1964 |
"If you have several similar versions of this page you can point search "
|
1965 |
"engines to the canonical or \"genuine\" version to avoid duplicate content "
|
1966 |
"issues."
|
1967 |
msgstr ""
|
1968 |
|
1969 |
-
#: includes/admin/templates/metabox/metabox-tab-advanced.php:
|
1970 |
msgid "Enter the full canonical URL including http:// or https://"
|
1971 |
msgstr ""
|
1972 |
|
1973 |
-
#: includes/admin/templates/metabox/metabox-tab-advanced.php:
|
1974 |
msgid "301 Redirect"
|
1975 |
msgstr ""
|
1976 |
|
1977 |
-
#: includes/admin/templates/metabox/metabox-tab-advanced.php:
|
1978 |
msgid "Send visitors to this URL to another page."
|
1979 |
msgstr ""
|
1980 |
|
1981 |
-
#: includes/admin/templates/metabox/metabox-tab-advanced.php:
|
1982 |
msgid "Enter the URL to send traffic to including http:// or https://"
|
1983 |
msgstr ""
|
1984 |
|
1985 |
-
#: includes/admin/templates/metabox/metabox-tab-advanced.php:
|
1986 |
msgid "Sitemap Priority"
|
1987 |
msgstr ""
|
1988 |
|
1989 |
-
#: includes/admin/templates/metabox/metabox-tab-advanced.php:
|
1990 |
msgid "You can prevent this particular post from being auto-linked"
|
1991 |
msgstr ""
|
1992 |
|
1993 |
-
#: includes/admin/templates/metabox/metabox-tab-advanced.php:
|
1994 |
msgid "Enable automatic linking for this post"
|
1995 |
msgstr ""
|
1996 |
|
@@ -2017,23 +1980,23 @@ msgstr ""
|
|
2017 |
msgid "= 70+"
|
2018 |
msgstr ""
|
2019 |
|
2020 |
-
#: includes/admin/templates/metabox/metabox-tab-social.php:
|
2021 |
msgid ""
|
2022 |
"Customize this posts title, description and featured images for social "
|
2023 |
"shares. You can also configure the default settings for this post type in "
|
2024 |
"SmartCrawl's %s area."
|
2025 |
msgstr ""
|
2026 |
|
2027 |
-
#: includes/admin/templates/metabox/metabox-tab-social.php:
|
2028 |
msgid "OpenGraph is used on many social networks such as Facebook."
|
2029 |
msgstr ""
|
2030 |
|
2031 |
-
#: includes/admin/templates/metabox/metabox-tab-social.php:
|
2032 |
#: includes/admin/templates/term-additions-form.php:133
|
2033 |
msgid "Twitter"
|
2034 |
msgstr ""
|
2035 |
|
2036 |
-
#: includes/admin/templates/metabox/metabox-tab-social.php:
|
2037 |
msgid "These details will be used in Twitter cards."
|
2038 |
msgstr ""
|
2039 |
|
@@ -2104,40 +2067,40 @@ msgstr ""
|
|
2104 |
msgid "Date Archives Meta Description"
|
2105 |
msgstr ""
|
2106 |
|
2107 |
-
#: includes/admin/templates/onpage/onpage-section-homepage.php:
|
2108 |
msgid "Page Title"
|
2109 |
msgstr ""
|
2110 |
|
2111 |
-
#: includes/admin/templates/onpage/onpage-section-homepage.php:
|
2112 |
msgid "Page Description"
|
2113 |
msgstr ""
|
2114 |
|
2115 |
-
#: includes/admin/templates/onpage/onpage-section-homepage.php:
|
2116 |
msgid "Page Keywords"
|
2117 |
msgstr ""
|
2118 |
|
2119 |
-
#: includes/admin/templates/onpage/onpage-section-homepage.php:
|
2120 |
msgid "Comma-separated keywords, e.g."
|
2121 |
msgstr ""
|
2122 |
|
2123 |
-
#: includes/admin/templates/onpage/onpage-section-homepage.php:
|
2124 |
msgid "word1, word2"
|
2125 |
msgstr ""
|
2126 |
|
2127 |
-
#: includes/admin/templates/onpage/onpage-section-homepage.php:
|
2128 |
msgid ""
|
2129 |
"Your homepage is set to a static page. Configure your homepage SEO via the "
|
2130 |
"page itself %s."
|
2131 |
msgstr ""
|
2132 |
|
2133 |
-
#: includes/admin/templates/onpage/onpage-section-homepage.php:
|
2134 |
msgid ""
|
2135 |
"Your homepage is set to a static page. Configure your homepage SEO via the "
|
2136 |
"page itself."
|
2137 |
msgstr ""
|
2138 |
|
2139 |
#: includes/admin/templates/onpage/onpage-section-post-type-archive.php:20
|
2140 |
-
#: includes/admin/templates/onpage/onpage-settings.php:
|
2141 |
msgid " Archive Title"
|
2142 |
msgstr ""
|
2143 |
|
@@ -2194,87 +2157,87 @@ msgstr ""
|
|
2194 |
msgid "Customize your homepage title, description and meta."
|
2195 |
msgstr ""
|
2196 |
|
2197 |
-
#: includes/admin/templates/onpage/onpage-settings.php:
|
2198 |
msgid "Customize your %s title, description and meta."
|
2199 |
msgstr ""
|
2200 |
|
2201 |
-
#: includes/admin/templates/onpage/onpage-settings.php:
|
2202 |
msgid "Post Types"
|
2203 |
msgstr ""
|
2204 |
|
2205 |
-
#: includes/admin/templates/onpage/onpage-settings.php:
|
2206 |
msgid "Customize the title, description and meta of %s."
|
2207 |
msgstr ""
|
2208 |
|
2209 |
-
#: includes/admin/templates/onpage/onpage-settings.php:
|
2210 |
msgid "Taxonomies"
|
2211 |
msgstr ""
|
2212 |
|
2213 |
-
#: includes/admin/templates/onpage/onpage-settings.php:
|
2214 |
msgid "Author Archive"
|
2215 |
msgstr ""
|
2216 |
|
2217 |
-
#: includes/admin/templates/onpage/onpage-settings.php:
|
2218 |
msgid ""
|
2219 |
"If you are the only author of your website content Google may see your "
|
2220 |
"author archives as duplicate content to your Blog Homepage. If this is the "
|
2221 |
"case we recommend disabling author archives."
|
2222 |
msgstr ""
|
2223 |
|
2224 |
-
#: includes/admin/templates/onpage/onpage-settings.php:
|
2225 |
msgid "Date Archive"
|
2226 |
msgstr ""
|
2227 |
|
2228 |
-
#: includes/admin/templates/onpage/onpage-settings.php:
|
2229 |
msgid ""
|
2230 |
"Google may see your date archives as duplicate content to your Blog "
|
2231 |
"Homepage. For this reason we recommend disabling date archives."
|
2232 |
msgstr ""
|
2233 |
|
2234 |
-
#: includes/admin/templates/onpage/onpage-settings.php:
|
2235 |
msgid "Search Page"
|
2236 |
msgstr ""
|
2237 |
|
2238 |
-
#: includes/admin/templates/onpage/onpage-settings.php:
|
2239 |
msgid "Customize your search page title, description and meta."
|
2240 |
msgstr ""
|
2241 |
|
2242 |
-
#: includes/admin/templates/onpage/onpage-settings.php:
|
2243 |
msgid "404 Page"
|
2244 |
msgstr ""
|
2245 |
|
2246 |
-
#: includes/admin/templates/onpage/onpage-settings.php:
|
2247 |
msgid "Customize your 404 page title, description and meta."
|
2248 |
msgstr ""
|
2249 |
|
2250 |
-
#: includes/admin/templates/onpage/onpage-settings.php:
|
2251 |
msgid ""
|
2252 |
"Customize title, description and meta for the archive page of custom post "
|
2253 |
"type %s."
|
2254 |
msgstr ""
|
2255 |
|
2256 |
-
#: includes/admin/templates/onpage/onpage-settings.php:
|
2257 |
msgid "Archives"
|
2258 |
msgstr ""
|
2259 |
|
2260 |
-
#: includes/admin/templates/onpage/onpage-settings.php:
|
2261 |
#: includes/admin/templates/sitemap/sitemap-buddypress-settings.php:7
|
2262 |
msgid "BuddyPress Groups"
|
2263 |
msgstr ""
|
2264 |
|
2265 |
-
#: includes/admin/templates/onpage/onpage-settings.php:
|
2266 |
msgid "Customize your BuddyPress group title, description and meta options."
|
2267 |
msgstr ""
|
2268 |
|
2269 |
-
#: includes/admin/templates/onpage/onpage-settings.php:
|
2270 |
msgid "BuddyPress Profile"
|
2271 |
msgstr ""
|
2272 |
|
2273 |
-
#: includes/admin/templates/onpage/onpage-settings.php:
|
2274 |
msgid "Customize your BuddyPress profile title, description and meta options."
|
2275 |
msgstr ""
|
2276 |
|
2277 |
-
#: includes/admin/templates/onpage/onpage-settings.php:
|
2278 |
msgid "BuddyPress"
|
2279 |
msgstr ""
|
2280 |
|
@@ -2437,6 +2400,14 @@ msgstr ""
|
|
2437 |
msgid "Homepage Authority"
|
2438 |
msgstr ""
|
2439 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2440 |
#: includes/admin/templates/settings/settings-custom-meta-tag.php:5
|
2441 |
msgid "Paste your meta tag here"
|
2442 |
msgstr ""
|
@@ -2650,6 +2621,98 @@ msgstr ""
|
|
2650 |
msgid "Import / Export"
|
2651 |
msgstr ""
|
2652 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2653 |
#: includes/admin/templates/settings-message-top.php:52
|
2654 |
msgid "Settings successfully imported"
|
2655 |
msgstr ""
|
@@ -2914,7 +2977,7 @@ msgid "Run regular URL crawls"
|
|
2914 |
msgstr ""
|
2915 |
|
2916 |
#: includes/admin/templates/sitemap/sitemap-section-settings.php:33
|
2917 |
-
msgid "Unable to write to sitemap file:
|
2918 |
msgstr ""
|
2919 |
|
2920 |
#: includes/admin/templates/sitemap/sitemap-section-settings.php:44
|
@@ -3023,26 +3086,6 @@ msgstr ""
|
|
3023 |
msgid "You must activate the Sitemap feature to use the URL crawler."
|
3024 |
msgstr ""
|
3025 |
|
3026 |
-
#: includes/admin/templates/sitemaps-dashboard-widget.php:5
|
3027 |
-
msgid "Your sitemap contains %s."
|
3028 |
-
msgstr ""
|
3029 |
-
|
3030 |
-
#: includes/admin/templates/sitemaps-dashboard-widget.php:10
|
3031 |
-
msgid "items"
|
3032 |
-
msgstr ""
|
3033 |
-
|
3034 |
-
#: includes/admin/templates/sitemaps-dashboard-widget.php:27
|
3035 |
-
msgid "Last notified on %1$s, at %2$s."
|
3036 |
-
msgstr ""
|
3037 |
-
|
3038 |
-
#: includes/admin/templates/sitemaps-dashboard-widget.php:27
|
3039 |
-
msgid "Not notified"
|
3040 |
-
msgstr ""
|
3041 |
-
|
3042 |
-
#: includes/admin/templates/sitemaps-dashboard-widget.php:35
|
3043 |
-
msgid "Search engines haven't been recently updated."
|
3044 |
-
msgstr ""
|
3045 |
-
|
3046 |
#: includes/admin/templates/social/social-section-accounts.php:7
|
3047 |
msgid "Website name"
|
3048 |
msgstr ""
|
@@ -3223,41 +3266,41 @@ msgstr ""
|
|
3223 |
msgid "Add meta data to your pages to make them look great when shared on Twitter."
|
3224 |
msgstr ""
|
3225 |
|
3226 |
-
#: includes/admin/templates/term-additions-form.php:
|
3227 |
msgid "SmartCrawl Settings "
|
3228 |
msgstr ""
|
3229 |
|
3230 |
-
#: includes/admin/templates/term-additions-form.php:
|
3231 |
msgid "The SEO title is used on the archive page for this term."
|
3232 |
msgstr ""
|
3233 |
|
3234 |
-
#: includes/admin/templates/term-additions-form.php:
|
3235 |
msgid "SEO Description"
|
3236 |
msgstr ""
|
3237 |
|
3238 |
-
#: includes/admin/templates/term-additions-form.php:
|
3239 |
msgid ""
|
3240 |
"The SEO description is used for the meta description on the archive page "
|
3241 |
"for this term."
|
3242 |
msgstr ""
|
3243 |
|
3244 |
-
#: includes/admin/templates/term-additions-form.php:
|
3245 |
msgid "The canonical link is shown on the archive page for this term."
|
3246 |
msgstr ""
|
3247 |
|
3248 |
-
#: includes/admin/templates/term-additions-form.php:
|
3249 |
msgid "Index this %s"
|
3250 |
msgstr ""
|
3251 |
|
3252 |
-
#: includes/admin/templates/term-additions-form.php:
|
3253 |
msgid "Noindex this %s"
|
3254 |
msgstr ""
|
3255 |
|
3256 |
-
#: includes/admin/templates/term-additions-form.php:
|
3257 |
msgid "Follow this %s"
|
3258 |
msgstr ""
|
3259 |
|
3260 |
-
#: includes/admin/templates/term-additions-form.php:
|
3261 |
msgid "Nofollow this %s"
|
3262 |
msgstr ""
|
3263 |
|
@@ -3271,11 +3314,11 @@ msgid ""
|
|
3271 |
"the term page is shared."
|
3272 |
msgstr ""
|
3273 |
|
3274 |
-
#: includes/admin/templates/term-additions-form.php:
|
3275 |
msgid "Enable Twitter Cards for this term"
|
3276 |
msgstr ""
|
3277 |
|
3278 |
-
#: includes/admin/templates/term-additions-form.php:
|
3279 |
msgid ""
|
3280 |
"This image will be available to use as the featured image when the term "
|
3281 |
"page is shared."
|
@@ -3311,7 +3354,7 @@ msgstr ""
|
|
3311 |
|
3312 |
#: includes/admin/templates/upsell-modal.php:23
|
3313 |
msgid ""
|
3314 |
-
"A membership for
|
3315 |
"with unlimited advanced lossy compression that’ll give image heavy websites "
|
3316 |
"a speed boost."
|
3317 |
msgstr ""
|
@@ -3340,6 +3383,40 @@ msgstr ""
|
|
3340 |
msgid "You"
|
3341 |
msgstr ""
|
3342 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3343 |
#: includes/core/checks/class-wds-check-content-length.php:16
|
3344 |
msgid "There is no content"
|
3345 |
msgstr ""
|
@@ -3676,7 +3753,7 @@ msgid ""
|
|
3676 |
msgstr ""
|
3677 |
|
3678 |
#: includes/core/checks/class-wds-check-metadesc-length.php:21
|
3679 |
-
msgid "Description
|
3680 |
msgstr ""
|
3681 |
|
3682 |
#: includes/core/checks/class-wds-check-metadesc-length.php:25
|
@@ -3846,7 +3923,7 @@ msgid ""
|
|
3846 |
msgstr ""
|
3847 |
|
3848 |
#: includes/core/checks/class-wds-check-title-length.php:15
|
3849 |
-
msgid "Title
|
3850 |
msgstr ""
|
3851 |
|
3852 |
#: includes/core/checks/class-wds-check-title-length.php:19
|
@@ -3906,23 +3983,23 @@ msgstr ""
|
|
3906 |
msgid "We encountered an error fetching your content"
|
3907 |
msgstr ""
|
3908 |
|
3909 |
-
#: includes/core/class-wds-controller-analysis.php:
|
3910 |
msgid "N/A"
|
3911 |
msgstr ""
|
3912 |
|
3913 |
-
#: includes/core/class-wds-controller-analysis.php:
|
3914 |
msgid "No Focus Keyword"
|
3915 |
msgstr ""
|
3916 |
|
3917 |
-
#: includes/core/class-wds-controller-analysis.php:
|
3918 |
msgid "Needs Improvement"
|
3919 |
msgstr ""
|
3920 |
|
3921 |
-
#: includes/core/class-wds-controller-analysis.php:
|
3922 |
msgid "SEO:"
|
3923 |
msgstr ""
|
3924 |
|
3925 |
-
#: includes/core/class-wds-controller-analysis.php:
|
3926 |
msgid "Readability:"
|
3927 |
msgstr ""
|
3928 |
|
@@ -3980,15 +4057,15 @@ msgid ""
|
|
3980 |
"support if you need further assistance."
|
3981 |
msgstr ""
|
3982 |
|
3983 |
-
#: includes/core/class-wds-controller-io.php:
|
3984 |
msgid "You don't have permission to perform this operation."
|
3985 |
msgstr ""
|
3986 |
|
3987 |
-
#: includes/core/class-wds-controller-io.php:
|
3988 |
msgid "We couldn't find any compatible data to import."
|
3989 |
msgstr ""
|
3990 |
|
3991 |
-
#: includes/core/class-wds-controller-io.php:
|
3992 |
msgid "Invalid parameters. Try refreshing the page and attempting again."
|
3993 |
msgstr ""
|
3994 |
|
@@ -3996,6 +4073,16 @@ msgstr ""
|
|
3996 |
msgid "All done, please hold on..."
|
3997 |
msgstr ""
|
3998 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3999 |
#: includes/core/class-wds-controller-sitemap.php:106
|
4000 |
msgid "The missing items have been added to your sitemap as extra URLs."
|
4001 |
msgstr ""
|
@@ -4091,6 +4178,10 @@ msgstr ""
|
|
4091 |
msgid "Anonymous"
|
4092 |
msgstr ""
|
4093 |
|
|
|
|
|
|
|
|
|
4094 |
#: includes/core/class-wds-settings.php:284
|
4095 |
msgid "Title & Meta Optimization"
|
4096 |
msgstr ""
|
@@ -4131,28 +4222,28 @@ msgstr ""
|
|
4131 |
msgid "Sitemaps - SmartCrawl"
|
4132 |
msgstr ""
|
4133 |
|
4134 |
-
#: includes/tools/sitemaps-dashboard-widget.php:
|
4135 |
msgid "It was last updated on %1$s, at %2$s."
|
4136 |
msgstr ""
|
4137 |
|
4138 |
-
#: includes/tools/sitemaps-dashboard-widget.php:
|
4139 |
msgid "Your sitemap hasn't been updated recently."
|
4140 |
msgstr ""
|
4141 |
|
4142 |
-
#: includes/tools/sitemaps-dashboard-widget.php:
|
4143 |
-
msgid "
|
4144 |
msgstr ""
|
4145 |
|
4146 |
-
#: includes/tools/sitemaps-dashboard-widget.php:
|
4147 |
-
msgid "
|
4148 |
msgstr ""
|
4149 |
|
4150 |
-
#: includes/tools/sitemaps-dashboard-widget.php:
|
4151 |
-
msgid "
|
4152 |
msgstr ""
|
4153 |
|
4154 |
-
#: includes/tools/sitemaps-dashboard-widget.php:
|
4155 |
-
msgid "Done
|
4156 |
msgstr ""
|
4157 |
|
4158 |
#. Plugin URI of the plugin/theme
|
@@ -4169,4 +4260,23 @@ msgstr ""
|
|
4169 |
|
4170 |
#. Author URI of the plugin/theme
|
4171 |
msgid "http://premium.wpmudev.org"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4172 |
msgstr ""
|
2 |
# This file is distributed under the same license as the SmartCrawl package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: SmartCrawl 2.2.4\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wpmu-dev-seo\n"
|
7 |
+
"POT-Creation-Date: 2018-12-03 18:05:21+00:00\n"
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=utf-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
13 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
14 |
"X-Generator: grunt-wp-i18n1.0.2\n"
|
15 |
|
16 |
+
#: includes/admin/admin.php:134 includes/admin/settings/settings.php:248
|
17 |
#: includes/admin/settings/settings.php:319
|
18 |
#: includes/admin/templates/advanced-tools/advanced-tools-settings.php:49
|
19 |
+
#: includes/admin/templates/onpage/onpage-settings.php:244
|
20 |
msgid "Settings"
|
21 |
msgstr ""
|
22 |
|
23 |
+
#: includes/admin/admin.php:169
|
24 |
msgid "Error: options page not found."
|
25 |
msgstr ""
|
26 |
|
28 |
msgid "SmartCrawl"
|
29 |
msgstr ""
|
30 |
|
31 |
+
#: includes/admin/admin.php:321 includes/admin/settings/dashboard.php:32
|
32 |
#: includes/admin/templates/dashboard/dashboard.php:18
|
33 |
msgid "Dashboard"
|
34 |
msgstr ""
|
35 |
|
36 |
+
#: includes/admin/admin.php:383
|
37 |
msgid ""
|
38 |
"This site discourages search engines from indexing the pages, which will "
|
39 |
"affect your SEO efforts."
|
40 |
msgstr ""
|
41 |
|
42 |
+
#: includes/admin/admin.php:384
|
43 |
msgid "You can fix this here"
|
44 |
msgstr ""
|
45 |
|
57 |
"shorter"
|
58 |
msgstr ""
|
59 |
|
60 |
+
#: includes/admin/metabox.php:137
|
61 |
+
#: includes/admin/templates/metabox/analysis-readability.php:67
|
62 |
+
#: includes/admin/templates/metabox/analysis-seo-analysis.php:24
|
63 |
msgid "Analyzing content, please wait a few moments"
|
64 |
msgstr ""
|
65 |
|
66 |
+
#: includes/admin/metabox.php:170
|
67 |
msgid "NO ODP (Block Open Directory Project description of the page)"
|
68 |
msgstr ""
|
69 |
|
70 |
+
#: includes/admin/metabox.php:171
|
71 |
msgid "NO YDIR (Don't display the Yahoo! Directory titles and abstracts)"
|
72 |
msgstr ""
|
73 |
|
74 |
+
#: includes/admin/metabox.php:172 includes/admin/metabox.php:457
|
75 |
msgid "No Archive"
|
76 |
msgstr ""
|
77 |
|
78 |
+
#: includes/admin/metabox.php:173 includes/admin/metabox.php:458
|
79 |
msgid "No Snippet"
|
80 |
msgstr ""
|
81 |
|
82 |
+
#: includes/admin/metabox.php:176
|
83 |
msgid "Automatic prioritization"
|
84 |
msgstr ""
|
85 |
|
86 |
+
#: includes/admin/metabox.php:177
|
87 |
msgid "1 - Highest priority"
|
88 |
msgstr ""
|
89 |
|
90 |
+
#: includes/admin/metabox.php:179
|
91 |
msgid "High priority (root pages default)"
|
92 |
msgstr ""
|
93 |
|
94 |
+
#: includes/admin/metabox.php:181
|
95 |
msgid "Secondary priority (subpages default)"
|
96 |
msgstr ""
|
97 |
|
98 |
+
#: includes/admin/metabox.php:182
|
99 |
msgid "Medium priority"
|
100 |
msgstr ""
|
101 |
|
102 |
+
#: includes/admin/metabox.php:186
|
103 |
msgid "Lowest priority"
|
104 |
msgstr ""
|
105 |
|
106 |
+
#: includes/admin/metabox.php:413
|
107 |
#: includes/admin/templates/quick-edit-title.php:5
|
108 |
msgid "Title Tag"
|
109 |
msgstr ""
|
110 |
|
111 |
+
#: includes/admin/metabox.php:415
|
112 |
msgid "Robots Meta"
|
113 |
msgstr ""
|
114 |
|
115 |
+
#: includes/admin/metabox.php:436
|
116 |
msgid "Redirects to %s"
|
117 |
msgstr ""
|
118 |
|
119 |
+
#: includes/admin/metabox.php:455
|
120 |
msgid "No ODP"
|
121 |
msgstr ""
|
122 |
|
123 |
+
#: includes/admin/metabox.php:456
|
124 |
msgid "No YDIR"
|
125 |
msgstr ""
|
126 |
|
234 |
msgid "Your description seems to be a bit on the long side, consider trimming it"
|
235 |
msgstr ""
|
236 |
|
237 |
+
#: includes/admin/settings/onpage.php:526
|
238 |
#: includes/admin/templates/sitemap/sitemap-crawl-issues-group.php:41
|
239 |
msgid "No"
|
240 |
msgstr ""
|
241 |
|
242 |
+
#: includes/admin/settings/onpage.php:527
|
243 |
#: includes/admin/settings/sitemap.php:224
|
244 |
#: includes/admin/settings/sitemap.php:351
|
245 |
msgid "Yes"
|
246 |
msgstr ""
|
247 |
|
248 |
+
#: includes/admin/settings/onpage.php:531
|
249 |
#: includes/admin/settings/sitemap.php:347
|
250 |
msgid "Google"
|
251 |
msgstr ""
|
252 |
|
253 |
+
#: includes/admin/settings/onpage.php:532
|
254 |
#: includes/admin/settings/sitemap.php:348
|
255 |
msgid "Bing"
|
256 |
msgstr ""
|
257 |
|
258 |
+
#: includes/admin/settings/onpage.php:552
|
259 |
#: includes/admin/templates/onpage/onpage-section-settings.php:5
|
260 |
msgid "Separator"
|
261 |
msgstr ""
|
262 |
|
263 |
+
#: includes/admin/settings/onpage.php:553
|
264 |
msgid "Date of the post/page"
|
265 |
msgstr ""
|
266 |
|
267 |
+
#: includes/admin/settings/onpage.php:554
|
268 |
msgid "Title of the post/page"
|
269 |
msgstr ""
|
270 |
|
271 |
+
#: includes/admin/settings/onpage.php:555
|
272 |
msgid "Site's name"
|
273 |
msgstr ""
|
274 |
|
275 |
+
#: includes/admin/settings/onpage.php:556
|
276 |
msgid "Site's tagline / description"
|
277 |
msgstr ""
|
278 |
|
279 |
+
#: includes/admin/settings/onpage.php:557
|
280 |
msgid "Post/page excerpt (or auto-generated if it does not exist)"
|
281 |
msgstr ""
|
282 |
|
283 |
+
#: includes/admin/settings/onpage.php:558
|
284 |
msgid "Post/page excerpt (without auto-generation)"
|
285 |
msgstr ""
|
286 |
|
287 |
+
#: includes/admin/settings/onpage.php:559
|
288 |
msgid "Current tag/tags"
|
289 |
msgstr ""
|
290 |
|
291 |
+
#: includes/admin/settings/onpage.php:560
|
292 |
msgid "Post categories (comma separated)"
|
293 |
msgstr ""
|
294 |
|
295 |
+
#: includes/admin/settings/onpage.php:561
|
296 |
msgid "Category description"
|
297 |
msgstr ""
|
298 |
|
299 |
+
#: includes/admin/settings/onpage.php:562
|
300 |
msgid "Tag description"
|
301 |
msgstr ""
|
302 |
|
303 |
+
#: includes/admin/settings/onpage.php:563
|
304 |
msgid "Term description"
|
305 |
msgstr ""
|
306 |
|
307 |
+
#: includes/admin/settings/onpage.php:564
|
308 |
msgid "Term name"
|
309 |
msgstr ""
|
310 |
|
311 |
+
#: includes/admin/settings/onpage.php:565
|
312 |
msgid "Post/page modified time"
|
313 |
msgstr ""
|
314 |
|
315 |
+
#: includes/admin/settings/onpage.php:566
|
316 |
msgid "Post/page ID"
|
317 |
msgstr ""
|
318 |
|
319 |
+
#: includes/admin/settings/onpage.php:567
|
320 |
msgid "Post/page author's 'nicename'"
|
321 |
msgstr ""
|
322 |
|
323 |
+
#: includes/admin/settings/onpage.php:568
|
324 |
msgid "Post/page author's userid"
|
325 |
msgstr ""
|
326 |
|
327 |
+
#: includes/admin/settings/onpage.php:569
|
328 |
msgid "Current search phrase"
|
329 |
msgstr ""
|
330 |
|
331 |
+
#: includes/admin/settings/onpage.php:570
|
332 |
msgid "Current time"
|
333 |
msgstr ""
|
334 |
|
335 |
+
#: includes/admin/settings/onpage.php:571
|
336 |
msgid "Current date"
|
337 |
msgstr ""
|
338 |
|
339 |
+
#: includes/admin/settings/onpage.php:572
|
340 |
msgid "Current month"
|
341 |
msgstr ""
|
342 |
|
343 |
+
#: includes/admin/settings/onpage.php:573
|
344 |
msgid "Current year"
|
345 |
msgstr ""
|
346 |
|
347 |
+
#: includes/admin/settings/onpage.php:574
|
348 |
msgid "Current page number (i.e. page 2 of 4)"
|
349 |
msgstr ""
|
350 |
|
351 |
+
#: includes/admin/settings/onpage.php:575
|
352 |
msgid "Current page total"
|
353 |
msgstr ""
|
354 |
|
355 |
+
#: includes/admin/settings/onpage.php:576
|
356 |
msgid "Current page number"
|
357 |
msgstr ""
|
358 |
|
359 |
+
#: includes/admin/settings/onpage.php:577
|
360 |
msgid "Attachment caption"
|
361 |
msgstr ""
|
362 |
|
363 |
+
#: includes/admin/settings/onpage.php:578
|
364 |
+
#: includes/admin/settings/onpage.php:580
|
365 |
msgid "Current page number, spelled out as numeral in English"
|
366 |
msgstr ""
|
367 |
|
368 |
+
#: includes/admin/settings/onpage.php:579
|
369 |
msgid "Current page total, spelled out as numeral in English"
|
370 |
msgstr ""
|
371 |
|
372 |
+
#: includes/admin/settings/onpage.php:581
|
373 |
msgid "Post type label plural"
|
374 |
msgstr ""
|
375 |
|
376 |
+
#: includes/admin/settings/onpage.php:582
|
377 |
msgid "Post type label singular"
|
378 |
msgstr ""
|
379 |
|
380 |
+
#: includes/admin/settings/onpage.php:586
|
381 |
msgid "BuddyPress group name"
|
382 |
msgstr ""
|
383 |
|
384 |
+
#: includes/admin/settings/onpage.php:587
|
385 |
msgid "BuddyPress group description"
|
386 |
msgstr ""
|
387 |
|
388 |
+
#: includes/admin/settings/onpage.php:588
|
389 |
msgid "BuddyPress username"
|
390 |
msgstr ""
|
391 |
|
392 |
+
#: includes/admin/settings/onpage.php:589
|
393 |
msgid "BuddyPress user's full name"
|
394 |
msgstr ""
|
395 |
|
452 |
msgid "Home page"
|
453 |
msgstr ""
|
454 |
|
455 |
+
#: includes/admin/settings/settings.php:468
|
456 |
#: includes/admin/templates/settings/settings-section-import-export.php:44
|
457 |
msgid "Yoast SEO"
|
458 |
msgstr ""
|
459 |
|
460 |
+
#: includes/admin/settings/settings.php:474 includes/admin/settings.php:440
|
461 |
#: includes/admin/templates/settings/settings-section-import-export.php:52
|
462 |
msgid "All In One SEO"
|
463 |
msgstr ""
|
464 |
|
465 |
+
#: includes/admin/settings/settings.php:492
|
466 |
msgid "auto-import"
|
467 |
msgstr ""
|
468 |
|
469 |
+
#: includes/admin/settings/settings.php:495
|
470 |
msgid ""
|
471 |
+
"We've detected you have %1$s settings. Do you want to %2$s your "
|
472 |
"configuration into SmartCrawl?"
|
473 |
msgstr ""
|
474 |
|
475 |
+
#: includes/admin/settings/settings.php:545
|
476 |
msgid ""
|
477 |
"We have spent countless hours developing this free plugin for you, and we "
|
478 |
"would really appreciate it if you dropped us a quick rating."
|
479 |
msgstr ""
|
480 |
|
481 |
+
#: includes/admin/settings/settings.php:547
|
482 |
msgid "Rate SmartCrawl"
|
483 |
msgstr ""
|
484 |
|
572 |
|
573 |
#: includes/admin/settings.php:296 includes/admin/settings.php:360
|
574 |
#: includes/admin/templates/advanced-tools/underscore-bulk-update-form.php:31
|
575 |
+
#: includes/admin/templates/settings/underscore-import-error.php:10
|
576 |
#: includes/admin/templates/sitemap/sitemap-occurrences-overlay.php:39
|
577 |
#: includes/admin/templates/sitemap/sitemap-redirect-overlay.php:59
|
578 |
msgid "Cancel"
|
644 |
msgid "Please select some items to edit them."
|
645 |
msgstr ""
|
646 |
|
647 |
+
#: includes/admin/settings.php:439
|
648 |
+
msgid "Yoast"
|
649 |
msgstr ""
|
650 |
|
651 |
+
#: includes/admin/settings.php:587
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
652 |
msgid "Settings updated"
|
653 |
msgstr ""
|
654 |
|
655 |
+
#: includes/admin/settings.php:591
|
656 |
msgid " & W3 Total Cache Page Cache flushed"
|
657 |
msgstr ""
|
658 |
|
659 |
+
#: includes/admin/settings.php:594
|
660 |
msgid " & WP Super Cache flushed"
|
661 |
msgstr ""
|
662 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
663 |
#: includes/admin/templates/advanced-tools/advanced-section-automatic-linking-settings.php:14
|
664 |
msgid "Min lengths"
|
665 |
msgstr ""
|
778 |
|
779 |
#: includes/admin/templates/advanced-tools/advanced-section-moz.php:21
|
780 |
#: includes/admin/templates/onpage/onpage-og-disabled.php:10
|
781 |
+
#: includes/admin/templates/onpage/onpage-section-homepage.php:73
|
782 |
#: includes/admin/templates/onpage/onpage-twitter-disabled.php:10
|
783 |
#: includes/admin/templates/progress-notice.php:27
|
784 |
#: includes/core/checks/class-wds-check-keywords-used.php:99
|
883 |
msgid "View Documentation"
|
884 |
msgstr ""
|
885 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
886 |
#: includes/admin/templates/advanced-tools/advanced-tools-settings.php:33
|
887 |
msgid "Activate Keyword Linking"
|
888 |
msgstr ""
|
968 |
|
969 |
#: includes/admin/templates/advanced-tools/advanced-tools-settings.php:99
|
970 |
#: includes/admin/templates/dashboard/dashboard-widget-advanced-tools.php:64
|
971 |
+
#: includes/admin/templates/metabox/metabox-tab-advanced.php:155
|
972 |
#: includes/admin/templates/upsell-modal.php:18
|
973 |
msgid "Automatic Linking"
|
974 |
msgstr ""
|
1000 |
msgstr ""
|
1001 |
|
1002 |
#: includes/admin/templates/checkup/checkup-checkup-results.php:53
|
1003 |
+
#: includes/admin/templates/metabox/analysis-seo-analysis.php:72
|
1004 |
msgid "Recommendation"
|
1005 |
msgstr ""
|
1006 |
|
1007 |
#: includes/admin/templates/checkup/checkup-checkup-results.php:62
|
1008 |
+
#: includes/admin/templates/metabox/analysis-seo-analysis.php:80
|
1009 |
msgid "More Info"
|
1010 |
msgstr ""
|
1011 |
|
1012 |
#: includes/admin/templates/checkup/checkup-checkup-results.php:77
|
1013 |
msgid ""
|
1014 |
"Grab the Pro version of SmartCrawl to unlock unlimited SEO Checkups plus "
|
1015 |
+
"automated scheduled reports to always stay on top of any issues. These "
|
1016 |
+
"features are included in a WPMU DEV membership along with 100+ plugins, "
|
1017 |
+
"24/7 support and lots of handy site management tools."
|
1018 |
msgstr ""
|
1019 |
|
1020 |
#: includes/admin/templates/checkup/checkup-checkup-results.php:78
|
1186 |
#: includes/admin/templates/dashboard/dashboard-content-analysis-seo-overview.php:32
|
1187 |
#: includes/admin/templates/dashboard/dashboard-content-analysis-seo-overview.php:57
|
1188 |
#: includes/admin/templates/post-list/post-seo-analysis-good.php:2
|
1189 |
+
#: includes/core/class-wds-controller-analysis.php:638
|
1190 |
msgid "Good"
|
1191 |
msgstr ""
|
1192 |
|
1352 |
msgstr ""
|
1353 |
|
1354 |
#: includes/admin/templates/dashboard/dashboard-widget-content-analysis.php:40
|
1355 |
+
#: includes/admin/templates/metabox/metabox-seo-analysis-container.php:13
|
1356 |
msgid "SEO Analysis"
|
1357 |
msgstr ""
|
1358 |
|
1380 |
msgstr ""
|
1381 |
|
1382 |
#: includes/admin/templates/dashboard/dashboard-widget-onpage.php:23
|
1383 |
+
#: includes/admin/templates/metabox/metabox-tab-social.php:58
|
1384 |
msgid "Titles & Meta"
|
1385 |
msgstr ""
|
1386 |
|
1479 |
|
1480 |
#: includes/admin/templates/dashboard/dashboard-widget-social.php:38
|
1481 |
#: includes/admin/templates/dashboard/onboarding.php:57
|
1482 |
+
#: includes/admin/templates/metabox/metabox-tab-social.php:67
|
1483 |
#: includes/admin/templates/social/social-settings.php:40
|
1484 |
+
#: includes/admin/templates/term-additions-form.php:34
|
1485 |
msgid "OpenGraph"
|
1486 |
msgstr ""
|
1487 |
|
1533 |
#: includes/admin/templates/dashboard/onboarding.php:5
|
1534 |
msgid ""
|
1535 |
"Welcome to SmartCrawl, the hottest SEO plugin for WordPress! Let's quickly "
|
1536 |
+
"set up the basics for you, then you can fine tune each setting as you go - "
|
1537 |
"our recommendations are on by default."
|
1538 |
msgstr ""
|
1539 |
|
1659 |
msgstr ""
|
1660 |
|
1661 |
#: includes/admin/templates/metabox/analysis-readability.php:60
|
1662 |
+
#: includes/admin/templates/metabox/metabox-seo-analysis-container.php:18
|
1663 |
msgid "Refresh"
|
1664 |
msgstr ""
|
1665 |
|
1666 |
+
#: includes/admin/templates/metabox/analysis-readability.php:76
|
1667 |
msgid "Flesch-Kincaid Test"
|
1668 |
msgstr ""
|
1669 |
|
1670 |
+
#: includes/admin/templates/metabox/analysis-readability.php:84
|
1671 |
+
#: includes/admin/templates/metabox/analysis-seo-analysis.php:64
|
1672 |
#: includes/admin/templates/sitemap/sitemap-crawl-issue-ignored.php:24
|
1673 |
msgid "Restore"
|
1674 |
msgstr ""
|
1675 |
|
1676 |
+
#: includes/admin/templates/metabox/analysis-readability.php:94
|
1677 |
#: includes/admin/templates/sitemap/sitemap-crawl-issues-group.php:45
|
1678 |
msgid "Overview"
|
1679 |
msgstr ""
|
1680 |
|
1681 |
+
#: includes/admin/templates/metabox/analysis-readability.php:95
|
1682 |
msgid ""
|
1683 |
"The Flesch-Kincaid readability tests are readability tests designed to "
|
1684 |
"indicate how difficult a passage in English is to understand. Here are the "
|
1685 |
"benchmarks."
|
1686 |
msgstr ""
|
1687 |
|
1688 |
+
#: includes/admin/templates/metabox/analysis-readability.php:99
|
1689 |
msgid "Score"
|
1690 |
msgstr ""
|
1691 |
|
1692 |
+
#: includes/admin/templates/metabox/analysis-readability.php:100
|
1693 |
+
#: includes/admin/templates/metabox/metabox-meta-edit-form.php:37
|
1694 |
#: includes/admin/templates/metabox/metabox-social-meta-tags.php:51
|
1695 |
#: includes/admin/templates/onpage/onpage-social-meta-tags.php:64
|
1696 |
#: includes/admin/templates/term-additions-form.php:88
|
1697 |
+
#: includes/admin/templates/term-additions-form.php:184
|
1698 |
msgid "Description"
|
1699 |
msgstr ""
|
1700 |
|
1701 |
+
#: includes/admin/templates/metabox/analysis-readability.php:118
|
1702 |
msgid "How to fix"
|
1703 |
msgstr ""
|
1704 |
|
1705 |
+
#: includes/admin/templates/metabox/analysis-readability.php:119
|
1706 |
msgid ""
|
1707 |
"Try to use shorter sentences, with less difficult words to improve "
|
1708 |
"readability."
|
1709 |
msgstr ""
|
1710 |
|
1711 |
+
#: includes/admin/templates/metabox/analysis-readability.php:125
|
1712 |
+
#: includes/admin/templates/metabox/analysis-seo-analysis.php:92
|
1713 |
#: includes/admin/templates/sitemap/sitemap-crawl-issue-generic.php:39
|
1714 |
#: includes/admin/templates/sitemap/sitemap-crawl-issue-sitemap.php:29
|
1715 |
msgid "Ignore"
|
1716 |
msgstr ""
|
1717 |
|
1718 |
#: includes/admin/templates/metabox/analysis-seo-analysis.php:14
|
1719 |
+
#: includes/core/class-wds-controller-analysis.php:351
|
1720 |
msgid "You need to add focus keywords to see recommendations for this article."
|
1721 |
msgstr ""
|
1722 |
|
1723 |
+
#: includes/admin/templates/metabox/analysis-seo-analysis.php:32
|
1724 |
msgid ""
|
1725 |
"You have %d SEO recommendations. We recommend you satisfy as many "
|
1726 |
"improvements as possible to ensure your content gets found."
|
1727 |
msgstr ""
|
1728 |
|
1729 |
+
#: includes/admin/templates/metabox/analysis-seo-analysis.php:34
|
1730 |
msgid "You have optimized your SEO to the max. Bravo!"
|
1731 |
msgstr ""
|
1732 |
|
1733 |
#: includes/admin/templates/metabox/analysis.php:2
|
1734 |
+
#: includes/admin/templates/metabox/metabox-seo-analysis-container.php:48
|
1735 |
#: includes/admin/templates/metabox/metabox-tab-readability.php:6
|
1736 |
msgid "Reload"
|
1737 |
msgstr ""
|
1738 |
|
1739 |
+
#: includes/admin/templates/metabox/metabox-dummy-preview.php:2
|
1740 |
+
#: includes/admin/templates/metabox/metabox-preview.php:22
|
1741 |
+
msgid "Google Preview"
|
1742 |
+
msgstr ""
|
1743 |
+
|
1744 |
#: includes/admin/templates/metabox/metabox-main.php:25
|
1745 |
+
#: includes/core/class-wds-controller-analysis.php:291
|
1746 |
msgid "SEO"
|
1747 |
msgstr ""
|
1748 |
|
1749 |
#: includes/admin/templates/metabox/metabox-main.php:26
|
1750 |
+
#: includes/core/class-wds-controller-analysis.php:294
|
1751 |
msgid "Readability"
|
1752 |
msgstr ""
|
1753 |
|
1754 |
#: includes/admin/templates/metabox/metabox-main.php:30
|
1755 |
+
#: includes/admin/templates/settings/underscore-import-options.php:37
|
1756 |
#: includes/admin/templates/sitemap/sitemap-settings.php:135
|
1757 |
msgid "Advanced"
|
1758 |
msgstr ""
|
1759 |
|
1760 |
+
#: includes/admin/templates/metabox/metabox-meta-edit-form.php:11
|
1761 |
msgid "Edit Meta"
|
1762 |
msgstr ""
|
1763 |
|
1764 |
+
#: includes/admin/templates/metabox/metabox-meta-edit-form.php:21
|
1765 |
+
#: includes/admin/templates/term-additions-form.php:10
|
1766 |
msgid "SEO Title"
|
1767 |
msgstr ""
|
1768 |
|
1769 |
+
#: includes/admin/templates/metabox/metabox-meta-edit-form.php:22
|
1770 |
msgid "- Include your focus keywords. 50-%d characters recommended."
|
1771 |
msgstr ""
|
1772 |
|
1773 |
+
#: includes/admin/templates/metabox/metabox-meta-edit-form.php:38
|
1774 |
msgid "- Recommended minimum of 135 characters, maximum %d."
|
1775 |
msgstr ""
|
1776 |
|
1777 |
+
#: includes/admin/templates/metabox/metabox-meta-edit-form.php:52
|
1778 |
msgid "Keywords"
|
1779 |
msgstr ""
|
1780 |
|
1781 |
+
#: includes/admin/templates/metabox/metabox-meta-edit-form.php:53
|
1782 |
+
#: includes/admin/templates/metabox/metabox-meta-edit-form.php:68
|
1783 |
msgid "- Try to avoid stop words like ‘and’ and ‘the’ which search engines ignore."
|
1784 |
msgstr ""
|
1785 |
|
1786 |
+
#: includes/admin/templates/metabox/metabox-meta-edit-form.php:67
|
1787 |
msgid "News Keywords"
|
1788 |
msgstr ""
|
1789 |
|
1790 |
+
#: includes/admin/templates/metabox/metabox-meta-edit-form.php:84
|
1791 |
msgid "Tags As Keywords"
|
1792 |
msgstr ""
|
1793 |
|
1794 |
+
#: includes/admin/templates/metabox/metabox-meta-edit-form.php:85
|
1795 |
msgid ""
|
1796 |
"If you enable using tags, post tags will be merged in with any other "
|
1797 |
"keywords you enter in the text box."
|
1798 |
msgstr ""
|
1799 |
|
1800 |
+
#: includes/admin/templates/metabox/metabox-seo-analysis-container.php:25
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1801 |
msgid ""
|
1802 |
"This tool helps you optimize your content to give it the best chance of "
|
1803 |
"being found in search engines when people are looking for it. Start by "
|
1806 |
"highly optimized."
|
1807 |
msgstr ""
|
1808 |
|
1809 |
+
#: includes/admin/templates/metabox/metabox-seo-analysis-container.php:33
|
1810 |
msgid "Focus keyword"
|
1811 |
msgstr ""
|
1812 |
|
1813 |
+
#: includes/admin/templates/metabox/metabox-seo-analysis-container.php:34
|
1814 |
msgid ""
|
1815 |
"- Choose a single word, phrase or part of a sentence that people will "
|
1816 |
"likely search for."
|
1817 |
msgstr ""
|
1818 |
|
1819 |
+
#: includes/admin/templates/metabox/metabox-seo-analysis-container.php:43
|
1820 |
msgid "E.g. broken iphone screen"
|
1821 |
msgstr ""
|
1822 |
|
1829 |
#: includes/admin/templates/onpage/onpage-settings.php:28
|
1830 |
#: includes/admin/templates/onpage/onpage-social-meta-tags.php:48
|
1831 |
#: includes/admin/templates/term-additions-form.php:74
|
1832 |
+
#: includes/admin/templates/term-additions-form.php:170
|
1833 |
msgid "Title"
|
1834 |
msgstr ""
|
1835 |
|
1836 |
#: includes/admin/templates/metabox/metabox-social-meta-tags.php:64
|
1837 |
+
#: includes/admin/templates/term-additions-form.php:196
|
1838 |
msgid "Featured Image"
|
1839 |
msgstr ""
|
1840 |
|
1846 |
#: includes/admin/templates/metabox/metabox-social-meta-tags.php:72
|
1847 |
#: includes/admin/templates/onpage/onpage-social-meta-tags.php:94
|
1848 |
#: includes/admin/templates/term-additions-form.php:105
|
1849 |
+
#: includes/admin/templates/term-additions-form.php:202
|
1850 |
msgid "Add image"
|
1851 |
msgstr ""
|
1852 |
|
1860 |
"the post is shared."
|
1861 |
msgstr ""
|
1862 |
|
1863 |
+
#: includes/admin/templates/metabox/metabox-tab-advanced.php:24
|
1864 |
#: includes/admin/templates/onpage/onpage-meta-robots.php:11
|
1865 |
msgid "Indexing"
|
1866 |
msgstr ""
|
1867 |
|
1868 |
+
#: includes/admin/templates/metabox/metabox-tab-advanced.php:26
|
1869 |
msgid "Choose how search engines will index this particular page."
|
1870 |
msgstr ""
|
1871 |
|
1872 |
+
#: includes/admin/templates/metabox/metabox-tab-advanced.php:36
|
1873 |
msgid "Index - Override Post Type Setting"
|
1874 |
msgstr ""
|
1875 |
|
1876 |
+
#: includes/admin/templates/metabox/metabox-tab-advanced.php:37
|
1877 |
+
#: includes/admin/templates/metabox/metabox-tab-advanced.php:46
|
1878 |
msgid ""
|
1879 |
"Instruct search engines whether or not you want this post to appear in "
|
1880 |
"search results."
|
1881 |
msgstr ""
|
1882 |
|
1883 |
+
#: includes/admin/templates/metabox/metabox-tab-advanced.php:45
|
1884 |
msgid "Index"
|
1885 |
msgstr ""
|
1886 |
|
1887 |
+
#: includes/admin/templates/metabox/metabox-tab-advanced.php:55
|
1888 |
msgid "Follow - Override Post Type Setting"
|
1889 |
msgstr ""
|
1890 |
|
1891 |
+
#: includes/admin/templates/metabox/metabox-tab-advanced.php:56
|
1892 |
+
#: includes/admin/templates/metabox/metabox-tab-advanced.php:65
|
1893 |
msgid ""
|
1894 |
"Tells search engines whether or not to follow the links on your page and "
|
1895 |
"crawl them too."
|
1896 |
msgstr ""
|
1897 |
|
1898 |
+
#: includes/admin/templates/metabox/metabox-tab-advanced.php:64
|
1899 |
msgid "Follow"
|
1900 |
msgstr ""
|
1901 |
|
1902 |
+
#: includes/admin/templates/metabox/metabox-tab-advanced.php:75
|
1903 |
msgid "Archive"
|
1904 |
msgstr ""
|
1905 |
|
1906 |
+
#: includes/admin/templates/metabox/metabox-tab-advanced.php:76
|
1907 |
msgid "Instructs search engines to store a cached version of this page."
|
1908 |
msgstr ""
|
1909 |
|
1910 |
+
#: includes/admin/templates/metabox/metabox-tab-advanced.php:85
|
1911 |
msgid "Snippet"
|
1912 |
msgstr ""
|
1913 |
|
1914 |
+
#: includes/admin/templates/metabox/metabox-tab-advanced.php:86
|
1915 |
msgid ""
|
1916 |
"Allows search engines to show a snippet of this page in the search results "
|
1917 |
"and prevents them from caching the page."
|
1918 |
msgstr ""
|
1919 |
|
1920 |
+
#: includes/admin/templates/metabox/metabox-tab-advanced.php:96
|
1921 |
+
#: includes/admin/templates/term-additions-form.php:12
|
1922 |
msgid "Canonical"
|
1923 |
msgstr ""
|
1924 |
|
1925 |
+
#: includes/admin/templates/metabox/metabox-tab-advanced.php:98
|
1926 |
msgid ""
|
1927 |
"If you have several similar versions of this page you can point search "
|
1928 |
"engines to the canonical or \"genuine\" version to avoid duplicate content "
|
1929 |
"issues."
|
1930 |
msgstr ""
|
1931 |
|
1932 |
+
#: includes/admin/templates/metabox/metabox-tab-advanced.php:106
|
1933 |
msgid "Enter the full canonical URL including http:// or https://"
|
1934 |
msgstr ""
|
1935 |
|
1936 |
+
#: includes/admin/templates/metabox/metabox-tab-advanced.php:114
|
1937 |
msgid "301 Redirect"
|
1938 |
msgstr ""
|
1939 |
|
1940 |
+
#: includes/admin/templates/metabox/metabox-tab-advanced.php:116
|
1941 |
msgid "Send visitors to this URL to another page."
|
1942 |
msgstr ""
|
1943 |
|
1944 |
+
#: includes/admin/templates/metabox/metabox-tab-advanced.php:123
|
1945 |
msgid "Enter the URL to send traffic to including http:// or https://"
|
1946 |
msgstr ""
|
1947 |
|
1948 |
+
#: includes/admin/templates/metabox/metabox-tab-advanced.php:132
|
1949 |
msgid "Sitemap Priority"
|
1950 |
msgstr ""
|
1951 |
|
1952 |
+
#: includes/admin/templates/metabox/metabox-tab-advanced.php:158
|
1953 |
msgid "You can prevent this particular post from being auto-linked"
|
1954 |
msgstr ""
|
1955 |
|
1956 |
+
#: includes/admin/templates/metabox/metabox-tab-advanced.php:167
|
1957 |
msgid "Enable automatic linking for this post"
|
1958 |
msgstr ""
|
1959 |
|
1980 |
msgid "= 70+"
|
1981 |
msgstr ""
|
1982 |
|
1983 |
+
#: includes/admin/templates/metabox/metabox-tab-social.php:54
|
1984 |
msgid ""
|
1985 |
"Customize this posts title, description and featured images for social "
|
1986 |
"shares. You can also configure the default settings for this post type in "
|
1987 |
"SmartCrawl's %s area."
|
1988 |
msgstr ""
|
1989 |
|
1990 |
+
#: includes/admin/templates/metabox/metabox-tab-social.php:68
|
1991 |
msgid "OpenGraph is used on many social networks such as Facebook."
|
1992 |
msgstr ""
|
1993 |
|
1994 |
+
#: includes/admin/templates/metabox/metabox-tab-social.php:85
|
1995 |
#: includes/admin/templates/term-additions-form.php:133
|
1996 |
msgid "Twitter"
|
1997 |
msgstr ""
|
1998 |
|
1999 |
+
#: includes/admin/templates/metabox/metabox-tab-social.php:86
|
2000 |
msgid "These details will be used in Twitter cards."
|
2001 |
msgstr ""
|
2002 |
|
2067 |
msgid "Date Archives Meta Description"
|
2068 |
msgstr ""
|
2069 |
|
2070 |
+
#: includes/admin/templates/onpage/onpage-section-homepage.php:16
|
2071 |
msgid "Page Title"
|
2072 |
msgstr ""
|
2073 |
|
2074 |
+
#: includes/admin/templates/onpage/onpage-section-homepage.php:29
|
2075 |
msgid "Page Description"
|
2076 |
msgstr ""
|
2077 |
|
2078 |
+
#: includes/admin/templates/onpage/onpage-section-homepage.php:43
|
2079 |
msgid "Page Keywords"
|
2080 |
msgstr ""
|
2081 |
|
2082 |
+
#: includes/admin/templates/onpage/onpage-section-homepage.php:50
|
2083 |
msgid "Comma-separated keywords, e.g."
|
2084 |
msgstr ""
|
2085 |
|
2086 |
+
#: includes/admin/templates/onpage/onpage-section-homepage.php:50
|
2087 |
msgid "word1, word2"
|
2088 |
msgstr ""
|
2089 |
|
2090 |
+
#: includes/admin/templates/onpage/onpage-section-homepage.php:81
|
2091 |
msgid ""
|
2092 |
"Your homepage is set to a static page. Configure your homepage SEO via the "
|
2093 |
"page itself %s."
|
2094 |
msgstr ""
|
2095 |
|
2096 |
+
#: includes/admin/templates/onpage/onpage-section-homepage.php:85
|
2097 |
msgid ""
|
2098 |
"Your homepage is set to a static page. Configure your homepage SEO via the "
|
2099 |
"page itself."
|
2100 |
msgstr ""
|
2101 |
|
2102 |
#: includes/admin/templates/onpage/onpage-section-post-type-archive.php:20
|
2103 |
+
#: includes/admin/templates/onpage/onpage-settings.php:184
|
2104 |
msgid " Archive Title"
|
2105 |
msgstr ""
|
2106 |
|
2157 |
msgid "Customize your homepage title, description and meta."
|
2158 |
msgstr ""
|
2159 |
|
2160 |
+
#: includes/admin/templates/onpage/onpage-settings.php:87
|
2161 |
msgid "Customize your %s title, description and meta."
|
2162 |
msgstr ""
|
2163 |
|
2164 |
+
#: includes/admin/templates/onpage/onpage-settings.php:100
|
2165 |
msgid "Post Types"
|
2166 |
msgstr ""
|
2167 |
|
2168 |
+
#: includes/admin/templates/onpage/onpage-settings.php:118
|
2169 |
msgid "Customize the title, description and meta of %s."
|
2170 |
msgstr ""
|
2171 |
|
2172 |
+
#: includes/admin/templates/onpage/onpage-settings.php:130
|
2173 |
msgid "Taxonomies"
|
2174 |
msgstr ""
|
2175 |
|
2176 |
+
#: includes/admin/templates/onpage/onpage-settings.php:138
|
2177 |
msgid "Author Archive"
|
2178 |
msgstr ""
|
2179 |
|
2180 |
+
#: includes/admin/templates/onpage/onpage-settings.php:139
|
2181 |
msgid ""
|
2182 |
"If you are the only author of your website content Google may see your "
|
2183 |
"author archives as duplicate content to your Blog Homepage. If this is the "
|
2184 |
"case we recommend disabling author archives."
|
2185 |
msgstr ""
|
2186 |
|
2187 |
+
#: includes/admin/templates/onpage/onpage-settings.php:149
|
2188 |
msgid "Date Archive"
|
2189 |
msgstr ""
|
2190 |
|
2191 |
+
#: includes/admin/templates/onpage/onpage-settings.php:150
|
2192 |
msgid ""
|
2193 |
"Google may see your date archives as duplicate content to your Blog "
|
2194 |
"Homepage. For this reason we recommend disabling date archives."
|
2195 |
msgstr ""
|
2196 |
|
2197 |
+
#: includes/admin/templates/onpage/onpage-settings.php:160
|
2198 |
msgid "Search Page"
|
2199 |
msgstr ""
|
2200 |
|
2201 |
+
#: includes/admin/templates/onpage/onpage-settings.php:161
|
2202 |
msgid "Customize your search page title, description and meta."
|
2203 |
msgstr ""
|
2204 |
|
2205 |
+
#: includes/admin/templates/onpage/onpage-settings.php:170
|
2206 |
msgid "404 Page"
|
2207 |
msgstr ""
|
2208 |
|
2209 |
+
#: includes/admin/templates/onpage/onpage-settings.php:171
|
2210 |
msgid "Customize your 404 page title, description and meta."
|
2211 |
msgstr ""
|
2212 |
|
2213 |
+
#: includes/admin/templates/onpage/onpage-settings.php:186
|
2214 |
msgid ""
|
2215 |
"Customize title, description and meta for the archive page of custom post "
|
2216 |
"type %s."
|
2217 |
msgstr ""
|
2218 |
|
2219 |
+
#: includes/admin/templates/onpage/onpage-settings.php:204
|
2220 |
msgid "Archives"
|
2221 |
msgstr ""
|
2222 |
|
2223 |
+
#: includes/admin/templates/onpage/onpage-settings.php:213
|
2224 |
#: includes/admin/templates/sitemap/sitemap-buddypress-settings.php:7
|
2225 |
msgid "BuddyPress Groups"
|
2226 |
msgstr ""
|
2227 |
|
2228 |
+
#: includes/admin/templates/onpage/onpage-settings.php:214
|
2229 |
msgid "Customize your BuddyPress group title, description and meta options."
|
2230 |
msgstr ""
|
2231 |
|
2232 |
+
#: includes/admin/templates/onpage/onpage-settings.php:223
|
2233 |
msgid "BuddyPress Profile"
|
2234 |
msgstr ""
|
2235 |
|
2236 |
+
#: includes/admin/templates/onpage/onpage-settings.php:224
|
2237 |
msgid "Customize your BuddyPress profile title, description and meta options."
|
2238 |
msgstr ""
|
2239 |
|
2240 |
+
#: includes/admin/templates/onpage/onpage-settings.php:234
|
2241 |
msgid "BuddyPress"
|
2242 |
msgstr ""
|
2243 |
|
2400 |
msgid "Homepage Authority"
|
2401 |
msgstr ""
|
2402 |
|
2403 |
+
#: includes/admin/templates/settings/import-status-modal.php:3
|
2404 |
+
#: includes/admin/templates/settings/settings-section-import-export.php:16
|
2405 |
+
#: includes/admin/templates/settings/settings-section-import-export.php:34
|
2406 |
+
#: includes/admin/templates/settings/settings-section-import-export.php:47
|
2407 |
+
#: includes/admin/templates/settings/settings-section-import-export.php:55
|
2408 |
+
msgid "Import"
|
2409 |
+
msgstr ""
|
2410 |
+
|
2411 |
#: includes/admin/templates/settings/settings-custom-meta-tag.php:5
|
2412 |
msgid "Paste your meta tag here"
|
2413 |
msgstr ""
|
2621 |
msgid "Import / Export"
|
2622 |
msgstr ""
|
2623 |
|
2624 |
+
#: includes/admin/templates/settings/underscore-import-error.php:1
|
2625 |
+
msgid ""
|
2626 |
+
"We have encountered an error while importing your data. You may retry the "
|
2627 |
+
"import or contact our support if the problem persists."
|
2628 |
+
msgstr ""
|
2629 |
+
|
2630 |
+
#: includes/admin/templates/settings/underscore-import-error.php:14
|
2631 |
+
msgid "Try Again"
|
2632 |
+
msgstr ""
|
2633 |
+
|
2634 |
+
#: includes/admin/templates/settings/underscore-import-options.php:2
|
2635 |
+
msgid "Choose what you'd like to import from %s."
|
2636 |
+
msgstr ""
|
2637 |
+
|
2638 |
+
#: includes/admin/templates/settings/underscore-import-options.php:8
|
2639 |
+
msgid "Plugin Options"
|
2640 |
+
msgstr ""
|
2641 |
+
|
2642 |
+
#: includes/admin/templates/settings/underscore-import-options.php:9
|
2643 |
+
msgid "Import %s settings that are relevant to SmartCrawl."
|
2644 |
+
msgstr ""
|
2645 |
+
|
2646 |
+
#: includes/admin/templates/settings/underscore-import-options.php:18
|
2647 |
+
msgid "Term Meta"
|
2648 |
+
msgstr ""
|
2649 |
+
|
2650 |
+
#: includes/admin/templates/settings/underscore-import-options.php:19
|
2651 |
+
msgid ""
|
2652 |
+
"Import your title & meta settings for categories, tags and custom "
|
2653 |
+
"taxonomies."
|
2654 |
+
msgstr ""
|
2655 |
+
|
2656 |
+
#: includes/admin/templates/settings/underscore-import-options.php:30
|
2657 |
+
msgid "Post Meta"
|
2658 |
+
msgstr ""
|
2659 |
+
|
2660 |
+
#: includes/admin/templates/settings/underscore-import-options.php:31
|
2661 |
+
msgid "Import your title & meta settings for posts and pages."
|
2662 |
+
msgstr ""
|
2663 |
+
|
2664 |
+
#: includes/admin/templates/settings/underscore-import-options.php:44
|
2665 |
+
msgid "Keep Existing Post Meta"
|
2666 |
+
msgstr ""
|
2667 |
+
|
2668 |
+
#: includes/admin/templates/settings/underscore-import-options.php:45
|
2669 |
+
msgid ""
|
2670 |
+
"If you have already set up SmartCrawl on some posts and pages then enable "
|
2671 |
+
"this option to keep those values from getting overwritten."
|
2672 |
+
msgstr ""
|
2673 |
+
|
2674 |
+
#: includes/admin/templates/settings/underscore-import-options.php:55
|
2675 |
+
msgid "Begin Import"
|
2676 |
+
msgstr ""
|
2677 |
+
|
2678 |
+
#: includes/admin/templates/settings/underscore-import-options.php:59
|
2679 |
+
msgid ""
|
2680 |
+
"Note: Importing can take a while if you have a large amount of content on "
|
2681 |
+
"your website."
|
2682 |
+
msgstr ""
|
2683 |
+
|
2684 |
+
#: includes/admin/templates/settings/underscore-import-progress.php:1
|
2685 |
+
msgid "Importing your %s settings, please keep this window open …"
|
2686 |
+
msgstr ""
|
2687 |
+
|
2688 |
+
#: includes/admin/templates/settings/underscore-import-progress.php:4
|
2689 |
+
msgid "Overall Progress"
|
2690 |
+
msgstr ""
|
2691 |
+
|
2692 |
+
#: includes/admin/templates/settings/underscore-import-progress.php:12
|
2693 |
+
msgid "Current Subsite"
|
2694 |
+
msgstr ""
|
2695 |
+
|
2696 |
+
#: includes/admin/templates/settings/underscore-import-success.php:1
|
2697 |
+
msgid "All done!"
|
2698 |
+
msgstr ""
|
2699 |
+
|
2700 |
+
#: includes/admin/templates/settings/underscore-import-success.php:4
|
2701 |
+
msgid "Your %s settings have been imported successfully and are now active."
|
2702 |
+
msgstr ""
|
2703 |
+
|
2704 |
+
#: includes/admin/templates/settings/underscore-import-success.php:6
|
2705 |
+
msgid "We highly recommend you deactivate %s to avoid potential conflicts."
|
2706 |
+
msgstr ""
|
2707 |
+
|
2708 |
+
#: includes/admin/templates/settings/underscore-import-success.php:13
|
2709 |
+
msgid "Close"
|
2710 |
+
msgstr ""
|
2711 |
+
|
2712 |
+
#: includes/admin/templates/settings/underscore-import-success.php:18
|
2713 |
+
msgid "Deactivate"
|
2714 |
+
msgstr ""
|
2715 |
+
|
2716 |
#: includes/admin/templates/settings-message-top.php:52
|
2717 |
msgid "Settings successfully imported"
|
2718 |
msgstr ""
|
2977 |
msgstr ""
|
2978 |
|
2979 |
#: includes/admin/templates/sitemap/sitemap-section-settings.php:33
|
2980 |
+
msgid "Unable to write to sitemap file: %s"
|
2981 |
msgstr ""
|
2982 |
|
2983 |
#: includes/admin/templates/sitemap/sitemap-section-settings.php:44
|
3086 |
msgid "You must activate the Sitemap feature to use the URL crawler."
|
3087 |
msgstr ""
|
3088 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3089 |
#: includes/admin/templates/social/social-section-accounts.php:7
|
3090 |
msgid "Website name"
|
3091 |
msgstr ""
|
3266 |
msgid "Add meta data to your pages to make them look great when shared on Twitter."
|
3267 |
msgstr ""
|
3268 |
|
3269 |
+
#: includes/admin/templates/term-additions-form.php:5
|
3270 |
msgid "SmartCrawl Settings "
|
3271 |
msgstr ""
|
3272 |
|
3273 |
+
#: includes/admin/templates/term-additions-form.php:10
|
3274 |
msgid "The SEO title is used on the archive page for this term."
|
3275 |
msgstr ""
|
3276 |
|
3277 |
+
#: includes/admin/templates/term-additions-form.php:11
|
3278 |
msgid "SEO Description"
|
3279 |
msgstr ""
|
3280 |
|
3281 |
+
#: includes/admin/templates/term-additions-form.php:11
|
3282 |
msgid ""
|
3283 |
"The SEO description is used for the meta description on the archive page "
|
3284 |
"for this term."
|
3285 |
msgstr ""
|
3286 |
|
3287 |
+
#: includes/admin/templates/term-additions-form.php:12
|
3288 |
msgid "The canonical link is shown on the archive page for this term."
|
3289 |
msgstr ""
|
3290 |
|
3291 |
+
#: includes/admin/templates/term-additions-form.php:15
|
3292 |
msgid "Index this %s"
|
3293 |
msgstr ""
|
3294 |
|
3295 |
+
#: includes/admin/templates/term-additions-form.php:17
|
3296 |
msgid "Noindex this %s"
|
3297 |
msgstr ""
|
3298 |
|
3299 |
+
#: includes/admin/templates/term-additions-form.php:21
|
3300 |
msgid "Follow this %s"
|
3301 |
msgstr ""
|
3302 |
|
3303 |
+
#: includes/admin/templates/term-additions-form.php:23
|
3304 |
msgid "Nofollow this %s"
|
3305 |
msgstr ""
|
3306 |
|
3314 |
"the term page is shared."
|
3315 |
msgstr ""
|
3316 |
|
3317 |
+
#: includes/admin/templates/term-additions-form.php:162
|
3318 |
msgid "Enable Twitter Cards for this term"
|
3319 |
msgstr ""
|
3320 |
|
3321 |
+
#: includes/admin/templates/term-additions-form.php:216
|
3322 |
msgid ""
|
3323 |
"This image will be available to use as the featured image when the term "
|
3324 |
"page is shared."
|
3354 |
|
3355 |
#: includes/admin/templates/upsell-modal.php:23
|
3356 |
msgid ""
|
3357 |
+
"A membership for SmartCrawl Pro also gets you the award winning Smush Pro "
|
3358 |
"with unlimited advanced lossy compression that’ll give image heavy websites "
|
3359 |
"a speed boost."
|
3360 |
msgstr ""
|
3383 |
msgid "You"
|
3384 |
msgstr ""
|
3385 |
|
3386 |
+
#: includes/admin/templates/wp-dashboard/sitemaps-widget.php:15
|
3387 |
+
msgid "Your sitemap contains %s."
|
3388 |
+
msgstr ""
|
3389 |
+
|
3390 |
+
#: includes/admin/templates/wp-dashboard/sitemaps-widget.php:20
|
3391 |
+
msgid "items"
|
3392 |
+
msgstr ""
|
3393 |
+
|
3394 |
+
#: includes/admin/templates/wp-dashboard/sitemaps-widget.php:29
|
3395 |
+
msgid "Update sitemap now"
|
3396 |
+
msgstr ""
|
3397 |
+
|
3398 |
+
#: includes/admin/templates/wp-dashboard/sitemaps-widget.php:41
|
3399 |
+
msgid "Last notified on %1$s, at %2$s."
|
3400 |
+
msgstr ""
|
3401 |
+
|
3402 |
+
#: includes/admin/templates/wp-dashboard/sitemaps-widget.php:41
|
3403 |
+
msgid "Not notified"
|
3404 |
+
msgstr ""
|
3405 |
+
|
3406 |
+
#: includes/admin/templates/wp-dashboard/sitemaps-widget.php:51
|
3407 |
+
msgid "Search engines haven't been recently updated."
|
3408 |
+
msgstr ""
|
3409 |
+
|
3410 |
+
#: includes/admin/templates/wp-dashboard/sitemaps-widget.php:57
|
3411 |
+
msgid "Force search engines notification"
|
3412 |
+
msgstr ""
|
3413 |
+
|
3414 |
+
#: includes/admin/templates/wp-dashboard/sitemaps-widget.php:61
|
3415 |
+
msgid ""
|
3416 |
+
"Search engine notifications are disabled. You can enable them in the "
|
3417 |
+
"sitemap settings."
|
3418 |
+
msgstr ""
|
3419 |
+
|
3420 |
#: includes/core/checks/class-wds-check-content-length.php:16
|
3421 |
msgid "There is no content"
|
3422 |
msgstr ""
|
3753 |
msgstr ""
|
3754 |
|
3755 |
#: includes/core/checks/class-wds-check-metadesc-length.php:21
|
3756 |
+
msgid "Description has a good length"
|
3757 |
msgstr ""
|
3758 |
|
3759 |
#: includes/core/checks/class-wds-check-metadesc-length.php:25
|
3923 |
msgstr ""
|
3924 |
|
3925 |
#: includes/core/checks/class-wds-check-title-length.php:15
|
3926 |
+
msgid "Title has a good length"
|
3927 |
msgstr ""
|
3928 |
|
3929 |
#: includes/core/checks/class-wds-check-title-length.php:19
|
3983 |
msgid "We encountered an error fetching your content"
|
3984 |
msgstr ""
|
3985 |
|
3986 |
+
#: includes/core/class-wds-controller-analysis.php:339
|
3987 |
msgid "N/A"
|
3988 |
msgstr ""
|
3989 |
|
3990 |
+
#: includes/core/class-wds-controller-analysis.php:632
|
3991 |
msgid "No Focus Keyword"
|
3992 |
msgstr ""
|
3993 |
|
3994 |
+
#: includes/core/class-wds-controller-analysis.php:635
|
3995 |
msgid "Needs Improvement"
|
3996 |
msgstr ""
|
3997 |
|
3998 |
+
#: includes/core/class-wds-controller-analysis.php:657
|
3999 |
msgid "SEO:"
|
4000 |
msgstr ""
|
4001 |
|
4002 |
+
#: includes/core/class-wds-controller-analysis.php:664
|
4003 |
msgid "Readability:"
|
4004 |
msgstr ""
|
4005 |
|
4057 |
"support if you need further assistance."
|
4058 |
msgstr ""
|
4059 |
|
4060 |
+
#: includes/core/class-wds-controller-io.php:299
|
4061 |
msgid "You don't have permission to perform this operation."
|
4062 |
msgstr ""
|
4063 |
|
4064 |
+
#: includes/core/class-wds-controller-io.php:304
|
4065 |
msgid "We couldn't find any compatible data to import."
|
4066 |
msgstr ""
|
4067 |
|
4068 |
+
#: includes/core/class-wds-controller-io.php:347
|
4069 |
msgid "Invalid parameters. Try refreshing the page and attempting again."
|
4070 |
msgstr ""
|
4071 |
|
4073 |
msgid "All done, please hold on..."
|
4074 |
msgstr ""
|
4075 |
|
4076 |
+
#: includes/core/class-wds-controller-pointers.php:125
|
4077 |
+
msgid "Optimize your SEO"
|
4078 |
+
msgstr ""
|
4079 |
+
|
4080 |
+
#: includes/core/class-wds-controller-pointers.php:126
|
4081 |
+
msgid ""
|
4082 |
+
"Configure your SEO Titles & Meta, enable OpenGraph and activate readability "
|
4083 |
+
"analysis here."
|
4084 |
+
msgstr ""
|
4085 |
+
|
4086 |
#: includes/core/class-wds-controller-sitemap.php:106
|
4087 |
msgid "The missing items have been added to your sitemap as extra URLs."
|
4088 |
msgstr ""
|
4178 |
msgid "Anonymous"
|
4179 |
msgstr ""
|
4180 |
|
4181 |
+
#: includes/core/class-wds-replacement-helper.php:116
|
4182 |
+
msgid "Page %1$s of %2$s"
|
4183 |
+
msgstr ""
|
4184 |
+
|
4185 |
#: includes/core/class-wds-settings.php:284
|
4186 |
msgid "Title & Meta Optimization"
|
4187 |
msgstr ""
|
4222 |
msgid "Sitemaps - SmartCrawl"
|
4223 |
msgstr ""
|
4224 |
|
4225 |
+
#: includes/tools/sitemaps-dashboard-widget.php:81
|
4226 |
msgid "It was last updated on %1$s, at %2$s."
|
4227 |
msgstr ""
|
4228 |
|
4229 |
+
#: includes/tools/sitemaps-dashboard-widget.php:82
|
4230 |
msgid "Your sitemap hasn't been updated recently."
|
4231 |
msgstr ""
|
4232 |
|
4233 |
+
#: includes/tools/sitemaps-dashboard-widget.php:96
|
4234 |
+
msgid "Updating..."
|
4235 |
msgstr ""
|
4236 |
|
4237 |
+
#: includes/tools/sitemaps-dashboard-widget.php:97
|
4238 |
+
msgid "Done updating the sitemap, please hold on..."
|
4239 |
msgstr ""
|
4240 |
|
4241 |
+
#: includes/tools/sitemaps-dashboard-widget.php:98
|
4242 |
+
msgid "Notifying..."
|
4243 |
msgstr ""
|
4244 |
|
4245 |
+
#: includes/tools/sitemaps-dashboard-widget.php:99
|
4246 |
+
msgid "Done notifying search engines, please hold on..."
|
4247 |
msgstr ""
|
4248 |
|
4249 |
#. Plugin URI of the plugin/theme
|
4260 |
|
4261 |
#. Author URI of the plugin/theme
|
4262 |
msgid "http://premium.wpmudev.org"
|
4263 |
+
msgstr ""
|
4264 |
+
|
4265 |
+
#: includes/admin/templates/advanced-tools/advanced-tools-settings.php:26
|
4266 |
+
msgctxt "part of a larger text"
|
4267 |
+
msgid ""
|
4268 |
+
"Configure SmartCrawl to automatically link certain key words to a page on "
|
4269 |
+
"your blog or even"
|
4270 |
+
msgstr ""
|
4271 |
+
|
4272 |
+
#: includes/admin/templates/advanced-tools/advanced-tools-settings.php:27
|
4273 |
+
msgctxt "part of a larger text"
|
4274 |
+
msgid ""
|
4275 |
+
"a whole new site all together. Internal linking can help boost SEO by "
|
4276 |
+
"giving search engines"
|
4277 |
+
msgstr ""
|
4278 |
+
|
4279 |
+
#: includes/admin/templates/advanced-tools/advanced-tools-settings.php:28
|
4280 |
+
msgctxt "part of a larger text"
|
4281 |
+
msgid "ample ways to index your site."
|
4282 |
msgstr ""
|
readme.txt
CHANGED
@@ -7,7 +7,7 @@ Author URI: https://premium.wpmudev.org/
|
|
7 |
Author: WPMU DEV
|
8 |
Requires at least: 4.6
|
9 |
Tested up to: 4.9.8
|
10 |
-
Stable tag: 2.2.
|
11 |
|
12 |
The SEO checker and optimization tool that helps you rank higher and get discovered in search engines.
|
13 |
|
@@ -86,6 +86,78 @@ SmartCrawl works with any normal WP content and page builders shouldn’t be an
|
|
86 |
|
87 |
== Changelog ==
|
88 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
= 2.2.2.5 =
|
90 |
|
91 |
* Fix: reverted 2.2.2.4 changes causing WSOD on some sites
|
7 |
Author: WPMU DEV
|
8 |
Requires at least: 4.6
|
9 |
Tested up to: 4.9.8
|
10 |
+
Stable tag: 2.2.4
|
11 |
|
12 |
The SEO checker and optimization tool that helps you rank higher and get discovered in search engines.
|
13 |
|
86 |
|
87 |
== Changelog ==
|
88 |
|
89 |
+
= 2.2.4 =
|
90 |
+
|
91 |
+
* New: URL redirection to external domains
|
92 |
+
|
93 |
+
* Fix: SEO and readability analysis of password-protected posts
|
94 |
+
* Fix: sitemap throws error if there's an image with ampersand sign
|
95 |
+
* Fix: metabox showing details from other posts when globals modified
|
96 |
+
* Fix: better autolinks compatibility with unicode languages
|
97 |
+
* Fix: code improvements for sitemap dashboard
|
98 |
+
* Fix: twitter and OG issues on static posts page
|
99 |
+
* Fix: third-party import notice appears for very old data
|
100 |
+
* Fix: conflicts on woocommerce shop page
|
101 |
+
|
102 |
+
= 2.2.3 =
|
103 |
+
|
104 |
+
* New: created new UI for Yoast and All In One SEO importers
|
105 |
+
* New: new option to keep existing post meta intact during import
|
106 |
+
* New: opengraph code optimizations and improvements
|
107 |
+
* New: made automatic sitemap updates less resource intensive
|
108 |
+
* New: made macros more extensible through new filters and actions
|
109 |
+
* New: support for dynamic placeholders prefixed with 'ct_' 'ct_desc_' and 'cf_'
|
110 |
+
|
111 |
+
* Fix: issues caused by shortcode execution (integration with Divi, Avada, WPBakery and Swift page builders)
|
112 |
+
* Fix: performance issues due to frequent analysis reruns
|
113 |
+
* Fix: minor conflict with Gutenberg
|
114 |
+
* Fix: autolinking module modifying inline scripts
|
115 |
+
* Fix: outdated meta title and meta description limits
|
116 |
+
* Fix: metabox conflict on media edit page
|
117 |
+
* Fix: saving menus taking too much time when analysis active
|
118 |
+
* Fix: post featured image printed as og:image before more specific images
|
119 |
+
* Fix: issues in Avada page builder integration
|
120 |
+
* Fix: log file not being written correctly
|
121 |
+
* Fix: issues caused by faulty packaging
|
122 |
+
* Fix: metabox preview showing raw HTML tags
|
123 |
+
* Fix: search engine update link unnecessarily shown on WP dashboard
|
124 |
+
* Fix: misnamed translation file
|
125 |
+
* Fix: missing trailing slash in sitemap home URL
|
126 |
+
* Fix: dates shown in sitemap dashboard widget not translatable
|
127 |
+
* Fix: sitemap creation error shows html tags
|
128 |
+
* Fix: format of date printed through %%currentdate%% placeholder not changeable
|
129 |
+
* Fix: miscellaneous typos and copy changes
|
130 |
+
* Fix: twitter placeholders on category edit page not accurate
|
131 |
+
* Fix: sitemap XSL stylesheet URL/path resolution issue
|
132 |
+
* Fix: twitter fields displayed unnecessarily on term edit page
|
133 |
+
* Fix: update plugin version constant to ensure cache busting
|
134 |
+
* Fix: untruncated title and description shown in Google previews
|
135 |
+
* Fix: typo in upsell modal
|
136 |
+
* Fix: metabox preview showing divi shortcodes
|
137 |
+
* Fix: issues caused by shortcode execution
|
138 |
+
* Fix: sub-headings check should pass if even one of the sub-headings contains our focus keywords
|
139 |
+
* Fix: twitter card preview not loading
|
140 |
+
* Fix: static front page handled as single post page
|
141 |
+
* Fix: static homepage does not show correct meta values in all scenarios
|
142 |
+
* Fix: static homepage built with builders shows shortcodes in 'Title & Meta' settings
|
143 |
+
* Fix: metabox preview showing WPBakery shortcodes
|
144 |
+
* Fix: warnings in autoloader
|
145 |
+
* Fix: importer support for yoast version 9
|
146 |
+
* Fix: metabox preview showing raw placeholders
|
147 |
+
|
148 |
+
= 2.2.2.7 =
|
149 |
+
|
150 |
+
* Fix: resolved conflict with swift framework mini product widget
|
151 |
+
* Fix: resolved styling conflicts with WPBakery and a few other plugins
|
152 |
+
* Fix: performance improvement for title and meta rewriting
|
153 |
+
|
154 |
+
= 2.2.2.6 =
|
155 |
+
|
156 |
+
* Fix: fixed issue causing WSOD on some sites
|
157 |
+
* Fix: don't show raw shortcodes in auto-generated meta description
|
158 |
+
* Fix: better compatibility of readability and SEO analysis with page builders
|
159 |
+
* Fix: made Google preview in the SC metabox more accurate
|
160 |
+
|
161 |
= 2.2.2.5 =
|
162 |
|
163 |
* Fix: reverted 2.2.2.4 changes causing WSOD on some sites
|
wpmu-dev-seo.php
CHANGED
@@ -3,12 +3,11 @@
|
|
3 |
* Plugin Name: SmartCrawl
|
4 |
* Plugin URI: http://premium.wpmudev.org/project/wpmu-dev-seo/
|
5 |
* Description: Every SEO option that a site requires, in one easy bundle.
|
6 |
-
* Version: 2.2.
|
7 |
* Network: true
|
8 |
* Text Domain: wds
|
9 |
* Author: WPMU DEV
|
10 |
* Author URI: http://premium.wpmudev.org
|
11 |
-
* WDP ID: 167
|
12 |
*/
|
13 |
|
14 |
/*
|
@@ -30,7 +29,7 @@
|
|
30 |
*/
|
31 |
|
32 |
|
33 |
-
define( 'SMARTCRAWL_VERSION', '2.2.
|
34 |
|
35 |
class Smartcrawl_Loader {
|
36 |
|
3 |
* Plugin Name: SmartCrawl
|
4 |
* Plugin URI: http://premium.wpmudev.org/project/wpmu-dev-seo/
|
5 |
* Description: Every SEO option that a site requires, in one easy bundle.
|
6 |
+
* Version: 2.2.4
|
7 |
* Network: true
|
8 |
* Text Domain: wds
|
9 |
* Author: WPMU DEV
|
10 |
* Author URI: http://premium.wpmudev.org
|
|
|
11 |
*/
|
12 |
|
13 |
/*
|
29 |
*/
|
30 |
|
31 |
|
32 |
+
define( 'SMARTCRAWL_VERSION', '2.2.4' );
|
33 |
|
34 |
class Smartcrawl_Loader {
|
35 |
|