Version Description
- 11/07/2017 =
- Fixed the SEO METAs in frontend for some theme
- Fixed the SEO METAs for Wp Super cache and other cache plugins
- Update Squirrly SEO Snippet Frontend is optional in Squirrly > SEO Settings Advanced
- Fixed the Sitemap to load for all subdirectories
- Fixed compatibility issues with other plugins
Download this release
Release Info
Developer | cifi |
Plugin | SEO SQUIRRLY™ |
Version | 8.2.23 |
Comparing to | |
See all releases |
Code changes from version 8.0.5 to 8.2.23
- classes/{SQ_Action.php → Action.php} +43 -28
- classes/BlockController.php +114 -0
- classes/{SQ_DisplayController.php → DisplayController.php} +31 -41
- classes/{SQ_Error.php → Error.php} +11 -5
- classes/FrontController.php +152 -0
- classes/{SQ_HookController.php → HookController.php} +42 -3
- classes/ObjController.php +200 -0
- classes/{SQ_Ranking.php → Ranking.php} +25 -35
- classes/SQ_BlockController.php +0 -95
- classes/SQ_FrontController.php +0 -123
- classes/SQ_ObjController.php +0 -197
- classes/SQ_Traffic.php +0 -8
- classes/{SQ_Tools.php → Tools.php} +533 -111
- config/config.php +54 -8
- config/paths.php +5 -6
- controllers/Api.php +76 -0
- controllers/Cron.php +29 -0
- controllers/{SQ_Feed.php → Feed.php} +10 -8
- controllers/FrontMenu.php +100 -0
- controllers/Frontend.php +193 -0
- controllers/Menu.php +548 -0
- controllers/{SQ_Post.php → Post.php} +88 -99
- controllers/{SQ_PostsList.php → PostsList.php} +33 -62
- controllers/SQ_Frontend.php +0 -218
- controllers/SQ_Menu.php +0 -247
- controllers/{SQ_Sitemaps.php → Sitemaps.php} +149 -67
- core/{SQ_BlockAccount/SQ_BlockAccount.php → BlockAccount.php} +1 -1
- core/{SQ_BlockAffiliate/SQ_BlockAffiliate.php → BlockAffiliate.php} +4 -4
- core/BlockAnalytics.php +9 -0
- core/{SQ_BlockAudit/SQ_BlockAudit.php → BlockAudit.php} +2 -2
- core/{SQ_BlockLiveAssistant/SQ_BlockLiveAssistant.php → BlockCopyright.php} +1 -1
- core/BlockCustomerService.php +11 -0
- core/{SQ_BlockDashboard/SQ_BlockDashboard.php → BlockDashboard.php} +1 -1
- core/BlockHelp.php +8 -0
- core/BlockImport.php +67 -0
- core/BlockKeywordResearch.php +12 -0
- core/{SQ_BlockCopyright/SQ_BlockCopyright.php → BlockLiveAssistant.php} +1 -1
- core/BlockPatterns.php +49 -0
- core/{SQ_BlockPostsAnalytics/SQ_BlockPostsAnalytics.php → BlockPostsAnalytics.php} +7 -6
- core/BlockSettings.php +76 -0
- core/BlockSettingsSeo.php +538 -0
- core/{SQ_BlockSupport/SQ_BlockSupport.php → BlockSupport.php} +8 -8
- core/BlockToolbar.php +4 -0
- core/{SQ_Blocklogin/SQ_Blocklogin.php → Blocklogin.php} +16 -16
- core/Blockresearch.php +8 -0
- core/Blocksearch.php +41 -0
- core/Blockseo.php +20 -0
- core/Loading.php +105 -0
- core/SQ_BlockAnalytics/SQ_BlockAnalytics.php +0 -9
- core/SQ_BlockCustomerService/SQ_BlockCustomerService.php +0 -11
- core/SQ_BlockHelp/SQ_BlockHelp.php +0 -8
- core/SQ_BlockKeywordResearch/SQ_BlockKeywordResearch.php +0 -11
- core/SQ_BlockSettings/SQ_BlockSettings.php +0 -72
- core/SQ_BlockSettingsSeo/SQ_BlockSettingsSeo.php +0 -382
- core/SQ_Blockresearch/SQ_Blockresearch.php +0 -17
- core/SQ_Blocksearch/SQ_Blocksearch.php +0 -41
- core/SQ_Blockseo/SQ_Blockseo.php +0 -40
- core/SQ_Loading/SQ_Loading.php +0 -74
- core/config.xml +73 -32
- languages/squirrly-seo-de_DE.mo +0 -0
- languages/squirrly-seo-de_DE.po +2186 -915
- languages/squirrly-seo-ro_RO.mo +0 -0
- languages/squirrly-seo-ro_RO.po +2896 -1061
- models/{SQ_BlockPostsAnalytics.php → BlockPostsAnalytics.php} +10 -10
- models/BlockSettingsSeo.php +1026 -0
- models/Blocksearch.php +10 -0
- models/Blockseo.php +29 -0
- models/Frontend.php +812 -0
- models/{SQ_Ico.php → Ico.php} +1 -1
- models/{SQ_Menu.php → Menu.php} +1 -1
- models/{SQ_Post.php → Post.php} +13 -7
- models/{SQ_PostsList.php → PostsList.php} +2 -2
- models/SQ_BlockSettingsSeo.php +0 -355
- models/SQ_Blocksearch.php +0 -10
- models/SQ_Blockseo.php +0 -41
- models/SQ_Frontend.php +0 -2136
- models/SQ_Sitemaps.php +0 -453
- models/Sitemaps.php +495 -0
- models/abstract/Domain.php +457 -0
- models/abstract/Seo.php +194 -0
- models/domain/Patterns.php +366 -0
- models/domain/Post.php +151 -0
- models/domain/Sq.php +146 -0
- models/services/Analytics.php +64 -0
- models/services/Canonical.php +33 -0
- models/services/Description.php +33 -0
- models/services/DublinCore.php +99 -0
- models/services/Favicon.php +71 -0
- models/services/JsonLD.php +264 -50
- models/services/Keywords.php +42 -0
- models/services/Noindex.php +36 -0
- models/services/OpenGraph.php +232 -0
- models/services/Pixel.php +210 -0
- models/services/PrevNext.php +43 -0
- models/services/Publisher.php +84 -0
- models/services/Robots.php +54 -0
- models/services/Sitemap.php +40 -0
- models/services/Title.php +38 -0
- models/services/TwitterCard.php +104 -0
- models/services/Verify.php +49 -0
- readme.txt +68 -3
- screenshot-1.png +0 -0
- screenshot-2.png +0 -0
- screenshot-3.png +0 -0
- screenshot-4.png +0 -0
- screenshot-5.png +0 -0
- screenshot-6.png +0 -0
- screenshot-7.png +0 -0
- squirrly.php +19 -17
- themes/default/SQ_BlockAccount.php +0 -35
- themes/default/SQ_BlockAffiliate.php +0 -103
- themes/default/SQ_BlockAudit.php +0 -63
- themes/default/SQ_BlockCopyright.php +0 -31
- themes/default/SQ_BlockDashboard.php +0 -111
- themes/default/SQ_BlockKeywordResearch.php +0 -37
- themes/default/SQ_BlockLiveAssistant.php +0 -36
- themes/default/SQ_BlockPostsAnalytics.php +0 -56
- themes/default/SQ_BlockSettings.php +0 -416
- themes/default/SQ_BlockSettingsSeo.php +0 -775
classes/{SQ_Action.php → Action.php}
RENAMED
@@ -3,7 +3,7 @@
|
|
3 |
/**
|
4 |
* Set the ajax action and call for wordpress
|
5 |
*/
|
6 |
-
class
|
7 |
|
8 |
/** @var array with all form and ajax actions */
|
9 |
var $actions = array();
|
@@ -14,7 +14,7 @@ class SQ_Action extends SQ_FrontController {
|
|
14 |
|
15 |
private function _isAjax() {
|
16 |
$url = (isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : false);
|
17 |
-
if ($url && (strpos($url, str_replace(get_bloginfo('url'),'',admin_url('admin-ajax.php', 'relative'))) !== false
|
18 |
return true;
|
19 |
}
|
20 |
|
@@ -59,6 +59,7 @@ class SQ_Action extends SQ_FrontController {
|
|
59 |
echo '<script type="text/javascript" src="https://www.google.com/jsapi"></script>
|
60 |
<script type="text/javascript">
|
61 |
var sqQuery = {
|
|
|
62 |
"ajaxurl": "' . admin_url('admin-ajax.php') . '",
|
63 |
"adminposturl": "' . admin_url('post.php') . '",
|
64 |
"adminlisturl": "' . admin_url('edit.php') . '",
|
@@ -67,6 +68,18 @@ class SQ_Action extends SQ_FrontController {
|
|
67 |
</script>';
|
68 |
}
|
69 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
/**
|
71 |
* Get all actions from config.xml in core directory and add them in the WP
|
72 |
*
|
@@ -87,37 +100,37 @@ class SQ_Action extends SQ_FrontController {
|
|
87 |
self::$config = json_decode(json_encode((array)simplexml_load_string($data)), 1);
|
88 |
}
|
89 |
|
90 |
-
if (is_array(self::$config))
|
91 |
foreach (self::$config['block'] as $block) {
|
92 |
-
if ($block['active'] == 1) {
|
93 |
/* if there is a single action */
|
94 |
-
if (isset($block['actions']['action']))
|
95 |
-
if (
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
}
|
100 |
-
} else {
|
101 |
/* if there are more actions for the current block */
|
102 |
-
|
103 |
-
/* add the
|
104 |
-
if ($action == $cur_action)
|
105 |
-
$this->actions[] = array('class' => $block['name']
|
|
|
|
|
|
|
|
|
|
|
|
|
106 |
}
|
107 |
}
|
108 |
}
|
109 |
-
|
110 |
}
|
111 |
}
|
112 |
-
|
113 |
|
114 |
/* add the actions in WP */
|
115 |
foreach ($this->actions as $actions) {
|
116 |
-
|
117 |
-
SQ_ObjController::getBlock($actions['class'])->action();
|
118 |
-
} elseif ($actions['path'] == 'controllers') {
|
119 |
-
SQ_ObjController::getController($actions['class'])->action();
|
120 |
-
}
|
121 |
}
|
122 |
}
|
123 |
}
|
@@ -128,20 +141,21 @@ class SQ_Action extends SQ_FrontController {
|
|
128 |
* @param array $args
|
129 |
* @return json | string
|
130 |
*/
|
131 |
-
public
|
|
|
132 |
$parameters = "";
|
133 |
$scheme = "http:";
|
134 |
|
135 |
-
if (
|
136 |
return false;
|
137 |
}
|
138 |
|
139 |
-
$extra = array('user_url' =>
|
140 |
'lang' => (defined('WPLANG') ? WPLANG : 'en_US'),
|
141 |
'versq' => SQ_VERSION_ID,
|
142 |
'verwp' => WP_VERSION_ID,
|
143 |
'verphp' => PHP_VERSION_ID,
|
144 |
-
'token' =>
|
145 |
|
146 |
|
147 |
if (is_array($args)) {
|
@@ -169,7 +183,7 @@ class SQ_Action extends SQ_FrontController {
|
|
169 |
//call it with http to prevent curl issues with ssls
|
170 |
$url = self::cleanUrl($scheme . _SQ_API_URL_ . $module . "?" . $parameters);
|
171 |
//update_option('sq_seopost_log', $url);
|
172 |
-
return
|
173 |
}
|
174 |
|
175 |
/**
|
@@ -177,7 +191,8 @@ class SQ_Action extends SQ_FrontController {
|
|
177 |
* @param string $url
|
178 |
* @return string
|
179 |
*/
|
180 |
-
private
|
|
|
181 |
return str_replace(array(' '), array('+'), $url);
|
182 |
}
|
183 |
|
3 |
/**
|
4 |
* Set the ajax action and call for wordpress
|
5 |
*/
|
6 |
+
class SQ_Classes_Action extends SQ_Classes_FrontController {
|
7 |
|
8 |
/** @var array with all form and ajax actions */
|
9 |
var $actions = array();
|
14 |
|
15 |
private function _isAjax() {
|
16 |
$url = (isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : false);
|
17 |
+
if ($url && (strpos($url, str_replace(get_bloginfo('url'), '', admin_url('admin-ajax.php', 'relative'))) !== false)) {
|
18 |
return true;
|
19 |
}
|
20 |
|
59 |
echo '<script type="text/javascript" src="https://www.google.com/jsapi"></script>
|
60 |
<script type="text/javascript">
|
61 |
var sqQuery = {
|
62 |
+
"adminurl": "' . admin_url() . '",
|
63 |
"ajaxurl": "' . admin_url('admin-ajax.php') . '",
|
64 |
"adminposturl": "' . admin_url('post.php') . '",
|
65 |
"adminlisturl": "' . admin_url('edit.php') . '",
|
68 |
</script>';
|
69 |
}
|
70 |
|
71 |
+
public function hookFronthead() {
|
72 |
+
if (is_user_logged_in()) {
|
73 |
+
echo '<script type="text/javascript">
|
74 |
+
var sqQuery = {
|
75 |
+
"adminurl": "' . admin_url() . '",
|
76 |
+
"ajaxurl": "' . admin_url('admin-ajax.php') . '",
|
77 |
+
"nonce": "' . wp_create_nonce(_SQ_NONCE_ID_) . '"
|
78 |
+
}
|
79 |
+
</script>';
|
80 |
+
}
|
81 |
+
}
|
82 |
+
|
83 |
/**
|
84 |
* Get all actions from config.xml in core directory and add them in the WP
|
85 |
*
|
100 |
self::$config = json_decode(json_encode((array)simplexml_load_string($data)), 1);
|
101 |
}
|
102 |
|
103 |
+
if (is_array(self::$config))
|
104 |
foreach (self::$config['block'] as $block) {
|
105 |
+
if (isset($block['active']) && $block['active'] == 1) {
|
106 |
/* if there is a single action */
|
107 |
+
if (isset($block['actions']['action']))
|
108 |
+
if (isset($block['admin']) &&
|
109 |
+
(($block['admin'] == 1 && is_user_logged_in()) ||
|
110 |
+
$block['admin'] == 0)
|
111 |
+
) {
|
|
|
|
|
112 |
/* if there are more actions for the current block */
|
113 |
+
if (!is_array($block['actions']['action'])) {
|
114 |
+
/* add the action in the actions array */
|
115 |
+
if ($block['actions']['action'] == $cur_action)
|
116 |
+
$this->actions[] = array('class' => $block['name']);
|
117 |
+
} else {
|
118 |
+
/* if there are more actions for the current block */
|
119 |
+
foreach ($block['actions']['action'] as $action) {
|
120 |
+
/* add the actions in the actions array */
|
121 |
+
if ($action == $cur_action)
|
122 |
+
$this->actions[] = array('class' => $block['name']);
|
123 |
}
|
124 |
}
|
125 |
}
|
126 |
+
|
127 |
}
|
128 |
}
|
129 |
+
|
130 |
|
131 |
/* add the actions in WP */
|
132 |
foreach ($this->actions as $actions) {
|
133 |
+
SQ_Classes_ObjController::getClass($actions['class'])->action();
|
|
|
|
|
|
|
|
|
134 |
}
|
135 |
}
|
136 |
}
|
141 |
* @param array $args
|
142 |
* @return json | string
|
143 |
*/
|
144 |
+
public
|
145 |
+
static function apiCall($module, $args = array(), $timeout = 10) {
|
146 |
$parameters = "";
|
147 |
$scheme = "http:";
|
148 |
|
149 |
+
if (SQ_Classes_Tools::getOption('sq_api') == '' && $module <> 'sq/login' && $module <> 'sq/register') {
|
150 |
return false;
|
151 |
}
|
152 |
|
153 |
+
$extra = array('user_url' => home_url(),
|
154 |
'lang' => (defined('WPLANG') ? WPLANG : 'en_US'),
|
155 |
'versq' => SQ_VERSION_ID,
|
156 |
'verwp' => WP_VERSION_ID,
|
157 |
'verphp' => PHP_VERSION_ID,
|
158 |
+
'token' => SQ_Classes_Tools::getOption('sq_api'));
|
159 |
|
160 |
|
161 |
if (is_array($args)) {
|
183 |
//call it with http to prevent curl issues with ssls
|
184 |
$url = self::cleanUrl($scheme . _SQ_API_URL_ . $module . "?" . $parameters);
|
185 |
//update_option('sq_seopost_log', $url);
|
186 |
+
return SQ_Classes_Tools::sq_remote_get($url, array(), array('timeout' => $timeout));
|
187 |
}
|
188 |
|
189 |
/**
|
191 |
* @param string $url
|
192 |
* @return string
|
193 |
*/
|
194 |
+
private
|
195 |
+
static function cleanUrl($url) {
|
196 |
return str_replace(array(' '), array('+'), $url);
|
197 |
}
|
198 |
|
classes/BlockController.php
ADDED
@@ -0,0 +1,114 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* The main class for core blocks
|
5 |
+
*
|
6 |
+
*/
|
7 |
+
class SQ_Classes_BlockController {
|
8 |
+
|
9 |
+
/** @var object of the model class */
|
10 |
+
protected $model;
|
11 |
+
|
12 |
+
/** @var boolean */
|
13 |
+
public $flush = true;
|
14 |
+
|
15 |
+
/** @var object of the view class */
|
16 |
+
protected $view;
|
17 |
+
|
18 |
+
/** @var name of the class */
|
19 |
+
private $name;
|
20 |
+
|
21 |
+
public function __construct() {
|
22 |
+
/* get the name of the current class */
|
23 |
+
$this->name = get_class($this);
|
24 |
+
|
25 |
+
/* create the model and view instances */
|
26 |
+
$this->model = SQ_Classes_ObjController::getClass(str_replace('Core', 'Models', $this->name));
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* load sequence of classes
|
31 |
+
*
|
32 |
+
* @return mixed
|
33 |
+
*/
|
34 |
+
public function init() {
|
35 |
+
/* check if there is a hook defined in the block class */
|
36 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_HookController')->setBlockHooks($this);
|
37 |
+
|
38 |
+
if ($this->flush) {
|
39 |
+
$this->hookHead();
|
40 |
+
echo $this->getView();
|
41 |
+
} else {
|
42 |
+
return $this->getView();
|
43 |
+
}
|
44 |
+
}
|
45 |
+
|
46 |
+
|
47 |
+
/**
|
48 |
+
* Get the block view
|
49 |
+
*
|
50 |
+
* @param null $view
|
51 |
+
* @return mixed
|
52 |
+
*/
|
53 |
+
public function getView($view = null) {
|
54 |
+
if (!isset($view)) {
|
55 |
+
if ($class = SQ_Classes_ObjController::getClassPath($this->name)) {
|
56 |
+
$view = $class['name'];
|
57 |
+
}
|
58 |
+
}
|
59 |
+
|
60 |
+
if (isset($view)) {
|
61 |
+
$this->view = SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController');
|
62 |
+
return $this->view->getView($view, $this);
|
63 |
+
}
|
64 |
+
|
65 |
+
return '';
|
66 |
+
}
|
67 |
+
|
68 |
+
|
69 |
+
/**
|
70 |
+
* Called as menu callback to show the block
|
71 |
+
*
|
72 |
+
*/
|
73 |
+
public function show() {
|
74 |
+
$this->flush = true;
|
75 |
+
echo $this->init();
|
76 |
+
}
|
77 |
+
|
78 |
+
|
79 |
+
public function preloadSettings() {
|
80 |
+
echo '<script type="text/javascript">
|
81 |
+
var __blog_url = "' . get_bloginfo('url') . '";
|
82 |
+
var __token = "' . SQ_Classes_Tools::getOption('sq_api') . '";
|
83 |
+
var __language = "' . get_bloginfo('language') . '";
|
84 |
+
var __api_url = "' . _SQ_API_URL_ . '";
|
85 |
+
jQuery(document).ready(function () {
|
86 |
+
jQuery.sq_getHelp("' . str_replace(array("sq_core_block", "sq_controller_block_"), "", strtolower($this->name)) . '", "content");
|
87 |
+
});
|
88 |
+
</script>';
|
89 |
+
}
|
90 |
+
|
91 |
+
/**
|
92 |
+
* This function is called from Ajax class as a wp_ajax_action
|
93 |
+
*
|
94 |
+
*/
|
95 |
+
protected function action() {
|
96 |
+
// check to see if the submitted nonce matches with the
|
97 |
+
// generated nonce we created
|
98 |
+
if (function_exists('wp_verify_nonce'))
|
99 |
+
if (!wp_verify_nonce(SQ_Classes_Tools::getValue('nonce'), _SQ_NONCE_ID_))
|
100 |
+
die('Invalid request!');
|
101 |
+
}
|
102 |
+
|
103 |
+
/**
|
104 |
+
* This function will load the media in the header for each class
|
105 |
+
*
|
106 |
+
* @return void
|
107 |
+
*/
|
108 |
+
protected function hookHead() {
|
109 |
+
if ($class = SQ_Classes_ObjController::getClassPath($this->name)) {
|
110 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia($class['name']);
|
111 |
+
}
|
112 |
+
}
|
113 |
+
|
114 |
+
}
|
classes/{SQ_DisplayController.php → DisplayController.php}
RENAMED
@@ -3,14 +3,13 @@
|
|
3 |
/**
|
4 |
* The class handles the theme part in WP
|
5 |
*/
|
6 |
-
class
|
7 |
|
8 |
-
private static $name;
|
9 |
private static $cache;
|
10 |
|
11 |
public function init() {
|
12 |
/* Load the global CSS file */
|
13 |
-
self::loadMedia('
|
14 |
}
|
15 |
|
16 |
/**
|
@@ -19,7 +18,7 @@ class SQ_DisplayController {
|
|
19 |
*/
|
20 |
private static function _isAjax() {
|
21 |
$url = (isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : false);
|
22 |
-
if ($url && (strpos($url, str_replace(get_bloginfo('url'),'',admin_url('admin-ajax.php', 'relative'))) !== false
|
23 |
return true;
|
24 |
}
|
25 |
|
@@ -41,7 +40,7 @@ class SQ_DisplayController {
|
|
41 |
|
42 |
$css_uri = '';
|
43 |
$js_uri = '';
|
44 |
-
|
45 |
if (!isset($params['media'])) {
|
46 |
$params['media'] = 'all';
|
47 |
}
|
@@ -51,13 +50,24 @@ class SQ_DisplayController {
|
|
51 |
self::$cache[$uri] = true;
|
52 |
|
53 |
/* if is a custom css file */
|
54 |
-
if (strpos($uri, '
|
55 |
-
|
56 |
-
|
57 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
58 |
}
|
59 |
-
if (file_exists(_SQ_THEME_DIR_ . 'js/' . $
|
60 |
-
$js_uri = _SQ_THEME_URL_ . 'js/' . $
|
61 |
}
|
62 |
} else {
|
63 |
$name = strtolower(basename($uri));
|
@@ -66,11 +76,9 @@ class SQ_DisplayController {
|
|
66 |
elseif (strpos($uri, '.js') !== FALSE) {
|
67 |
$js_uri = $uri;
|
68 |
}
|
69 |
-
$local = false;
|
70 |
}
|
71 |
|
72 |
|
73 |
-
|
74 |
if ($css_uri <> '') {
|
75 |
if (!wp_style_is($name)) {
|
76 |
wp_enqueue_style($name, $css_uri, null, SQ_VERSION_ID, $params['media']);
|
@@ -83,7 +91,7 @@ class SQ_DisplayController {
|
|
83 |
|
84 |
if ($js_uri <> '') {
|
85 |
if (!wp_script_is($name)) {
|
86 |
-
wp_enqueue_script($name, $js_uri,
|
87 |
}
|
88 |
if (isset($params['trigger']) && $params['trigger'] === true) {
|
89 |
wp_print_scripts(array($name));
|
@@ -91,39 +99,21 @@ class SQ_DisplayController {
|
|
91 |
}
|
92 |
}
|
93 |
|
94 |
-
public function setBlock($block) {
|
95 |
-
self::$name = $block;
|
96 |
-
}
|
97 |
|
98 |
/**
|
99 |
-
*
|
100 |
*
|
101 |
-
* @
|
|
|
|
|
102 |
*/
|
103 |
-
public
|
104 |
-
|
105 |
-
if (file_exists(_SQ_THEME_DIR_ . self::$name . '.php')) {
|
106 |
ob_start();
|
107 |
-
|
108 |
-
|
109 |
-
include(_SQ_THEME_DIR_ . self::$name . '.php');
|
110 |
-
$block_content = ob_get_contents();
|
111 |
-
ob_end_clean();
|
112 |
-
|
113 |
-
return $block_content;
|
114 |
}
|
115 |
-
}
|
116 |
|
117 |
-
|
118 |
-
* Called for any class to show the block content
|
119 |
-
*
|
120 |
-
* @param string $block the name of the block file in theme directory (class name by default)
|
121 |
-
*
|
122 |
-
* @return string of the current class view
|
123 |
-
*/
|
124 |
-
public function output($block, $obj) {
|
125 |
-
self::$name = $block;
|
126 |
-
echo $this->echoBlock($obj);
|
127 |
}
|
128 |
-
|
129 |
}
|
3 |
/**
|
4 |
* The class handles the theme part in WP
|
5 |
*/
|
6 |
+
class SQ_Classes_DisplayController {
|
7 |
|
|
|
8 |
private static $cache;
|
9 |
|
10 |
public function init() {
|
11 |
/* Load the global CSS file */
|
12 |
+
self::loadMedia('global');
|
13 |
}
|
14 |
|
15 |
/**
|
18 |
*/
|
19 |
private static function _isAjax() {
|
20 |
$url = (isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : false);
|
21 |
+
if ($url && (strpos($url, str_replace(get_bloginfo('url'), '', admin_url('admin-ajax.php', 'relative'))) !== false)) {
|
22 |
return true;
|
23 |
}
|
24 |
|
40 |
|
41 |
$css_uri = '';
|
42 |
$js_uri = '';
|
43 |
+
|
44 |
if (!isset($params['media'])) {
|
45 |
$params['media'] = 'all';
|
46 |
}
|
50 |
self::$cache[$uri] = true;
|
51 |
|
52 |
/* if is a custom css file */
|
53 |
+
if (strpos($uri, '//') === false) {
|
54 |
+
if (strpos($uri, '.') !== false) {
|
55 |
+
$name = strtolower(_SQ_NAMESPACE_ . substr($uri, 0, strpos($uri, '.')));
|
56 |
+
} else {
|
57 |
+
$name = strtolower(_SQ_NAMESPACE_ . $uri);
|
58 |
+
}
|
59 |
+
if (strpos($uri,'.css') !== false && file_exists(_SQ_THEME_DIR_ . 'css/' . strtolower($uri))) {
|
60 |
+
$css_uri = _SQ_THEME_URL_ . 'css/' . strtolower($uri);
|
61 |
+
}
|
62 |
+
if (strpos($uri,'.js') !== false && file_exists(_SQ_THEME_DIR_ . 'js/' . strtolower($uri))) {
|
63 |
+
$js_uri = _SQ_THEME_URL_ . 'js/' . strtolower($uri);
|
64 |
+
}
|
65 |
+
|
66 |
+
if (file_exists(_SQ_THEME_DIR_ . 'css/' . strtolower($uri) . '.css')) {
|
67 |
+
$css_uri = _SQ_THEME_URL_ . 'css/' . strtolower($uri) . '.css';
|
68 |
}
|
69 |
+
if (file_exists(_SQ_THEME_DIR_ . 'js/' . strtolower($uri) . '.js')) {
|
70 |
+
$js_uri = _SQ_THEME_URL_ . 'js/' . strtolower($uri) . '.js';
|
71 |
}
|
72 |
} else {
|
73 |
$name = strtolower(basename($uri));
|
76 |
elseif (strpos($uri, '.js') !== FALSE) {
|
77 |
$js_uri = $uri;
|
78 |
}
|
|
|
79 |
}
|
80 |
|
81 |
|
|
|
82 |
if ($css_uri <> '') {
|
83 |
if (!wp_style_is($name)) {
|
84 |
wp_enqueue_style($name, $css_uri, null, SQ_VERSION_ID, $params['media']);
|
91 |
|
92 |
if ($js_uri <> '') {
|
93 |
if (!wp_script_is($name)) {
|
94 |
+
wp_enqueue_script($name, $js_uri, array('jquery'), SQ_VERSION_ID);
|
95 |
}
|
96 |
if (isset($params['trigger']) && $params['trigger'] === true) {
|
97 |
wp_print_scripts(array($name));
|
99 |
}
|
100 |
}
|
101 |
|
|
|
|
|
|
|
102 |
|
103 |
/**
|
104 |
+
* return the block content from theme directory
|
105 |
*
|
106 |
+
* @param $block
|
107 |
+
* @param $view
|
108 |
+
* @return bool|string
|
109 |
*/
|
110 |
+
public function getView($block, $view) {
|
111 |
+
if (file_exists(_SQ_THEME_DIR_ . $block . '.php')) {
|
|
|
112 |
ob_start();
|
113 |
+
include(_SQ_THEME_DIR_ . $block . '.php');
|
114 |
+
return ob_get_clean();
|
|
|
|
|
|
|
|
|
|
|
115 |
}
|
|
|
116 |
|
117 |
+
return false;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
118 |
}
|
|
|
119 |
}
|
classes/{SQ_Error.php → Error.php}
RENAMED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class
|
4 |
|
5 |
/** @var array */
|
6 |
private static $errors, $switch_off;
|
@@ -42,6 +42,12 @@ class SQ_Error extends SQ_FrontController {
|
|
42 |
'text' => $error);
|
43 |
}
|
44 |
|
|
|
|
|
|
|
|
|
|
|
|
|
45 |
/**
|
46 |
* This hook will show the error in WP header
|
47 |
*/
|
@@ -61,7 +67,7 @@ class SQ_Error extends SQ_FrontController {
|
|
61 |
break;
|
62 |
|
63 |
case 'helpnotice':
|
64 |
-
if (
|
65 |
break;
|
66 |
}
|
67 |
self::$switch_off = "<a href=\"javascript:void(0);\" onclick=\"jQuery.post( ajaxurl, {action: 'sq_warnings_off', nonce: '" . wp_create_nonce(_SQ_NONCE_ID_) . "'}, function(data) { if (data) { jQuery('#sq_ignore_warn').attr('checked', true); jQuery('.sq_message').hide(); jQuery('#toplevel_page_squirrly .awaiting-mod').fadeOut('slow'); } });\" >" . __("Don't bother me!", _SQ_PLUGIN_NAME_) . "</a>";
|
@@ -81,12 +87,12 @@ class SQ_Error extends SQ_FrontController {
|
|
81 |
/**
|
82 |
* Show the notices to WP
|
83 |
*
|
84 |
-
* @return
|
85 |
*/
|
86 |
public static function showError($message, $id = '', $type = 'sq_error') {
|
87 |
|
88 |
-
if (file_exists(_SQ_THEME_DIR_ . '
|
89 |
-
include
|
90 |
} else {
|
91 |
echo $message;
|
92 |
}
|
1 |
<?php
|
2 |
|
3 |
+
class SQ_Classes_Error extends SQ_Classes_FrontController {
|
4 |
|
5 |
/** @var array */
|
6 |
private static $errors, $switch_off;
|
42 |
'text' => $error);
|
43 |
}
|
44 |
|
45 |
+
public static function setMessage($message = '', $id = '') {
|
46 |
+
self::$errors[] = array('id' => $id,
|
47 |
+
'type' => 'success',
|
48 |
+
'text' => $message);
|
49 |
+
}
|
50 |
+
|
51 |
/**
|
52 |
* This hook will show the error in WP header
|
53 |
*/
|
67 |
break;
|
68 |
|
69 |
case 'helpnotice':
|
70 |
+
if (SQ_Classes_Tools::getOption('ignore_warn')) {
|
71 |
break;
|
72 |
}
|
73 |
self::$switch_off = "<a href=\"javascript:void(0);\" onclick=\"jQuery.post( ajaxurl, {action: 'sq_warnings_off', nonce: '" . wp_create_nonce(_SQ_NONCE_ID_) . "'}, function(data) { if (data) { jQuery('#sq_ignore_warn').attr('checked', true); jQuery('.sq_message').hide(); jQuery('#toplevel_page_squirrly .awaiting-mod').fadeOut('slow'); } });\" >" . __("Don't bother me!", _SQ_PLUGIN_NAME_) . "</a>";
|
87 |
/**
|
88 |
* Show the notices to WP
|
89 |
*
|
90 |
+
* @return string
|
91 |
*/
|
92 |
public static function showError($message, $id = '', $type = 'sq_error') {
|
93 |
|
94 |
+
if (file_exists(_SQ_THEME_DIR_ . 'Notices.php')) {
|
95 |
+
include(_SQ_THEME_DIR_ . 'Notices.php');
|
96 |
} else {
|
97 |
echo $message;
|
98 |
}
|
classes/FrontController.php
ADDED
@@ -0,0 +1,152 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* The main class for controllers
|
5 |
+
*
|
6 |
+
*/
|
7 |
+
class SQ_Classes_FrontController {
|
8 |
+
|
9 |
+
/** @var object of the model class */
|
10 |
+
public $model;
|
11 |
+
|
12 |
+
/** @var boolean */
|
13 |
+
public $flush = true;
|
14 |
+
|
15 |
+
/** @var object of the view class */
|
16 |
+
public $view;
|
17 |
+
|
18 |
+
/** @var name of the class */
|
19 |
+
private $name;
|
20 |
+
|
21 |
+
public function __construct() {
|
22 |
+
|
23 |
+
/* Load error class */
|
24 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_Error');
|
25 |
+
/* Load Tools */
|
26 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_Tools');
|
27 |
+
|
28 |
+
|
29 |
+
/* get the name of the current class */
|
30 |
+
$this->name = get_class($this);
|
31 |
+
|
32 |
+
/* load the model and hooks here for wordpress actions to take efect */
|
33 |
+
/* create the model and view instances */
|
34 |
+
$this->model = SQ_Classes_ObjController::getClass(str_replace('Controllers', 'Models', $this->name));
|
35 |
+
|
36 |
+
//IMPORTANT TO LOAD HOOKS HERE
|
37 |
+
/* check if there is a hook defined in the controller clients class */
|
38 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_HookController')->setHooks($this);
|
39 |
+
|
40 |
+
/* Load the Submit Actions Handler */
|
41 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_Action');
|
42 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController');
|
43 |
+
|
44 |
+
//abstract classes
|
45 |
+
SQ_Classes_ObjController::getClass('SQ_Models_Abstract_Domain');
|
46 |
+
SQ_Classes_ObjController::getClass('SQ_Models_Abstract_Models');
|
47 |
+
SQ_Classes_ObjController::getClass('SQ_Models_Abstract_Seo');
|
48 |
+
}
|
49 |
+
|
50 |
+
/**
|
51 |
+
* load sequence of classes
|
52 |
+
* Function called usualy when the controller is loaded in WP
|
53 |
+
*
|
54 |
+
* @return mixed
|
55 |
+
*/
|
56 |
+
public function init() {
|
57 |
+
/* load the blocks for this controller */
|
58 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_ObjController')->getBlocks($this->name);
|
59 |
+
|
60 |
+
if ($this->flush) {
|
61 |
+
echo $this->getView();
|
62 |
+
} else {
|
63 |
+
return $this->getView();
|
64 |
+
}
|
65 |
+
}
|
66 |
+
|
67 |
+
/**
|
68 |
+
* Get the block view
|
69 |
+
*
|
70 |
+
* @param null $view
|
71 |
+
* @return mixed
|
72 |
+
*/
|
73 |
+
public function getView($view = null) {
|
74 |
+
if (!isset($view)) {
|
75 |
+
if ($class = SQ_Classes_ObjController::getClassPath($this->name)) {
|
76 |
+
$view = $class['name'];
|
77 |
+
}
|
78 |
+
}
|
79 |
+
|
80 |
+
if (isset($view)) {
|
81 |
+
$this->view = SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController');
|
82 |
+
return $this->view->getView($view, $this);
|
83 |
+
}
|
84 |
+
|
85 |
+
return '';
|
86 |
+
}
|
87 |
+
|
88 |
+
/**
|
89 |
+
* Called as menu callback to show the block
|
90 |
+
*
|
91 |
+
*/
|
92 |
+
public function show() {
|
93 |
+
$this->flush = true;
|
94 |
+
echo $this->init();
|
95 |
+
}
|
96 |
+
|
97 |
+
/**
|
98 |
+
* initialize settings
|
99 |
+
* Called from index
|
100 |
+
*
|
101 |
+
* @return void
|
102 |
+
*/
|
103 |
+
public function runAdmin() {
|
104 |
+
/* show the admin menu and post actions */
|
105 |
+
SQ_Classes_ObjController::getClass('SQ_Controllers_Menu');
|
106 |
+
}
|
107 |
+
|
108 |
+
/**
|
109 |
+
* Run fron frontend
|
110 |
+
*/
|
111 |
+
public function runFrontend() {
|
112 |
+
//Load Frontend only if Squirrly SEO is enabled
|
113 |
+
SQ_Classes_ObjController::getClass('SQ_Controllers_Frontend');
|
114 |
+
|
115 |
+
/* show the topbar admin menu and post actions */
|
116 |
+
SQ_Classes_ObjController::getClass('SQ_Controllers_Menu');
|
117 |
+
|
118 |
+
/* call the API for save posts */
|
119 |
+
SQ_Classes_ObjController::getClass('SQ_Controllers_Api');
|
120 |
+
|
121 |
+
}
|
122 |
+
|
123 |
+
/**
|
124 |
+
* first function call for any class
|
125 |
+
*
|
126 |
+
*/
|
127 |
+
protected function action() {
|
128 |
+
|
129 |
+
// check to see if the submitted nonce matches with the
|
130 |
+
// generated nonce we created
|
131 |
+
if (function_exists('wp_verify_nonce'))
|
132 |
+
if (!wp_verify_nonce(SQ_Classes_Tools::getValue('nonce'), _SQ_NONCE_ID_))
|
133 |
+
die('Invalid request!');
|
134 |
+
}
|
135 |
+
|
136 |
+
/**
|
137 |
+
* This function will load the media in the header for each class
|
138 |
+
*
|
139 |
+
* @return void
|
140 |
+
*/
|
141 |
+
public function hookHead() {
|
142 |
+
if (!is_admin()) {
|
143 |
+
return;
|
144 |
+
}
|
145 |
+
|
146 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->init();
|
147 |
+
if ($class = SQ_Classes_ObjController::getClassPath($this->name)) {
|
148 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia($class['name']);
|
149 |
+
}
|
150 |
+
}
|
151 |
+
|
152 |
+
}
|
classes/{SQ_HookController.php → HookController.php}
RENAMED
@@ -3,26 +3,49 @@
|
|
3 |
/**
|
4 |
* The class handles the actions in WP
|
5 |
*/
|
6 |
-
class
|
7 |
|
8 |
/** @var array the WP actions list from admin */
|
9 |
private $admin_hooks = array();
|
|
|
10 |
private $block_hooks = array();
|
11 |
|
12 |
public function __construct() {
|
13 |
-
$this->admin_hooks = array(
|
|
|
14 |
'head' => 'admin_head',
|
15 |
'footer' => 'admin_footer',
|
16 |
'menu' => 'admin_menu',
|
17 |
-
'preload' => 'template_redirect',
|
18 |
'notices' => 'admin_notices',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
'frontinit' => 'init',
|
20 |
'fronthead' => 'wp_head',
|
21 |
'frontfooter' => 'wp_footer',
|
22 |
);
|
|
|
23 |
$this->block_hooks = array('getContent' => 'getContent');
|
24 |
}
|
25 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
/**
|
27 |
* Calls the specified action in WP
|
28 |
* @param object $instance The parent class instance
|
@@ -41,6 +64,22 @@ class SQ_HookController {
|
|
41 |
}
|
42 |
}
|
43 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
44 |
/**
|
45 |
* Calls the specified action in WP
|
46 |
* @param string $action
|
3 |
/**
|
4 |
* The class handles the actions in WP
|
5 |
*/
|
6 |
+
class SQ_Classes_HookController {
|
7 |
|
8 |
/** @var array the WP actions list from admin */
|
9 |
private $admin_hooks = array();
|
10 |
+
private $front_hooks = array();
|
11 |
private $block_hooks = array();
|
12 |
|
13 |
public function __construct() {
|
14 |
+
$this->admin_hooks = array(
|
15 |
+
'init' => 'admin_init',
|
16 |
'head' => 'admin_head',
|
17 |
'footer' => 'admin_footer',
|
18 |
'menu' => 'admin_menu',
|
|
|
19 |
'notices' => 'admin_notices',
|
20 |
+
);
|
21 |
+
|
22 |
+
//called in frontend
|
23 |
+
$this->front_hooks = array(
|
24 |
+
// --
|
25 |
+
'init' => 'init',
|
26 |
+
'preload' => 'template_redirect',
|
27 |
'frontinit' => 'init',
|
28 |
'fronthead' => 'wp_head',
|
29 |
'frontfooter' => 'wp_footer',
|
30 |
);
|
31 |
+
|
32 |
$this->block_hooks = array('getContent' => 'getContent');
|
33 |
}
|
34 |
|
35 |
+
/**
|
36 |
+
* Calls the specified action in WP
|
37 |
+
* @param object $instance The parent class instance
|
38 |
+
*
|
39 |
+
* @return void
|
40 |
+
*/
|
41 |
+
public function setHooks($instance) {
|
42 |
+
if (is_admin() || is_network_admin()) {
|
43 |
+
$this->setAdminHooks($instance);
|
44 |
+
} else {
|
45 |
+
$this->setFrontHooks($instance);
|
46 |
+
}
|
47 |
+
}
|
48 |
+
|
49 |
/**
|
50 |
* Calls the specified action in WP
|
51 |
* @param object $instance The parent class instance
|
64 |
}
|
65 |
}
|
66 |
|
67 |
+
/**
|
68 |
+
* Calls the specified action in WP
|
69 |
+
* @param object $instance The parent class instance
|
70 |
+
*
|
71 |
+
* @return void
|
72 |
+
*/
|
73 |
+
public function setFrontHooks($instance) {
|
74 |
+
/* for each admin action check if is defined in class and call it */
|
75 |
+
foreach ($this->front_hooks as $hook => $value) {
|
76 |
+
if (is_callable(array($instance, 'hook' . ucfirst($hook)))) {
|
77 |
+
//call the WP add_action function
|
78 |
+
add_action($value, array($instance, 'hook' . ucfirst($hook)), 5);
|
79 |
+
}
|
80 |
+
}
|
81 |
+
}
|
82 |
+
|
83 |
/**
|
84 |
* Calls the specified action in WP
|
85 |
* @param string $action
|
classes/ObjController.php
ADDED
@@ -0,0 +1,200 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* The class creates object for plugin classes
|
5 |
+
*/
|
6 |
+
class SQ_Classes_ObjController {
|
7 |
+
|
8 |
+
/** @var array of instances */
|
9 |
+
public static $instances;
|
10 |
+
|
11 |
+
/** @var array from core config */
|
12 |
+
private static $config;
|
13 |
+
|
14 |
+
|
15 |
+
public static function getClass($className, $args = array()) {
|
16 |
+
|
17 |
+
if ($class = self::getClassPath($className)) {
|
18 |
+
if (!isset(self::$instances[$className])) {
|
19 |
+
/* check if class is already defined */
|
20 |
+
if (!class_exists($className) || $className == get_class()) {
|
21 |
+
self::includeClass($class['dir'], $class['name']);
|
22 |
+
|
23 |
+
//check if abstract
|
24 |
+
$check = new ReflectionClass($className);
|
25 |
+
$abstract = $check->isAbstract();
|
26 |
+
if (!$abstract) {
|
27 |
+
self::$instances[$className] = new $className();
|
28 |
+
if (!empty($args)) {
|
29 |
+
call_user_func_array(array(self::$instances[$className], '__construct'), $args);
|
30 |
+
}
|
31 |
+
return self::$instances[$className];
|
32 |
+
} else {
|
33 |
+
self::$instances[$className] = true;
|
34 |
+
}
|
35 |
+
} else {
|
36 |
+
|
37 |
+
}
|
38 |
+
} else
|
39 |
+
return self::$instances[$className];
|
40 |
+
}
|
41 |
+
return false;
|
42 |
+
}
|
43 |
+
|
44 |
+
private static function includeClass($classDir, $className) {
|
45 |
+
|
46 |
+
if (file_exists($classDir . $className . '.php'))
|
47 |
+
try {
|
48 |
+
include_once($classDir . $className . '.php');
|
49 |
+
} catch (Exception $e) {
|
50 |
+
throw new Exception('Controller Error: ' . $e->getMessage());
|
51 |
+
}
|
52 |
+
}
|
53 |
+
|
54 |
+
public static function getDomain($className, $args = array()) {
|
55 |
+
if ($class = self::getClassPath($className)) {
|
56 |
+
|
57 |
+
/* check if class is already defined */
|
58 |
+
// if (!isset(self::$instances[$className])) {
|
59 |
+
//
|
60 |
+
// self::$instances[$className] = new $className($args);
|
61 |
+
// return self::$instances[$className];
|
62 |
+
// }else
|
63 |
+
// return self::$instances[$className];
|
64 |
+
self::includeClass($class['dir'], $class['name']);
|
65 |
+
return new $className($args);
|
66 |
+
}
|
67 |
+
throw new Exception('Could not create domain: ' . $className);
|
68 |
+
}
|
69 |
+
|
70 |
+
|
71 |
+
/**
|
72 |
+
* Check if the class is correctly set
|
73 |
+
*
|
74 |
+
* @param string $className
|
75 |
+
* @return boolean
|
76 |
+
*/
|
77 |
+
private static function checkClassPath($className) {
|
78 |
+
$path = preg_split('/[_]+/', $className);
|
79 |
+
if (is_array($path) && count($path) > 1) {
|
80 |
+
if (in_array(_SQ_NAMESPACE_, $path)) {
|
81 |
+
return true;
|
82 |
+
}
|
83 |
+
}
|
84 |
+
|
85 |
+
return false;
|
86 |
+
}
|
87 |
+
|
88 |
+
/**
|
89 |
+
* Get the path of the class and name of the class
|
90 |
+
*
|
91 |
+
* @param string $className
|
92 |
+
* @return array | boolean
|
93 |
+
* array(
|
94 |
+
* dir - absolute path of the class
|
95 |
+
* name - the name of the file
|
96 |
+
* }
|
97 |
+
*/
|
98 |
+
public static function getClassPath($className) {
|
99 |
+
$dir = '';
|
100 |
+
|
101 |
+
|
102 |
+
if (self::checkClassPath($className)) {
|
103 |
+
$path = preg_split('/[_]+/', $className);
|
104 |
+
for ($i = 1; $i < sizeof($path) - 1; $i++)
|
105 |
+
$dir .= strtolower($path[$i]) . '/';
|
106 |
+
|
107 |
+
$class = array('dir' => _SQ_ROOT_DIR_ . '/' . $dir,
|
108 |
+
'name' => $path[sizeof($path) - 1]);
|
109 |
+
|
110 |
+
if (file_exists($class['dir'] . $class['name'] . '.php')) {
|
111 |
+
return $class;
|
112 |
+
}
|
113 |
+
}
|
114 |
+
return false;
|
115 |
+
}
|
116 |
+
|
117 |
+
|
118 |
+
/**
|
119 |
+
* Deprecated since 8.0.2
|
120 |
+
* Get the instance of the specified class
|
121 |
+
*
|
122 |
+
* @param string $className
|
123 |
+
* @param bool $core TRUE is the class is a core class or FALSE if it is from classes directory
|
124 |
+
*
|
125 |
+
* @return bool|object of the class
|
126 |
+
*/
|
127 |
+
public static function getController($className, $core = true) {
|
128 |
+
if (strpos($className, 'Controllers') === false) {
|
129 |
+
$className = _SQ_NAMESPACE_ . '_Controllers_' . str_replace(_SQ_NAMESPACE_ . '_', '', $className);
|
130 |
+
}
|
131 |
+
return self::getClass($className);
|
132 |
+
}
|
133 |
+
|
134 |
+
/**
|
135 |
+
* Deprecated since 8.0.2
|
136 |
+
* Get the instance of the specified model class
|
137 |
+
*
|
138 |
+
* @param string $className
|
139 |
+
*
|
140 |
+
* @return bool|object of the class
|
141 |
+
*/
|
142 |
+
public static function getModel($className) {
|
143 |
+
if (strpos($className, 'Model') === false) {
|
144 |
+
$className = _SQ_NAMESPACE_ . '_Models_' . str_replace(_SQ_NAMESPACE_ . '_', '', $className);
|
145 |
+
}
|
146 |
+
return self::getClass($className);
|
147 |
+
}
|
148 |
+
|
149 |
+
/**
|
150 |
+
* Get the instance of the specified block from core directory
|
151 |
+
*
|
152 |
+
* @param string $className
|
153 |
+
*
|
154 |
+
* @return bool|object of the class
|
155 |
+
*/
|
156 |
+
public static function getBlock($className) {
|
157 |
+
if (strpos($className, 'Core') === false) {
|
158 |
+
$className = _SQ_NAMESPACE_ . '_Core_' . str_replace(_SQ_NAMESPACE_ . '_', '', $className);
|
159 |
+
}
|
160 |
+
return self::getClass($className);
|
161 |
+
}
|
162 |
+
|
163 |
+
/**
|
164 |
+
* Get all core classes from config.xml in core directory
|
165 |
+
* eg.SQ_Controllers_Post
|
166 |
+
* @param string $for
|
167 |
+
*/
|
168 |
+
public function getBlocks($for) {
|
169 |
+
/* if config allready in cache */
|
170 |
+
if (!isset(self::$config)) {
|
171 |
+
$config_file = _SQ_CORE_DIR_ . 'config.xml';
|
172 |
+
if (!file_exists($config_file))
|
173 |
+
return;
|
174 |
+
|
175 |
+
/* load configuration blocks data from core config files */
|
176 |
+
$data = file_get_contents($config_file);
|
177 |
+
self::$config = json_decode(json_encode((array)simplexml_load_string($data)), 1);;
|
178 |
+
}
|
179 |
+
//print_r(self::$config);
|
180 |
+
if (is_array(self::$config))
|
181 |
+
foreach (self::$config['block'] as $block) {
|
182 |
+
if ($block['active'] == 1)
|
183 |
+
if (isset($block['controllers']['controller']))
|
184 |
+
if (!is_array($block['controllers']['controller'])) {
|
185 |
+
/* if the block should load for the current controller */
|
186 |
+
if ($for == $block['controllers']['controller']) {
|
187 |
+
SQ_Classes_ObjController::getClass($block['name'])->init();
|
188 |
+
}
|
189 |
+
} else {
|
190 |
+
foreach ($block['controllers']['controller'] as $controller) {
|
191 |
+
/* if the block should load for the current controller */
|
192 |
+
if ($for == $controller) {
|
193 |
+
SQ_Classes_ObjController::getClass($block['name'])->init();
|
194 |
+
}
|
195 |
+
}
|
196 |
+
}
|
197 |
+
}
|
198 |
+
}
|
199 |
+
|
200 |
+
}
|
classes/{SQ_Ranking.php → Ranking.php}
RENAMED
@@ -3,23 +3,20 @@
|
|
3 |
/**
|
4 |
* Class for Google Ranking Record
|
5 |
*/
|
6 |
-
class
|
7 |
-
{
|
8 |
private $keyword;
|
9 |
private $post_id;
|
10 |
private $error;
|
11 |
|
12 |
//--
|
13 |
-
public function getCountry()
|
14 |
-
|
15 |
-
|
16 |
-
return SQ_Tools::$options['sq_google_country'];
|
17 |
}
|
18 |
return 'com';
|
19 |
}
|
20 |
|
21 |
-
public function getRefererCountry()
|
22 |
-
{
|
23 |
$convert_refc = array('com' => 'us', '.off.ai' => 'ai', 'com.ag' => 'ag', 'com.ar' => 'ar', 'com.au' => 'au', 'com.br' => 'br', 'com.co' => 'co', 'co.cr' => 'cr', 'com.cu' => 'cu', 'com.do' => 'do', 'com.ec' => 'ec', 'com.sv' => 'sv', 'com.fj' => 'fj', 'com.gi' => 'gi', 'com.gr' => 'gr', 'com.hk' => 'hk', 'co.hu' => 'hu', 'co.in' => 'in', 'co.im' => 'im', 'co.il' => 'il', 'com.jm' => 'jm', 'co.jp' => 'jp', 'co.je' => 'je', 'co.kr' => 'kr', 'co.ls' => 'ls', 'com.my' => 'my', 'com.mt' => 'mt', 'com.mx' => 'mx', 'com.na' => 'na', 'com.np' => 'np', 'com.ni' => 'ni', 'com.nf' => 'nf', 'com.pk' => 'pk', 'com.pa' => 'pa', 'com.py' => 'py', 'com.pe' => 'pe', 'com.ph' => 'ph', 'com.pr' => 'pr', 'com.sg' => 'sg', 'co.za' => 'za', 'com.tw' => 'tw', 'com.th' => 'th', 'com.tr' => 'tr', 'com.ua' => 'ua', 'com.uk' => 'uk', 'com.uy' => 'uy',);
|
24 |
$country = $this->getCountry();
|
25 |
if (array_key_exists($country, $convert_refc)) {
|
@@ -32,10 +29,9 @@ class SQ_Ranking extends SQ_FrontController
|
|
32 |
* Get the google language from settings
|
33 |
* @return string
|
34 |
*/
|
35 |
-
public function getLanguage()
|
36 |
-
|
37 |
-
|
38 |
-
return SQ_Tools::$options['sq_google_language'];
|
39 |
}
|
40 |
return 'en';
|
41 |
}
|
@@ -44,8 +40,7 @@ class SQ_Ranking extends SQ_FrontController
|
|
44 |
* Set the Post id
|
45 |
* @return type
|
46 |
*/
|
47 |
-
public function setPost($post_id)
|
48 |
-
{
|
49 |
$this->post_id = $post_id;
|
50 |
}
|
51 |
|
@@ -53,8 +48,7 @@ class SQ_Ranking extends SQ_FrontController
|
|
53 |
* Get the current keyword
|
54 |
* @param type $keyword
|
55 |
*/
|
56 |
-
public function setKeyword($keyword)
|
57 |
-
{
|
58 |
$this->keyword = str_replace(" ", "+", urlencode(strtolower($keyword)));
|
59 |
}
|
60 |
|
@@ -62,8 +56,7 @@ class SQ_Ranking extends SQ_FrontController
|
|
62 |
* Process Ranking on brief request
|
63 |
* @param type $return
|
64 |
*/
|
65 |
-
public function processRanking($post_id, $keyword)
|
66 |
-
{
|
67 |
$this->setPost($post_id);
|
68 |
$this->setKeyword(trim($keyword));
|
69 |
|
@@ -82,8 +75,7 @@ class SQ_Ranking extends SQ_FrontController
|
|
82 |
* @param string $language : en | local language
|
83 |
* @return boolean|int
|
84 |
*/
|
85 |
-
public function getGoogleRank()
|
86 |
-
{
|
87 |
|
88 |
@ini_set('open_basedir', null);
|
89 |
$this->error = '';
|
@@ -102,7 +94,7 @@ class SQ_Ranking extends SQ_FrontController
|
|
102 |
$arg['hl'] = $this->getLanguage();
|
103 |
//$arg['gl'] = $this->getRefererCountry();
|
104 |
|
105 |
-
if (
|
106 |
$arg['cr'] = 'country' . strtoupper($this->getRefererCountry());
|
107 |
}
|
108 |
$arg['start'] = '0';
|
@@ -212,7 +204,7 @@ class SQ_Ranking extends SQ_FrontController
|
|
212 |
$option['User-Agent'] = $user_agents[mt_rand(0, count($user_agents) - 1)];
|
213 |
$option['followlocation'] = true;
|
214 |
//Grab the remote informations from google
|
215 |
-
$response = utf8_decode(
|
216 |
|
217 |
//Check the values for block IP
|
218 |
if (strpos($response, "</h3>") === false) {
|
@@ -247,18 +239,17 @@ class SQ_Ranking extends SQ_FrontController
|
|
247 |
* Do google rank with cron
|
248 |
* @global type $wpdb
|
249 |
*/
|
250 |
-
public function processCron()
|
251 |
-
{
|
252 |
global $wpdb;
|
253 |
|
254 |
-
if (get_transient('google_blocked') !== false ||
|
255 |
return;
|
256 |
}
|
257 |
|
258 |
set_time_limit(3000);
|
259 |
/* Load the Submit Actions Handler */
|
260 |
-
|
261 |
-
|
262 |
|
263 |
//check 20 keyword at one time
|
264 |
$sql = "SELECT `post_id`, `meta_value`
|
@@ -269,7 +260,7 @@ class SQ_Ranking extends SQ_FrontController
|
|
269 |
if ($rows = $wpdb->get_results($sql)) {
|
270 |
$count = 0;
|
271 |
foreach ($rows as $row) {
|
272 |
-
if ($count >
|
273 |
break; //check only 10 keywords at the time
|
274 |
}
|
275 |
if ($row->meta_value <> '') {
|
@@ -289,7 +280,7 @@ class SQ_Ranking extends SQ_FrontController
|
|
289 |
$json->rank = $rank;
|
290 |
$json->country = $this->getCountry();
|
291 |
$json->language = $this->getLanguage();
|
292 |
-
|
293 |
}
|
294 |
set_transient('sq_rank' . $row->post_id, $rank, (60 * 60 * 24));
|
295 |
//if rank proccess has no error
|
@@ -301,7 +292,7 @@ class SQ_Ranking extends SQ_FrontController
|
|
301 |
$args['country'] = $this->getCountry();
|
302 |
$args['language'] = $this->getLanguage();
|
303 |
|
304 |
-
|
305 |
|
306 |
$count++;
|
307 |
sleep(mt_rand(20, 40));
|
@@ -315,8 +306,7 @@ class SQ_Ranking extends SQ_FrontController
|
|
315 |
* Get keyword from earlier version
|
316 |
*
|
317 |
*/
|
318 |
-
public function getKeywordHistory()
|
319 |
-
{
|
320 |
global $wpdb;
|
321 |
//Check if ranks is saved in database
|
322 |
$sql = "SELECT a.`global_rank`, a.`keyword`, a.`post_id`
|
@@ -325,19 +315,19 @@ class SQ_Ranking extends SQ_FrontController
|
|
325 |
|
326 |
if ($rows = $wpdb->get_results($sql)) {
|
327 |
foreach ($rows as $values) {
|
328 |
-
if ($json =
|
329 |
$json->keyword = urldecode($values->keyword);
|
330 |
if ($values->global_rank > 0) {
|
331 |
$json->rank = $values->global_rank;
|
332 |
}
|
333 |
-
|
334 |
} else {
|
335 |
$args = array();
|
336 |
$args['keyword'] = urldecode($values->keyword);
|
337 |
if ($values->global_rank > 0) {
|
338 |
$json->rank = $values->global_rank;
|
339 |
}
|
340 |
-
|
341 |
}
|
342 |
}
|
343 |
}
|
3 |
/**
|
4 |
* Class for Google Ranking Record
|
5 |
*/
|
6 |
+
class SQ_Classes_Ranking extends SQ_Classes_FrontController {
|
|
|
7 |
private $keyword;
|
8 |
private $post_id;
|
9 |
private $error;
|
10 |
|
11 |
//--
|
12 |
+
public function getCountry() {
|
13 |
+
if (SQ_Classes_Tools::getOption('sq_google_country') <> '') {
|
14 |
+
return SQ_Classes_Tools::getOption('sq_google_country');
|
|
|
15 |
}
|
16 |
return 'com';
|
17 |
}
|
18 |
|
19 |
+
public function getRefererCountry() {
|
|
|
20 |
$convert_refc = array('com' => 'us', '.off.ai' => 'ai', 'com.ag' => 'ag', 'com.ar' => 'ar', 'com.au' => 'au', 'com.br' => 'br', 'com.co' => 'co', 'co.cr' => 'cr', 'com.cu' => 'cu', 'com.do' => 'do', 'com.ec' => 'ec', 'com.sv' => 'sv', 'com.fj' => 'fj', 'com.gi' => 'gi', 'com.gr' => 'gr', 'com.hk' => 'hk', 'co.hu' => 'hu', 'co.in' => 'in', 'co.im' => 'im', 'co.il' => 'il', 'com.jm' => 'jm', 'co.jp' => 'jp', 'co.je' => 'je', 'co.kr' => 'kr', 'co.ls' => 'ls', 'com.my' => 'my', 'com.mt' => 'mt', 'com.mx' => 'mx', 'com.na' => 'na', 'com.np' => 'np', 'com.ni' => 'ni', 'com.nf' => 'nf', 'com.pk' => 'pk', 'com.pa' => 'pa', 'com.py' => 'py', 'com.pe' => 'pe', 'com.ph' => 'ph', 'com.pr' => 'pr', 'com.sg' => 'sg', 'co.za' => 'za', 'com.tw' => 'tw', 'com.th' => 'th', 'com.tr' => 'tr', 'com.ua' => 'ua', 'com.uk' => 'uk', 'com.uy' => 'uy',);
|
21 |
$country = $this->getCountry();
|
22 |
if (array_key_exists($country, $convert_refc)) {
|
29 |
* Get the google language from settings
|
30 |
* @return string
|
31 |
*/
|
32 |
+
public function getLanguage() {
|
33 |
+
if (SQ_Classes_Tools::getOption('sq_google_language') <> '') {
|
34 |
+
return SQ_Classes_Tools::getOption('sq_google_language');
|
|
|
35 |
}
|
36 |
return 'en';
|
37 |
}
|
40 |
* Set the Post id
|
41 |
* @return type
|
42 |
*/
|
43 |
+
public function setPost($post_id) {
|
|
|
44 |
$this->post_id = $post_id;
|
45 |
}
|
46 |
|
48 |
* Get the current keyword
|
49 |
* @param type $keyword
|
50 |
*/
|
51 |
+
public function setKeyword($keyword) {
|
|
|
52 |
$this->keyword = str_replace(" ", "+", urlencode(strtolower($keyword)));
|
53 |
}
|
54 |
|
56 |
* Process Ranking on brief request
|
57 |
* @param type $return
|
58 |
*/
|
59 |
+
public function processRanking($post_id, $keyword) {
|
|
|
60 |
$this->setPost($post_id);
|
61 |
$this->setKeyword(trim($keyword));
|
62 |
|
75 |
* @param string $language : en | local language
|
76 |
* @return boolean|int
|
77 |
*/
|
78 |
+
public function getGoogleRank() {
|
|
|
79 |
|
80 |
@ini_set('open_basedir', null);
|
81 |
$this->error = '';
|
94 |
$arg['hl'] = $this->getLanguage();
|
95 |
//$arg['gl'] = $this->getRefererCountry();
|
96 |
|
97 |
+
if (SQ_Classes_Tools::getOption('sq_google_country_strict')) {
|
98 |
$arg['cr'] = 'country' . strtoupper($this->getRefererCountry());
|
99 |
}
|
100 |
$arg['start'] = '0';
|
204 |
$option['User-Agent'] = $user_agents[mt_rand(0, count($user_agents) - 1)];
|
205 |
$option['followlocation'] = true;
|
206 |
//Grab the remote informations from google
|
207 |
+
$response = utf8_decode(SQ_Classes_Tools::sq_remote_get("https://www.google.$country/search", $arg, $option));
|
208 |
|
209 |
//Check the values for block IP
|
210 |
if (strpos($response, "</h3>") === false) {
|
239 |
* Do google rank with cron
|
240 |
* @global type $wpdb
|
241 |
*/
|
242 |
+
public function processCron() {
|
|
|
243 |
global $wpdb;
|
244 |
|
245 |
+
if (get_transient('google_blocked') !== false || SQ_Classes_Tools::getOption('sq_google_ranksperhour') == 0) {
|
246 |
return;
|
247 |
}
|
248 |
|
249 |
set_time_limit(3000);
|
250 |
/* Load the Submit Actions Handler */
|
251 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_Tools');
|
252 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_Action');
|
253 |
|
254 |
//check 20 keyword at one time
|
255 |
$sql = "SELECT `post_id`, `meta_value`
|
260 |
if ($rows = $wpdb->get_results($sql)) {
|
261 |
$count = 0;
|
262 |
foreach ($rows as $row) {
|
263 |
+
if ($count > SQ_Classes_Tools::getOption('sq_google_ranksperhour')) {
|
264 |
break; //check only 10 keywords at the time
|
265 |
}
|
266 |
if ($row->meta_value <> '') {
|
280 |
$json->rank = $rank;
|
281 |
$json->country = $this->getCountry();
|
282 |
$json->language = $this->getLanguage();
|
283 |
+
SQ_Classes_ObjController::getClass('SQ_Models_Post')->saveKeyword($row->post_id, $json);
|
284 |
}
|
285 |
set_transient('sq_rank' . $row->post_id, $rank, (60 * 60 * 24));
|
286 |
//if rank proccess has no error
|
292 |
$args['country'] = $this->getCountry();
|
293 |
$args['language'] = $this->getLanguage();
|
294 |
|
295 |
+
SQ_Classes_Action::apiCall('sq/user-analytics/saveserp', $args);
|
296 |
|
297 |
$count++;
|
298 |
sleep(mt_rand(20, 40));
|
306 |
* Get keyword from earlier version
|
307 |
*
|
308 |
*/
|
309 |
+
public function getKeywordHistory() {
|
|
|
310 |
global $wpdb;
|
311 |
//Check if ranks is saved in database
|
312 |
$sql = "SELECT a.`global_rank`, a.`keyword`, a.`post_id`
|
315 |
|
316 |
if ($rows = $wpdb->get_results($sql)) {
|
317 |
foreach ($rows as $values) {
|
318 |
+
if ($json = SQ_Classes_ObjController::getClass('SQ_Models_Post')->getKeyword($values->post_id)) {
|
319 |
$json->keyword = urldecode($values->keyword);
|
320 |
if ($values->global_rank > 0) {
|
321 |
$json->rank = $values->global_rank;
|
322 |
}
|
323 |
+
SQ_Classes_ObjController::getClass('SQ_Models_Post')->saveKeyword($values->post_id, $json);
|
324 |
} else {
|
325 |
$args = array();
|
326 |
$args['keyword'] = urldecode($values->keyword);
|
327 |
if ($values->global_rank > 0) {
|
328 |
$json->rank = $values->global_rank;
|
329 |
}
|
330 |
+
SQ_Classes_ObjController::getClass('SQ_Models_Post')->saveKeyword($values->post_id, json_decode(json_encode($args)));
|
331 |
}
|
332 |
}
|
333 |
}
|
classes/SQ_BlockController.php
DELETED
@@ -1,95 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/**
|
4 |
-
* The main class for core blocks
|
5 |
-
*
|
6 |
-
*/
|
7 |
-
class SQ_BlockController {
|
8 |
-
|
9 |
-
/** @var object of the model class */
|
10 |
-
protected $model;
|
11 |
-
|
12 |
-
/** @var boolean */
|
13 |
-
public $flush = true;
|
14 |
-
|
15 |
-
/** @var object of the view class */
|
16 |
-
protected $view;
|
17 |
-
|
18 |
-
/** @var name of the class */
|
19 |
-
private $name;
|
20 |
-
|
21 |
-
public function __construct() {
|
22 |
-
/** check the admin condition */
|
23 |
-
if (!is_admin())
|
24 |
-
return;
|
25 |
-
|
26 |
-
/* get the name of the current class */
|
27 |
-
$this->name = get_class($this);
|
28 |
-
|
29 |
-
/* create the model and view instances */
|
30 |
-
$this->model = SQ_ObjController::getModel($this->name);
|
31 |
-
}
|
32 |
-
|
33 |
-
/**
|
34 |
-
* load sequence of classes
|
35 |
-
*
|
36 |
-
* @return void
|
37 |
-
*/
|
38 |
-
public function init() {
|
39 |
-
|
40 |
-
$this->view = SQ_ObjController::getController('SQ_DisplayController', false);
|
41 |
-
$this->view->setBlock($this->name);
|
42 |
-
|
43 |
-
/* check if there is a hook defined in the block class */
|
44 |
-
SQ_ObjController::getController('SQ_HookController', false)
|
45 |
-
->setBlockHooks($this);
|
46 |
-
|
47 |
-
if ($this->flush) {
|
48 |
-
echo $this->output();
|
49 |
-
} else {
|
50 |
-
return $this->output();
|
51 |
-
}
|
52 |
-
}
|
53 |
-
|
54 |
-
protected function output() {
|
55 |
-
$this->hookHead();
|
56 |
-
return $this->view->echoBlock($this);
|
57 |
-
}
|
58 |
-
|
59 |
-
public function preloadSettings() {
|
60 |
-
|
61 |
-
echo '<script type="text/javascript">
|
62 |
-
var __blog_url = "' . get_bloginfo('url') . '";
|
63 |
-
var __token = "' . SQ_Tools::$options['sq_api'] . '";
|
64 |
-
var __api_url = "' . _SQ_API_URL_ . '";
|
65 |
-
jQuery(document).ready(function () {
|
66 |
-
sq_getHelp("' . str_replace("sq_block", "", strtolower($this->name)) . '", "content");
|
67 |
-
});
|
68 |
-
</script>';
|
69 |
-
}
|
70 |
-
|
71 |
-
/**
|
72 |
-
* This function is called from Ajax class as a wp_ajax_action
|
73 |
-
*
|
74 |
-
*/
|
75 |
-
protected function action() {
|
76 |
-
// check to see if the submitted nonce matches with the
|
77 |
-
// generated nonce we created
|
78 |
-
if (function_exists('wp_verify_nonce'))
|
79 |
-
if (!wp_verify_nonce(SQ_Tools::getValue('nonce'), _SQ_NONCE_ID_))
|
80 |
-
die('Invalid request!');
|
81 |
-
}
|
82 |
-
|
83 |
-
/**
|
84 |
-
* This function will load the media in the header for each class
|
85 |
-
*
|
86 |
-
* @return void
|
87 |
-
*/
|
88 |
-
protected function hookHead() {
|
89 |
-
if (!is_admin())
|
90 |
-
return;
|
91 |
-
SQ_ObjController::getController('SQ_DisplayController', false)
|
92 |
-
->loadMedia($this->name);
|
93 |
-
}
|
94 |
-
|
95 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
classes/SQ_FrontController.php
DELETED
@@ -1,123 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/**
|
4 |
-
* The main class for controllers
|
5 |
-
*
|
6 |
-
*/
|
7 |
-
class SQ_FrontController {
|
8 |
-
|
9 |
-
/** @var object of the model class */
|
10 |
-
public $model;
|
11 |
-
|
12 |
-
/** @var boolean */
|
13 |
-
public $flush = true;
|
14 |
-
|
15 |
-
/** @var object of the view class */
|
16 |
-
public $view;
|
17 |
-
|
18 |
-
/** @var name of the class */
|
19 |
-
private $name;
|
20 |
-
|
21 |
-
public function __construct() {
|
22 |
-
|
23 |
-
/* get the name of the current class */
|
24 |
-
$this->name = get_class($this);
|
25 |
-
|
26 |
-
|
27 |
-
/* load the model and hooks here for wordpress actions to take efect */
|
28 |
-
/* create the model and view instances */
|
29 |
-
$this->model = SQ_ObjController::getModel($this->name);
|
30 |
-
|
31 |
-
//IMPORTANT TO LOAD HOOKS HERE
|
32 |
-
/* check if there is a hook defined in the controller clients class */
|
33 |
-
SQ_ObjController::getController('SQ_HookController', false)->setAdminHooks($this);
|
34 |
-
}
|
35 |
-
|
36 |
-
/**
|
37 |
-
* load sequence of classes
|
38 |
-
* Function called usualy when the controller is loaded in WP
|
39 |
-
*
|
40 |
-
* @return void
|
41 |
-
*/
|
42 |
-
public function init() {
|
43 |
-
|
44 |
-
$this->view = SQ_ObjController::getController('SQ_DisplayController', false);
|
45 |
-
$this->view->setBlock($this->name);
|
46 |
-
|
47 |
-
|
48 |
-
/* load the blocks for this controller */
|
49 |
-
SQ_ObjController::getController('SQ_ObjController', false)->getBlocks($this->name);
|
50 |
-
|
51 |
-
if ($this->flush) {
|
52 |
-
echo $this->output();
|
53 |
-
} else {
|
54 |
-
return $this->output();
|
55 |
-
}
|
56 |
-
}
|
57 |
-
|
58 |
-
protected function output() {
|
59 |
-
$this->hookHead();
|
60 |
-
return $this->view->echoBlock($this);
|
61 |
-
}
|
62 |
-
|
63 |
-
/**
|
64 |
-
* initialize settings
|
65 |
-
* Called from index
|
66 |
-
*
|
67 |
-
* @return void
|
68 |
-
*/
|
69 |
-
public function run() {
|
70 |
-
|
71 |
-
/* Load error class */
|
72 |
-
SQ_ObjController::getController('SQ_Error', false);
|
73 |
-
/* Load Tools */
|
74 |
-
SQ_ObjController::getController('SQ_Tools', false);
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
/* Load the Submit Actions Handler */
|
79 |
-
SQ_ObjController::getController('SQ_Action', false);
|
80 |
-
|
81 |
-
SQ_ObjController::getController('SQ_DisplayController', false);
|
82 |
-
|
83 |
-
/* show the admin menu and post actions */
|
84 |
-
$this->loadMenu();
|
85 |
-
}
|
86 |
-
|
87 |
-
/**
|
88 |
-
* initialize menu
|
89 |
-
*
|
90 |
-
* @return void
|
91 |
-
*/
|
92 |
-
private function loadMenu() {
|
93 |
-
/* get the menu from controller */
|
94 |
-
SQ_ObjController::getController('SQ_Menu');
|
95 |
-
}
|
96 |
-
|
97 |
-
/**
|
98 |
-
* first function call for any class
|
99 |
-
*
|
100 |
-
*/
|
101 |
-
protected function action() {
|
102 |
-
|
103 |
-
// check to see if the submitted nonce matches with the
|
104 |
-
// generated nonce we created
|
105 |
-
if (function_exists('wp_verify_nonce'))
|
106 |
-
if (!wp_verify_nonce(SQ_Tools::getValue('nonce'), _SQ_NONCE_ID_))
|
107 |
-
die('Invalid request!');
|
108 |
-
}
|
109 |
-
|
110 |
-
/**
|
111 |
-
* This function will load the media in the header for each class
|
112 |
-
*
|
113 |
-
* @return void
|
114 |
-
*/
|
115 |
-
public function hookHead() {
|
116 |
-
if (!is_admin())
|
117 |
-
return;
|
118 |
-
SQ_ObjController::getController('SQ_DisplayController', false)->init();
|
119 |
-
SQ_ObjController::getController('SQ_DisplayController', false)
|
120 |
-
->loadMedia($this->name);
|
121 |
-
}
|
122 |
-
|
123 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
classes/SQ_ObjController.php
DELETED
@@ -1,197 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/**
|
4 |
-
* The class creates object for plugin classes
|
5 |
-
*/
|
6 |
-
class SQ_ObjController {
|
7 |
-
|
8 |
-
/** @var array of instances */
|
9 |
-
public static $instances;
|
10 |
-
|
11 |
-
/** @var array from core config */
|
12 |
-
private static $config;
|
13 |
-
|
14 |
-
private static function includeController($className, $core) {
|
15 |
-
/* check if class is already defined */
|
16 |
-
if (!class_exists($className, false))
|
17 |
-
/* if $core == true then call the class from core directory */
|
18 |
-
try {
|
19 |
-
if (file_exists(($core ? _SQ_CONTROLLER_DIR_ : _SQ_CLASSES_DIR_) . $className . '.php'))
|
20 |
-
include_once(($core ? _SQ_CONTROLLER_DIR_ : _SQ_CLASSES_DIR_) . $className . '.php');
|
21 |
-
} catch (Exception $e) {
|
22 |
-
echo 'Controller Error: ' . $e->getMessage();
|
23 |
-
}
|
24 |
-
}
|
25 |
-
|
26 |
-
/**
|
27 |
-
* Get the instance of the specified class
|
28 |
-
*
|
29 |
-
* @param string $className
|
30 |
-
* @param bool $core TRUE is the class is a core class or FALSE if it is from classes directory
|
31 |
-
*
|
32 |
-
* @return bool|object of the class
|
33 |
-
*/
|
34 |
-
public static function getController($className, $core = true) {
|
35 |
-
if (!isset(self::$instances[$className])) {
|
36 |
-
/* if $core == true then call the class from core directory */
|
37 |
-
self::includeController($className, $core);
|
38 |
-
|
39 |
-
if (class_exists($className)) {
|
40 |
-
self::$instances[$className] = new $className;
|
41 |
-
return self::$instances[$className];
|
42 |
-
}
|
43 |
-
} else
|
44 |
-
return self::$instances[$className];
|
45 |
-
|
46 |
-
return false;
|
47 |
-
}
|
48 |
-
|
49 |
-
private static function includeModel($className) {
|
50 |
-
|
51 |
-
/* check if class is already defined */
|
52 |
-
if (file_exists(_SQ_MODEL_DIR_ . $className . '.php'))
|
53 |
-
try {
|
54 |
-
include_once(_SQ_MODEL_DIR_ . $className . '.php');
|
55 |
-
} catch (Exception $e) {
|
56 |
-
echo 'Model Error: ' . $e->getMessage();
|
57 |
-
}
|
58 |
-
}
|
59 |
-
|
60 |
-
/**
|
61 |
-
* Get the instance of the specified model class
|
62 |
-
*
|
63 |
-
* @param string $className
|
64 |
-
*
|
65 |
-
* @return bool|object of the class
|
66 |
-
*/
|
67 |
-
public static function getModel($className) {
|
68 |
-
/* add Model prefix */
|
69 |
-
$prefix = 'Model_';
|
70 |
-
|
71 |
-
if (!isset(self::$instances[$prefix . $className])) {
|
72 |
-
/* if $core == true then call the class from core directory */
|
73 |
-
self::includeModel($className);
|
74 |
-
|
75 |
-
//echo $className . '<br />';
|
76 |
-
if (class_exists($prefix . $className)) {
|
77 |
-
$classModel = $prefix . $className;
|
78 |
-
self::$instances[$prefix . $className] = new $classModel;
|
79 |
-
return self::$instances[$prefix . $className];
|
80 |
-
}
|
81 |
-
} else
|
82 |
-
return self::$instances[$prefix . $className];
|
83 |
-
|
84 |
-
return false;
|
85 |
-
}
|
86 |
-
|
87 |
-
private static function includeModelService($className) {
|
88 |
-
|
89 |
-
/* check if class is already defined */
|
90 |
-
if (file_exists(_SQ_SERVICE_DIR_ . $className . '.php'))
|
91 |
-
try {
|
92 |
-
include_once(_SQ_SERVICE_DIR_ . $className . '.php');
|
93 |
-
} catch (Exception $e) {
|
94 |
-
echo 'Model Service Error: ' . $e->getMessage();
|
95 |
-
}
|
96 |
-
}
|
97 |
-
|
98 |
-
/**
|
99 |
-
* Get the instance of the specified model service class
|
100 |
-
*
|
101 |
-
* @param string $className
|
102 |
-
*
|
103 |
-
* @return bool|object of the class
|
104 |
-
*/
|
105 |
-
public static function getModelService($className) {
|
106 |
-
/* add Model_Service prefix */
|
107 |
-
$prefix = 'Model_Service_';
|
108 |
-
|
109 |
-
if (!isset(self::$instances[$prefix . $className])) {
|
110 |
-
/* if $core == true then call the class from core directory */
|
111 |
-
self::includeModelService($className);
|
112 |
-
|
113 |
-
//echo $className . '<br />';
|
114 |
-
if (class_exists($prefix . $className)) {
|
115 |
-
$classModel = $prefix . $className;
|
116 |
-
self::$instances[$prefix . $className] = new $classModel;
|
117 |
-
return self::$instances[$prefix . $className];
|
118 |
-
}
|
119 |
-
} else
|
120 |
-
return self::$instances[$prefix . $className];
|
121 |
-
|
122 |
-
return false;
|
123 |
-
}
|
124 |
-
|
125 |
-
private static function includeBlock($className) {
|
126 |
-
|
127 |
-
/* check if class is already defined */
|
128 |
-
try {
|
129 |
-
require_once(_SQ_CORE_DIR_ . $className . '/' . $className . '.php');
|
130 |
-
} catch (Exception $e) {
|
131 |
-
echo 'Model Error: ' . $e->getMessage();
|
132 |
-
}
|
133 |
-
}
|
134 |
-
|
135 |
-
/**
|
136 |
-
* Get the instance of the specified block from core directory
|
137 |
-
*
|
138 |
-
* @param string $className
|
139 |
-
*
|
140 |
-
* @return bool|object of the class
|
141 |
-
*/
|
142 |
-
public static function getBlock($className) {
|
143 |
-
|
144 |
-
if (!isset(self::$instances[$className])) {
|
145 |
-
/* if $core == true then call the class from core directory */
|
146 |
-
self::includeBlock($className);
|
147 |
-
|
148 |
-
//echo $className . '<br />';
|
149 |
-
if (class_exists($className)) {
|
150 |
-
self::$instances[$className] = new $className;
|
151 |
-
return self::$instances[$className];
|
152 |
-
} else
|
153 |
-
exit("Block error: Can't call $className class");
|
154 |
-
} else
|
155 |
-
return self::$instances[$className];
|
156 |
-
|
157 |
-
return false;
|
158 |
-
}
|
159 |
-
|
160 |
-
/**
|
161 |
-
* Get all core classes from config.xml in core directory
|
162 |
-
*
|
163 |
-
* @param string $for
|
164 |
-
*/
|
165 |
-
public function getBlocks($for) {
|
166 |
-
/* if config allready in cache */
|
167 |
-
if (!isset(self::$config)) {
|
168 |
-
$config_file = _SQ_CORE_DIR_ . 'config.xml';
|
169 |
-
if (!file_exists($config_file))
|
170 |
-
return;
|
171 |
-
|
172 |
-
/* load configuration blocks data from core config files */
|
173 |
-
$data = file_get_contents($config_file);
|
174 |
-
self::$config = json_decode(json_encode((array)simplexml_load_string($data)), 1);;
|
175 |
-
}
|
176 |
-
//print_r(self::$config);
|
177 |
-
if (is_array(self::$config))
|
178 |
-
foreach (self::$config['block'] as $block) {
|
179 |
-
if ($block['active'] == 1)
|
180 |
-
if (isset($block['controllers']['controller']))
|
181 |
-
if (!is_array($block['controllers']['controller'])) {
|
182 |
-
/* if the block should load for the current controller */
|
183 |
-
if ($for == $block['controllers']['controller']) {
|
184 |
-
SQ_ObjController::getBlock($block['name'])->init();
|
185 |
-
}
|
186 |
-
} else {
|
187 |
-
foreach ($block['controllers']['controller'] as $controller) {
|
188 |
-
/* if the block should load for the current controller */
|
189 |
-
if ($for == $controller) {
|
190 |
-
SQ_ObjController::getBlock($block['name'])->init();
|
191 |
-
}
|
192 |
-
}
|
193 |
-
}
|
194 |
-
}
|
195 |
-
}
|
196 |
-
|
197 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
classes/SQ_Traffic.php
DELETED
@@ -1,8 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/**
|
4 |
-
* Class for Traffic Record
|
5 |
-
*/
|
6 |
-
class SQ_Traffic extends SQ_FrontController {
|
7 |
-
|
8 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
classes/{SQ_Tools.php → Tools.php}
RENAMED
@@ -5,10 +5,11 @@
|
|
5 |
*
|
6 |
* @author Squirrly
|
7 |
*/
|
8 |
-
class
|
9 |
|
10 |
/** @var array Saved options in database */
|
11 |
public static $options = array();
|
|
|
12 |
|
13 |
/** @var integer Count the errors in site */
|
14 |
static $errors_count;
|
@@ -16,13 +17,14 @@ class SQ_Tools extends SQ_FrontController {
|
|
16 |
/** @var array */
|
17 |
private static $debug;
|
18 |
private static $source_code;
|
|
|
19 |
|
20 |
public function __construct() {
|
21 |
parent::__construct();
|
22 |
|
23 |
self::$options = $this->getOptions();
|
24 |
|
25 |
-
|
26 |
}
|
27 |
|
28 |
public static function getUserID() {
|
@@ -66,13 +68,16 @@ class SQ_Tools extends SQ_FrontController {
|
|
66 |
*
|
67 |
* @return array
|
68 |
*/
|
69 |
-
public static function getOptions() {
|
70 |
$default = array(
|
71 |
'sq_ver' => 0,
|
|
|
72 |
'sq_api' => '',
|
73 |
'sq_checkedissues' => 0,
|
74 |
'sq_areissues' => 0,
|
75 |
'sq_use' => 1,
|
|
|
|
|
76 |
'sq_post_types' => array(
|
77 |
'post', 'page', 'product', 'shopp_page_shopp-products'
|
78 |
),
|
@@ -80,6 +85,7 @@ class SQ_Tools extends SQ_FrontController {
|
|
80 |
'sq_auto_canonical' => 1,
|
81 |
'sq_auto_sitemap' => 0,
|
82 |
'sq_auto_feed' => 0,
|
|
|
83 |
'sq_auto_jsonld' => 0,
|
84 |
'sq_auto_amp' => 0,
|
85 |
'sq_jsonld_type' => 'Organization',
|
@@ -103,6 +109,7 @@ class SQ_Tools extends SQ_FrontController {
|
|
103 |
'images' => 1,
|
104 |
'videos' => 0,
|
105 |
),
|
|
|
106 |
'sq_sitemap_frequency' => 'weekly',
|
107 |
'sq_sitemap' => array(
|
108 |
'sitemap' => array('sitemap.xml', 1),
|
@@ -131,38 +138,20 @@ class SQ_Tools extends SQ_FrontController {
|
|
131 |
'sq_auto_favicon' => 0,
|
132 |
'favicon' => '',
|
133 |
'sq_auto_twitter' => 0,
|
134 |
-
'sq_auto_twittersize' => 'summary',
|
135 |
'sq_auto_facebook' => 0,
|
136 |
'sq_og_locale' => 'en_US',
|
137 |
-
'sq_twitter_account' => '',
|
138 |
-
'sq_facebook_account' => '',
|
139 |
-
'sq_google_plus' => '',
|
140 |
-
'sq_linkedin_account' => '',
|
141 |
-
'sq_pinterest_account' => '',
|
142 |
-
'sq_instagram_account' => '',
|
143 |
// --
|
144 |
-
'sq_auto_seo' => 1,
|
145 |
'sq_auto_title' => 1,
|
146 |
'sq_auto_description' => 1,
|
147 |
-
'
|
148 |
-
'sq_fp_description' => '',
|
149 |
-
'sq_fp_keywords' => '',
|
150 |
-
'sq_fp_ogimage' => '',
|
151 |
-
// --
|
152 |
-
'sq_google_wt' => '',
|
153 |
-
'sq_google_analytics' => '',
|
154 |
-
'sq_facebook_analytics' => '',
|
155 |
-
'sq_facebook_insights' => '',
|
156 |
-
'sq_bing_wt' => '',
|
157 |
-
'sq_pinterest' => '',
|
158 |
-
'sq_alexa' => '',
|
159 |
// --
|
160 |
'active_help' => '',
|
161 |
'ignore_warn' => 0,
|
|
|
162 |
'sq_keyword_help' => 1,
|
163 |
'sq_keyword_information' => 0,
|
164 |
'sq_url_fix' => 1,
|
165 |
-
//
|
166 |
'sq_google_country' => 'com',
|
167 |
'sq_google_language' => 'en',
|
168 |
'sq_google_country_strict' => 0,
|
@@ -176,9 +165,198 @@ class SQ_Tools extends SQ_FrontController {
|
|
176 |
//--
|
177 |
'sq_dashboard' => 0,
|
178 |
'sq_analytics' => 0,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
179 |
);
|
180 |
$options = json_decode(get_option(SQ_OPTION), true);
|
181 |
|
|
|
|
|
|
|
|
|
|
|
|
|
182 |
if (is_array($options)) {
|
183 |
$options = @array_merge($default, $options);
|
184 |
return $options;
|
@@ -187,48 +365,139 @@ class SQ_Tools extends SQ_FrontController {
|
|
187 |
return $default;
|
188 |
}
|
189 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
190 |
/**
|
191 |
* Send completed tasks from tutorial
|
192 |
* @return array
|
193 |
*/
|
194 |
public static function getBriefOptions() {
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
$title = SQ_Tools::$options['sq_fp_title'];
|
200 |
-
$description = SQ_Tools::$options['sq_fp_description'];
|
201 |
-
}
|
202 |
return array(
|
203 |
'sq_version' => SQ_VERSION_ID,
|
204 |
-
'sq_use' =>
|
205 |
-
'
|
206 |
-
'
|
207 |
-
'
|
208 |
-
'
|
209 |
-
'
|
210 |
-
'
|
211 |
-
'
|
212 |
-
'
|
213 |
-
'
|
214 |
-
'
|
215 |
-
'
|
216 |
-
'
|
217 |
-
'
|
218 |
-
'
|
219 |
-
'
|
220 |
-
'
|
221 |
-
'
|
222 |
-
'
|
223 |
-
'
|
224 |
-
'
|
225 |
-
'
|
226 |
-
'
|
227 |
-
'
|
228 |
-
'
|
229 |
-
'
|
230 |
-
'
|
|
|
|
|
|
|
231 |
);
|
|
|
232 |
}
|
233 |
|
234 |
/**
|
@@ -246,11 +515,15 @@ class SQ_Tools extends SQ_FrontController {
|
|
246 |
|
247 |
/**
|
248 |
* Set the header type
|
249 |
-
* @param
|
250 |
*/
|
251 |
public static function setHeader($type) {
|
252 |
-
if (
|
|
|
|
|
|
|
253 |
return;
|
|
|
254 |
|
255 |
switch ($type) {
|
256 |
case 'json':
|
@@ -265,6 +538,9 @@ class SQ_Tools extends SQ_FrontController {
|
|
265 |
case'text':
|
266 |
header("Content-type: text/plain");
|
267 |
break;
|
|
|
|
|
|
|
268 |
}
|
269 |
}
|
270 |
|
@@ -303,12 +579,12 @@ class SQ_Tools extends SQ_FrontController {
|
|
303 |
/**
|
304 |
* Show the notices to WP
|
305 |
*
|
306 |
-
* @return
|
307 |
*/
|
308 |
public static function showNotices($message, $type = 'sq_notices') {
|
309 |
-
if (file_exists(_SQ_THEME_DIR_ . '
|
310 |
ob_start();
|
311 |
-
include(_SQ_THEME_DIR_ . '
|
312 |
$message = ob_get_contents();
|
313 |
ob_end_clean();
|
314 |
}
|
@@ -540,7 +816,7 @@ class SQ_Tools extends SQ_FrontController {
|
|
540 |
if (function_exists('curl_exec')) {
|
541 |
$ch = curl_init($url);
|
542 |
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
543 |
-
curl_setopt($ch, CURLOPT_TIMEOUT,
|
544 |
curl_exec($ch);
|
545 |
|
546 |
$response['headers']['content-type'] = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
|
@@ -578,13 +854,13 @@ class SQ_Tools extends SQ_FrontController {
|
|
578 |
public static function checkErrorSettings($count_only = false) {
|
579 |
if (current_user_can('manage_options')) {
|
580 |
|
581 |
-
$fixit = "<a href=\"javascript:void(0);\" onclick=\"%
|
582 |
|
583 |
/* IF SEO INDEX IS OFF */
|
584 |
if (self::getAutoSeoSquirrly()) {
|
585 |
self::$errors_count++;
|
586 |
if (!$count_only) {
|
587 |
-
|
588 |
}
|
589 |
}
|
590 |
|
@@ -595,7 +871,7 @@ class SQ_Tools extends SQ_FrontController {
|
|
595 |
if (self::getDuplicateTitle()) {
|
596 |
self::$errors_count++;
|
597 |
if (!$count_only) {
|
598 |
-
|
599 |
}
|
600 |
}
|
601 |
|
@@ -603,7 +879,7 @@ class SQ_Tools extends SQ_FrontController {
|
|
603 |
if (self::getDuplicateDescription()) {
|
604 |
self::$errors_count++;
|
605 |
if (!$count_only) {
|
606 |
-
|
607 |
}
|
608 |
}
|
609 |
|
@@ -611,7 +887,7 @@ class SQ_Tools extends SQ_FrontController {
|
|
611 |
if (self::getDuplicateOG()) {
|
612 |
self::$errors_count++;
|
613 |
if (!$count_only) {
|
614 |
-
|
615 |
}
|
616 |
}
|
617 |
|
@@ -619,7 +895,7 @@ class SQ_Tools extends SQ_FrontController {
|
|
619 |
if (self::getDuplicateTC()) {
|
620 |
self::$errors_count++;
|
621 |
if (!$count_only) {
|
622 |
-
|
623 |
}
|
624 |
}
|
625 |
}
|
@@ -628,20 +904,27 @@ class SQ_Tools extends SQ_FrontController {
|
|
628 |
if (self::getPrivateBlog()) {
|
629 |
self::$errors_count++;
|
630 |
if (!$count_only) {
|
631 |
-
|
632 |
}
|
633 |
}
|
634 |
|
635 |
if (self::getBadLinkStructure()) {
|
636 |
self::$errors_count++;
|
637 |
if (!$count_only) {
|
638 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
639 |
}
|
640 |
}
|
641 |
|
642 |
if (self::$errors_count == 0) {
|
643 |
self::saveOptions('sq_areissues', 0);
|
644 |
-
|
645 |
} else {
|
646 |
self::saveOptions('sq_areissues', 1);
|
647 |
}
|
@@ -653,10 +936,7 @@ class SQ_Tools extends SQ_FrontController {
|
|
653 |
* @return bool
|
654 |
*/
|
655 |
private static function getAutoSeoSquirrly() {
|
656 |
-
|
657 |
-
return ((int)self::$options['sq_use'] == 0);
|
658 |
-
|
659 |
-
return true;
|
660 |
}
|
661 |
|
662 |
/**
|
@@ -668,7 +948,7 @@ class SQ_Tools extends SQ_FrontController {
|
|
668 |
return false;
|
669 |
}
|
670 |
|
671 |
-
if (self
|
672 |
|
673 |
if (self::$source_code <> '') {
|
674 |
preg_match_all("/<meta[\s+]property=[\"|\']og:url[\"|\'][\s+](content|value)=[\"|\']([^>]*)[\"|\'][^>]*>/i", self::$source_code, $out);
|
@@ -690,7 +970,7 @@ class SQ_Tools extends SQ_FrontController {
|
|
690 |
return false;
|
691 |
}
|
692 |
|
693 |
-
if (self
|
694 |
|
695 |
if (self::$source_code <> '') {
|
696 |
preg_match_all("/<meta[\s+]name=[\"|\']twitter:card[\"|\'][\s+](content|value)=[\"|\']([^>]*)[\"|\'][^>]*>/i", self::$source_code, $out);
|
@@ -713,7 +993,7 @@ class SQ_Tools extends SQ_FrontController {
|
|
713 |
}
|
714 |
$total = 0;
|
715 |
|
716 |
-
if (self
|
717 |
if (self::$source_code <> '') {
|
718 |
preg_match_all("/<meta[^>]*name=[\"|\']description[\"|\'][^>]*content=[\"]([^\"]*)[\"][^>]*>/i", self::$source_code, $out);
|
719 |
if (!empty($out) && isset($out[0]) && is_array($out[0])) {
|
@@ -739,7 +1019,7 @@ class SQ_Tools extends SQ_FrontController {
|
|
739 |
}
|
740 |
$total = 0;
|
741 |
|
742 |
-
if (self
|
743 |
if (self::$source_code <> '') {
|
744 |
preg_match_all("/<title[^>]*>(.*)?<\/title>/i", self::$source_code, $out);
|
745 |
|
@@ -786,6 +1066,13 @@ class SQ_Tools extends SQ_FrontController {
|
|
786 |
}
|
787 |
}
|
788 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
789 |
/**
|
790 |
* Support for i18n with wpml, polyglot or qtrans
|
791 |
*
|
@@ -819,6 +1106,47 @@ class SQ_Tools extends SQ_FrontController {
|
|
819 |
return apply_filters('number_format_i18n', $formatted);
|
820 |
}
|
821 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
822 |
public static function getBrowserInfo() {
|
823 |
$ub = '';
|
824 |
$u_agent = $_SERVER['HTTP_USER_AGENT'];
|
@@ -882,34 +1210,41 @@ class SQ_Tools extends SQ_FrontController {
|
|
882 |
/**
|
883 |
*
|
884 |
* @param string $url
|
885 |
-
* @return array
|
886 |
*/
|
887 |
public static function getSnippet($url) {
|
888 |
if ($url == '' || !function_exists('preg_match')) {
|
889 |
-
return;
|
890 |
}
|
891 |
|
892 |
-
|
|
|
893 |
$snippet = array();
|
894 |
-
$frontend = SQ_ObjController::getModel('SQ_Frontend');
|
895 |
|
896 |
-
if ($
|
897 |
-
$
|
|
|
|
|
|
|
898 |
}
|
899 |
|
900 |
-
if ($postid > 0) {
|
901 |
-
$frontend->setPost(get_post($postid));
|
902 |
-
$snippet['title'] = $frontend->getTitle();
|
903 |
-
$snippet['description'] = $frontend->getDescription();
|
904 |
-
$snippet['url'] = $url;
|
905 |
-
} elseif ($url == get_bloginfo('url')) {
|
906 |
-
if (self::$options ['sq_auto_title'] == 1) {
|
907 |
-
$snippet['title'] = self::$options['sq_fp_title'];
|
908 |
-
}
|
909 |
-
if (self::$options['sq_auto_description'] == 1) {
|
910 |
-
$snippet['description'] = self::$options['sq_fp_description'];
|
911 |
-
}
|
912 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
913 |
$snippet['url'] = $url;
|
914 |
} else {
|
915 |
$length = array('title' => 66,
|
@@ -935,7 +1270,7 @@ class SQ_Tools extends SQ_FrontController {
|
|
935 |
$snippet['description'] = substr($snippet['description'], 0, ($length['description'] - 1)) . '...';
|
936 |
}
|
937 |
|
938 |
-
$snippet['url'] = $url;
|
939 |
if (strlen($snippet['url']) > $length['url'])
|
940 |
$snippet['url'] = substr($snippet['url'], 0, ($length['url'] - 1)) . '...';
|
941 |
|
@@ -950,13 +1285,7 @@ class SQ_Tools extends SQ_FrontController {
|
|
950 |
*/
|
951 |
private function checkDebug() {
|
952 |
//if debug is called
|
953 |
-
if (self::getIsset('sq_debug')) {
|
954 |
-
if (self::getValue('sq_debug') == self::$options['sq_api']) {
|
955 |
-
$_GET['sq_debug'] = 'on';
|
956 |
-
} else {
|
957 |
-
$_GET['sq_debug'] = 'off';
|
958 |
-
}
|
959 |
-
|
960 |
if (self::getValue('sq_debug') === 'on') {
|
961 |
if (function_exists('register_shutdown_function')) {
|
962 |
register_shutdown_function(array($this, 'showDebug'));
|
@@ -1015,7 +1344,6 @@ class SQ_Tools extends SQ_FrontController {
|
|
1015 |
* Show the debug dump
|
1016 |
*/
|
1017 |
public static function showDebug() {
|
1018 |
-
global $wp_query;
|
1019 |
echo "Debug result: <br />" . '<div id="wpcontent">' . @implode('<br />', self::$debug) . '</div>';
|
1020 |
|
1021 |
$run_time = number_format(microtime(true) - REQUEST_TIME, 3);
|
@@ -1031,6 +1359,7 @@ class SQ_Tools extends SQ_FrontController {
|
|
1031 |
public function sq_activate() {
|
1032 |
set_transient('sq_activate', true);
|
1033 |
set_transient('sq_rewrite', true);
|
|
|
1034 |
}
|
1035 |
|
1036 |
public function sq_deactivate() {
|
@@ -1039,9 +1368,9 @@ class SQ_Tools extends SQ_FrontController {
|
|
1039 |
|
1040 |
$args = array();
|
1041 |
$args['type'] = 'deact';
|
1042 |
-
|
1043 |
|
1044 |
-
remove_filter('rewrite_rules_array', array(
|
1045 |
global $wp_rewrite;
|
1046 |
$wp_rewrite->flush_rules();
|
1047 |
}
|
@@ -1064,7 +1393,7 @@ class SQ_Tools extends SQ_FrontController {
|
|
1064 |
}
|
1065 |
|
1066 |
public static function checkUpgrade() {
|
1067 |
-
if (self
|
1068 |
//Delete the old versions table
|
1069 |
global $wpdb;
|
1070 |
$wpdb->query("UPDATE " . $wpdb->postmeta . " SET `meta_key` = '_sq_fp_title' WHERE `meta_key` = 'sq_fp_title'");
|
@@ -1073,11 +1402,104 @@ class SQ_Tools extends SQ_FrontController {
|
|
1073 |
$wpdb->query("UPDATE " . $wpdb->postmeta . " SET `meta_key` = '_sq_fp_keywords' WHERE `meta_key` = 'sq_fp_keywords'");
|
1074 |
$wpdb->query("UPDATE " . $wpdb->postmeta . " SET `meta_key` = '_sq_post_keyword' WHERE `meta_key` = 'sq_post_keyword'");
|
1075 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1076 |
self::saveOptions('sq_ver', SQ_VERSION_ID);
|
1077 |
|
|
|
|
|
|
|
1078 |
global $wp_rewrite;
|
1079 |
$wp_rewrite->flush_rules();
|
1080 |
}
|
|
|
|
|
1081 |
}
|
1082 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1083 |
}
|
5 |
*
|
6 |
* @author Squirrly
|
7 |
*/
|
8 |
+
class SQ_Classes_Tools extends SQ_Classes_FrontController {
|
9 |
|
10 |
/** @var array Saved options in database */
|
11 |
public static $options = array();
|
12 |
+
public static $usermeta = array();
|
13 |
|
14 |
/** @var integer Count the errors in site */
|
15 |
static $errors_count;
|
17 |
/** @var array */
|
18 |
private static $debug;
|
19 |
private static $source_code;
|
20 |
+
public static $is_ajax = null;
|
21 |
|
22 |
public function __construct() {
|
23 |
parent::__construct();
|
24 |
|
25 |
self::$options = $this->getOptions();
|
26 |
|
27 |
+
$this->checkDebug(); //dev mode
|
28 |
}
|
29 |
|
30 |
public static function getUserID() {
|
68 |
*
|
69 |
* @return array
|
70 |
*/
|
71 |
+
public static function getOptions($action = '') {
|
72 |
$default = array(
|
73 |
'sq_ver' => 0,
|
74 |
+
'sq_token' => md5(home_url() . date('d')), //daily token
|
75 |
'sq_api' => '',
|
76 |
'sq_checkedissues' => 0,
|
77 |
'sq_areissues' => 0,
|
78 |
'sq_use' => 1,
|
79 |
+
'sq_use_frontend' => 1,
|
80 |
+
'sq_laterload' => 0,
|
81 |
'sq_post_types' => array(
|
82 |
'post', 'page', 'product', 'shopp_page_shopp-products'
|
83 |
),
|
85 |
'sq_auto_canonical' => 1,
|
86 |
'sq_auto_sitemap' => 0,
|
87 |
'sq_auto_feed' => 0,
|
88 |
+
'sq_auto_noindex' => 1,
|
89 |
'sq_auto_jsonld' => 0,
|
90 |
'sq_auto_amp' => 0,
|
91 |
'sq_jsonld_type' => 'Organization',
|
109 |
'images' => 1,
|
110 |
'videos' => 0,
|
111 |
),
|
112 |
+
'sq_sitemap_perpage' => 200,
|
113 |
'sq_sitemap_frequency' => 'weekly',
|
114 |
'sq_sitemap' => array(
|
115 |
'sitemap' => array('sitemap.xml', 1),
|
138 |
'sq_auto_favicon' => 0,
|
139 |
'favicon' => '',
|
140 |
'sq_auto_twitter' => 0,
|
|
|
141 |
'sq_auto_facebook' => 0,
|
142 |
'sq_og_locale' => 'en_US',
|
|
|
|
|
|
|
|
|
|
|
|
|
143 |
// --
|
|
|
144 |
'sq_auto_title' => 1,
|
145 |
'sq_auto_description' => 1,
|
146 |
+
'sq_auto_keywords' => 1,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
147 |
// --
|
148 |
'active_help' => '',
|
149 |
'ignore_warn' => 0,
|
150 |
+
'sq_copyright_agreement' => 0,
|
151 |
'sq_keyword_help' => 1,
|
152 |
'sq_keyword_information' => 0,
|
153 |
'sq_url_fix' => 1,
|
154 |
+
//Ranking Option
|
155 |
'sq_google_country' => 'com',
|
156 |
'sq_google_language' => 'en',
|
157 |
'sq_google_country_strict' => 0,
|
165 |
//--
|
166 |
'sq_dashboard' => 0,
|
167 |
'sq_analytics' => 0,
|
168 |
+
|
169 |
+
'socials' => array(
|
170 |
+
'fb_admins' => array(),
|
171 |
+
'fbconnectkey' => "",
|
172 |
+
'fbadminapp' => "",
|
173 |
+
|
174 |
+
'facebook_site' => "",
|
175 |
+
'twitter_site' => "",
|
176 |
+
'twitter' => "",
|
177 |
+
'instagram_url' => "",
|
178 |
+
'linkedin_url' => "",
|
179 |
+
'myspace_url' => "",
|
180 |
+
'pinterest_url' => "",
|
181 |
+
'youtube_url' => "",
|
182 |
+
'google_plus_url' => "",
|
183 |
+
'twitter_card_type' => "summary",
|
184 |
+
'plus_publisher' => ""
|
185 |
+
),
|
186 |
+
|
187 |
+
'codes' => array(
|
188 |
+
'google_wt' => "",
|
189 |
+
'google_analytics' => "",
|
190 |
+
'facebook_pixel' => "",
|
191 |
+
|
192 |
+
'bing_wt' => "",
|
193 |
+
'pinterest_verify' => "",
|
194 |
+
'alexa_verify' => "",
|
195 |
+
),
|
196 |
+
|
197 |
+
'patterns' => array(
|
198 |
+
'home' => array(
|
199 |
+
'sep' => '|',
|
200 |
+
'title' => '{{sitename}} {{page}} {{sep}} {{sitedesc}}',
|
201 |
+
'description' => '{{excerpt}} {{page}} {{sep}} {{sitename}}',
|
202 |
+
'noindex' => 0,
|
203 |
+
'nofollow' => 0,
|
204 |
+
'disable' => 0,
|
205 |
+
),
|
206 |
+
'post' => array(
|
207 |
+
'sep' => '|',
|
208 |
+
'title' => '{{title}} {{page}}',
|
209 |
+
'description' => '{{excerpt}}',
|
210 |
+
'noindex' => 0,
|
211 |
+
'nofollow' => 0,
|
212 |
+
'disable' => 0,
|
213 |
+
),
|
214 |
+
'page' => array(
|
215 |
+
'sep' => '|',
|
216 |
+
'title' => '{{title}} {{page}} {{sep}} {{sitename}}',
|
217 |
+
'description' => '{{excerpt}}',
|
218 |
+
'noindex' => 0,
|
219 |
+
'nofollow' => 0,
|
220 |
+
'disable' => 0,
|
221 |
+
),
|
222 |
+
'category' => array(
|
223 |
+
'sep' => '|',
|
224 |
+
'title' => '{{category}} {{page}} {{sep}} {{sitename}}',
|
225 |
+
'description' => '{{category_description}}',
|
226 |
+
'noindex' => 0,
|
227 |
+
'nofollow' => 0,
|
228 |
+
'disable' => 0,
|
229 |
+
),
|
230 |
+
'tag' => array(
|
231 |
+
'sep' => '|',
|
232 |
+
'title' => '{{tag}} {{page}} {{sep}} {{sitename}}',
|
233 |
+
'description' => '{{excerpt}}',
|
234 |
+
'noindex' => 0,
|
235 |
+
'nofollow' => 0,
|
236 |
+
'disable' => 0,
|
237 |
+
),
|
238 |
+
'tax-post_format' => array(
|
239 |
+
'sep' => '|',
|
240 |
+
'title' => '{{term_title}} ' . __('Format', _SQ_PLUGIN_NAME_) . ' {{page}} {{sep}} {{sitename}}',
|
241 |
+
'description' => '{{excerpt}}',
|
242 |
+
'noindex' => 0,
|
243 |
+
'nofollow' => 0,
|
244 |
+
'disable' => 0,
|
245 |
+
),
|
246 |
+
'tax-category' => array(
|
247 |
+
'sep' => '|',
|
248 |
+
'title' => '{{term_title}} ' . __('Category', _SQ_PLUGIN_NAME_) . ' {{page}} {{sep}} {{sitename}}',
|
249 |
+
'description' => '{{excerpt}}',
|
250 |
+
'noindex' => 0,
|
251 |
+
'nofollow' => 0,
|
252 |
+
'disable' => 0,
|
253 |
+
),
|
254 |
+
'tax-post_tag' => array(
|
255 |
+
'sep' => '|',
|
256 |
+
'title' => '{{term_title}} ' . __('Tag', _SQ_PLUGIN_NAME_) . ' {{page}} {{sep}} {{sitename}}',
|
257 |
+
'description' => '{{excerpt}}',
|
258 |
+
'noindex' => 0,
|
259 |
+
'nofollow' => 0,
|
260 |
+
'disable' => 0,
|
261 |
+
),
|
262 |
+
'tax-product_cat' => array(
|
263 |
+
'sep' => '|',
|
264 |
+
'title' => '{{term_title}} ' . __('Category', _SQ_PLUGIN_NAME_) . ' {{page}} {{sep}} {{sitename}}',
|
265 |
+
'description' => '{{excerpt}}',
|
266 |
+
'noindex' => 0,
|
267 |
+
'nofollow' => 0,
|
268 |
+
'disable' => 0,
|
269 |
+
),
|
270 |
+
'tax-product_tag' => array(
|
271 |
+
'sep' => '|',
|
272 |
+
'title' => '{{term_title}} ' . __('Tag', _SQ_PLUGIN_NAME_) . ' {{page}} {{sep}} {{sitename}}',
|
273 |
+
'description' => '{{excerpt}}',
|
274 |
+
'noindex' => 0,
|
275 |
+
'nofollow' => 0,
|
276 |
+
'disable' => 0,
|
277 |
+
),
|
278 |
+
'tax-product_shipping_class' => array(
|
279 |
+
'sep' => '|',
|
280 |
+
'title' => '{{term_title}} ' . __('Shipping Option', _SQ_PLUGIN_NAME_) . ' {{page}} {{sep}} {{sitename}}',
|
281 |
+
'description' => '{{excerpt}}',
|
282 |
+
'noindex' => 0,
|
283 |
+
'nofollow' => 0,
|
284 |
+
'disable' => 0,
|
285 |
+
),
|
286 |
+
'profile' => array(
|
287 |
+
'sep' => '|',
|
288 |
+
'title' => '{{name}}, ' . __('Author at', _SQ_PLUGIN_NAME_) . ' {{sitename}} {{page}}',
|
289 |
+
'description' => '{{excerpt}}',
|
290 |
+
'noindex' => 0,
|
291 |
+
'nofollow' => 0,
|
292 |
+
'disable' => 0,
|
293 |
+
),
|
294 |
+
'shop' => array(
|
295 |
+
'sep' => '|',
|
296 |
+
'title' => '{{title}} {{page}} {{sep}} {{sitename}}',
|
297 |
+
'description' => '{{excerpt}}',
|
298 |
+
'noindex' => 0,
|
299 |
+
'nofollow' => 0,
|
300 |
+
'disable' => 0,
|
301 |
+
),
|
302 |
+
'product' => array(
|
303 |
+
'sep' => '|',
|
304 |
+
'title' => '{{title}} {{page}} {{sep}} {{sitename}}',
|
305 |
+
'description' => '{{excerpt}}',
|
306 |
+
'noindex' => 0,
|
307 |
+
'nofollow' => 0,
|
308 |
+
'disable' => 0,
|
309 |
+
),
|
310 |
+
'archive' => array(
|
311 |
+
'sep' => '|',
|
312 |
+
'title' => '{{date}} {{page}} {{sep}} {{sitename}}',
|
313 |
+
'description' => '{{excerpt}}',
|
314 |
+
'noindex' => 0,
|
315 |
+
'nofollow' => 0,
|
316 |
+
'disable' => 0,
|
317 |
+
),
|
318 |
+
'search' => array(
|
319 |
+
'sep' => '|',
|
320 |
+
'title' => __('You searched for', _SQ_PLUGIN_NAME_) . ' {{searchphrase}} {{page}} {{sep}} {{sitename}}',
|
321 |
+
'description' => '{{excerpt}}',
|
322 |
+
'noindex' => 1,
|
323 |
+
'nofollow' => 0,
|
324 |
+
'disable' => 0,
|
325 |
+
),
|
326 |
+
'attachment' => array(
|
327 |
+
'sep' => '|',
|
328 |
+
'title' => '{{title}} {{page}} {{sep}} {{sitename}}',
|
329 |
+
'description' => '{{excerpt}}',
|
330 |
+
'noindex' => 0,
|
331 |
+
'nofollow' => 0,
|
332 |
+
'disable' => 0,
|
333 |
+
),
|
334 |
+
'404' => array(
|
335 |
+
'sep' => '|',
|
336 |
+
'title' => __('Page not found', _SQ_PLUGIN_NAME_) . ' {{sep}} {{sitename}}',
|
337 |
+
'description' => '{{excerpt}}',
|
338 |
+
'noindex' => 1,
|
339 |
+
'nofollow' => 1,
|
340 |
+
'disable' => 0,
|
341 |
+
),
|
342 |
+
'custom' => array(
|
343 |
+
'sep' => '|',
|
344 |
+
'title' => '{{title}} {{page}} {{sep}} {{sitename}}',
|
345 |
+
'description' => '{{excerpt}}',
|
346 |
+
'noindex' => 0,
|
347 |
+
'nofollow' => 0,
|
348 |
+
'disable' => 0,
|
349 |
+
),
|
350 |
+
)
|
351 |
);
|
352 |
$options = json_decode(get_option(SQ_OPTION), true);
|
353 |
|
354 |
+
if ($action == 'reset') {
|
355 |
+
$init['sq_ver'] = $options['sq_ver'];
|
356 |
+
$init['sq_api'] = $options['sq_api'];
|
357 |
+
return $init;
|
358 |
+
}
|
359 |
+
|
360 |
if (is_array($options)) {
|
361 |
$options = @array_merge($default, $options);
|
362 |
return $options;
|
365 |
return $default;
|
366 |
}
|
367 |
|
368 |
+
/**
|
369 |
+
* Get the option from database
|
370 |
+
* @param $key
|
371 |
+
* @return mixed
|
372 |
+
*/
|
373 |
+
public static function getOption($key) {
|
374 |
+
if (!isset(self::$options[$key])) {
|
375 |
+
self::$options = self::getOptions();
|
376 |
+
|
377 |
+
if (!isset(self::$options[$key])) {
|
378 |
+
self::$options[$key] = false;
|
379 |
+
}
|
380 |
+
}
|
381 |
+
|
382 |
+
return self::$options[$key];
|
383 |
+
}
|
384 |
+
|
385 |
+
|
386 |
+
/**
|
387 |
+
* Get user metas
|
388 |
+
* @param null $user_id
|
389 |
+
* @return array|mixed
|
390 |
+
*/
|
391 |
+
public static function getUserMetas($user_id = null) {
|
392 |
+
if (!isset($user_id)) {
|
393 |
+
$user_id = get_current_user_id();
|
394 |
+
}
|
395 |
+
|
396 |
+
$default = array('sq_auto_sticky' => 0,);
|
397 |
+
|
398 |
+
$usermeta = get_user_meta($user_id);
|
399 |
+
$usermetatmp = array();
|
400 |
+
if (is_array($usermeta)) foreach ($usermeta as $key => $values) {
|
401 |
+
$usermetatmp[$key] = $values[0];
|
402 |
+
}
|
403 |
+
$usermeta = $usermetatmp;
|
404 |
+
|
405 |
+
if (is_array($usermeta)) {
|
406 |
+
$usermeta = @array_merge($default, $usermeta);
|
407 |
+
} else {
|
408 |
+
$usermeta = $default;
|
409 |
+
}
|
410 |
+
self::$usermeta = $usermeta;
|
411 |
+
return $usermeta;
|
412 |
+
}
|
413 |
+
|
414 |
+
/**
|
415 |
+
* Get use meta
|
416 |
+
* @param $value
|
417 |
+
* @return bool
|
418 |
+
*/
|
419 |
+
public static function getUserMeta($value) {
|
420 |
+
if (!isset(self::$usermeta[$value])) {
|
421 |
+
self::getUserMetas();
|
422 |
+
}
|
423 |
+
|
424 |
+
if (isset(self::$usermeta[$value])) {
|
425 |
+
return self::$usermeta[$value];
|
426 |
+
}
|
427 |
+
|
428 |
+
return false;
|
429 |
+
}
|
430 |
+
|
431 |
+
/**
|
432 |
+
* Save user meta
|
433 |
+
* @param $key
|
434 |
+
* @param $value
|
435 |
+
* @param null $user_id
|
436 |
+
*/
|
437 |
+
public static function saveUserMeta($key, $value, $user_id = null) {
|
438 |
+
if (!isset($user_id)) {
|
439 |
+
$user_id = get_current_user_id();
|
440 |
+
}
|
441 |
+
self::$usermeta[$key] = $value;
|
442 |
+
update_user_meta($user_id, $key, $value);
|
443 |
+
}
|
444 |
+
|
445 |
+
/**
|
446 |
+
* Delete User meta
|
447 |
+
* @param $key
|
448 |
+
* @param null $user_id
|
449 |
+
*/
|
450 |
+
public static function deleteUserMeta($key, $user_id = null) {
|
451 |
+
if (!isset($user_id)) {
|
452 |
+
$user_id = get_current_user_id();
|
453 |
+
}
|
454 |
+
unset(self::$usermeta[$key]);
|
455 |
+
delete_user_meta($user_id, $key);
|
456 |
+
}
|
457 |
+
|
458 |
/**
|
459 |
* Send completed tasks from tutorial
|
460 |
* @return array
|
461 |
*/
|
462 |
public static function getBriefOptions() {
|
463 |
+
$jsonld = self::getOption('sq_jsonld');
|
464 |
+
$socials = self::getOption('socials');
|
465 |
+
$codes = self::getOption('codes');
|
466 |
+
|
|
|
|
|
|
|
467 |
return array(
|
468 |
'sq_version' => SQ_VERSION_ID,
|
469 |
+
'sq_use' => self::getOption('sq_use'),
|
470 |
+
'sq_token' => self::getOption('sq_token'),
|
471 |
+
'sq_checkedissues' => self::getOption('sq_checkedissues'),
|
472 |
+
'sq_areissues' => self::getOption('sq_areissues'),
|
473 |
+
'sq_auto_canonical' => self::getOption('sq_auto_canonical'),
|
474 |
+
'sq_auto_meta' => self::getOption('sq_auto_meta'),
|
475 |
+
'sq_auto_sitemap' => self::getOption('sq_auto_sitemap'),
|
476 |
+
'sq_auto_jsonld' => (self::getOption('sq_auto_jsonld') && ($jsonld['Organization']['name'] <> '' || $jsonld['Person']['name'] <> '')),
|
477 |
+
'sq_sitemap_ping' => SQ_Classes_Tools::getOption('sq_sitemap_ping'),
|
478 |
+
'sq_auto_robots' => SQ_Classes_Tools::getOption('sq_auto_robots'),
|
479 |
+
'sq_auto_favicon' => (SQ_Classes_Tools::getOption('sq_auto_favicon') && SQ_Classes_Tools::getOption('favicon') <> ''),
|
480 |
+
'sq_auto_twitter' => SQ_Classes_Tools::getOption('sq_auto_twitter'),
|
481 |
+
'sq_auto_facebook' => SQ_Classes_Tools::getOption('sq_auto_facebook'),
|
482 |
+
'sq_auto_seo' => 1,
|
483 |
+
'sq_auto_title' => (int)(SQ_Classes_Tools::getOption('sq_auto_title') == 1),
|
484 |
+
'sq_auto_description' => (int)(SQ_Classes_Tools::getOption('sq_auto_description') == 1),
|
485 |
+
'sq_auto_keywords' => (int)(SQ_Classes_Tools::getOption('sq_auto_keywords') == 1),
|
486 |
+
'sq_auto_noindex' => (int)(SQ_Classes_Tools::getOption('sq_auto_noindex') == 1),
|
487 |
+
'sq_google_plus' => (int)($socials['google_plus_url'] <> ''),
|
488 |
+
'sq_google_wt' => (int)($codes['google_wt'] <> ''),
|
489 |
+
'sq_google_analytics' => (int)($codes['google_analytics'] <> ''),
|
490 |
+
'sq_facebook_insights' => (int)(!empty($socials['sq_facebook_insights'])),
|
491 |
+
'sq_bing_wt' => (int)($codes['bing_wt'] <> ''),
|
492 |
+
'sq_pinterest' => (int)($codes['pinterest_verify'] <> ''),
|
493 |
+
'sq_alexa' => (int)($codes['alexa_verify'] <> ''),
|
494 |
+
'sq_keyword_help' => SQ_Classes_Tools::getOption('sq_keyword_help'),
|
495 |
+
'sq_keyword_information' => SQ_Classes_Tools::getOption('sq_keyword_information'),
|
496 |
+
'sq_google_country_strict' => SQ_Classes_Tools::getOption('sq_google_country_strict'),
|
497 |
+
'sq_keywordtag' => SQ_Classes_Tools::getOption('sq_keywordtag'),
|
498 |
+
'sq_local_images' => SQ_Classes_Tools::getOption('sq_local_images'),
|
499 |
);
|
500 |
+
|
501 |
}
|
502 |
|
503 |
/**
|
515 |
|
516 |
/**
|
517 |
* Set the header type
|
518 |
+
* @param string $type
|
519 |
*/
|
520 |
public static function setHeader($type) {
|
521 |
+
if (SQ_Classes_Tools::getValue('sq_debug') == 'on') {
|
522 |
+
if (self::isAjax()) {
|
523 |
+
header("Content-type: text/html");
|
524 |
+
}
|
525 |
return;
|
526 |
+
}
|
527 |
|
528 |
switch ($type) {
|
529 |
case 'json':
|
538 |
case'text':
|
539 |
header("Content-type: text/plain");
|
540 |
break;
|
541 |
+
case'html':
|
542 |
+
header("Content-type: text/html");
|
543 |
+
break;
|
544 |
}
|
545 |
}
|
546 |
|
579 |
/**
|
580 |
* Show the notices to WP
|
581 |
*
|
582 |
+
* @return string
|
583 |
*/
|
584 |
public static function showNotices($message, $type = 'sq_notices') {
|
585 |
+
if (file_exists(_SQ_THEME_DIR_ . 'Notices.php')) {
|
586 |
ob_start();
|
587 |
+
include(_SQ_THEME_DIR_ . 'Notices.php');
|
588 |
$message = ob_get_contents();
|
589 |
ob_end_clean();
|
590 |
}
|
816 |
if (function_exists('curl_exec')) {
|
817 |
$ch = curl_init($url);
|
818 |
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
819 |
+
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
|
820 |
curl_exec($ch);
|
821 |
|
822 |
$response['headers']['content-type'] = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
|
854 |
public static function checkErrorSettings($count_only = false) {
|
855 |
if (current_user_can('manage_options')) {
|
856 |
|
857 |
+
$fixit = "<a href=\"javascript:void(0);\" onclick=\"%sjQuery(this).closest('div').fadeOut('slow'); if(parseInt(jQuery('.sq_count').html())>0) { var notif = (parseInt(jQuery('.sq_count').html()) - 1); if (notif > 0) {jQuery('.sq_count').html(notif); }else{ jQuery('.sq_count').html(notif); jQuery('.sq_count').hide(); } } jQuery.post(ajaxurl, { action: '%s', nonce: '" . wp_create_nonce(_SQ_NONCE_ID_) . "'});\" >" . __("Fix it for me!", _SQ_PLUGIN_NAME_) . "</a>";
|
858 |
|
859 |
/* IF SEO INDEX IS OFF */
|
860 |
if (self::getAutoSeoSquirrly()) {
|
861 |
self::$errors_count++;
|
862 |
if (!$count_only) {
|
863 |
+
SQ_Classes_Error::setError(__('Activate the Squirrly SEO for your blog (recommended)', _SQ_PLUGIN_NAME_) . " <br />" . sprintf($fixit, "jQuery('#sq_use_on').trigger('click');", "sq_fixautoseo") . "", 'settings', 'sq_fix_auto');
|
864 |
}
|
865 |
}
|
866 |
|
871 |
if (self::getDuplicateTitle()) {
|
872 |
self::$errors_count++;
|
873 |
if (!$count_only) {
|
874 |
+
SQ_Classes_Error::setError(__('You have META Title Duplicates. Disable the Squirrly Title Optimization or disable the other SEO Plugins', _SQ_PLUGIN_NAME_) . " <br />" . sprintf($fixit, "jQuery('#sq_auto_title0').attr('checked', true); jQuery('#sq_automatically').attr('checked', true);", "sq_fix_titleduplicate") . "", 'settings', 'sq_fix_descduplicate');
|
875 |
}
|
876 |
}
|
877 |
|
879 |
if (self::getDuplicateDescription()) {
|
880 |
self::$errors_count++;
|
881 |
if (!$count_only) {
|
882 |
+
SQ_Classes_Error::setError(__('You have META Description Duplicates. Disable the Squirrly Description Optimization or disable the other SEO Plugins', _SQ_PLUGIN_NAME_) . " <br />" . sprintf($fixit, "jQuery('#sq_auto_description0').attr('checked', true); jQuery('#sq_automatically').attr('checked', true);", "sq_fix_descduplicate") . "", 'settings', 'sq_fix_descduplicate');
|
883 |
}
|
884 |
}
|
885 |
|
887 |
if (self::getDuplicateOG()) {
|
888 |
self::$errors_count++;
|
889 |
if (!$count_only) {
|
890 |
+
SQ_Classes_Error::setError(__('You have Open Graph META Duplicates. Disable the Squirrly SEO Open Graph or disable the other SEO Plugins', _SQ_PLUGIN_NAME_) . " <br />" . sprintf($fixit, "jQuery('#sq_auto_facebook0').attr('checked', true);", "sq_fix_ogduplicate") . "", 'settings', 'sq_fix_ogduplicate');
|
891 |
}
|
892 |
}
|
893 |
|
895 |
if (self::getDuplicateTC()) {
|
896 |
self::$errors_count++;
|
897 |
if (!$count_only) {
|
898 |
+
SQ_Classes_Error::setError(__('You have Twitter Card META Duplicates. Disable the Squirrly SEO Twitter Card or disable the other SEO Plugins', _SQ_PLUGIN_NAME_) . " <br />" . sprintf($fixit, "jQuery('#sq_auto_twitter0').attr('checked', true);", "sq_fix_tcduplicate") . "", 'settings', 'sq_fix_tcduplicate');
|
899 |
}
|
900 |
}
|
901 |
}
|
904 |
if (self::getPrivateBlog()) {
|
905 |
self::$errors_count++;
|
906 |
if (!$count_only) {
|
907 |
+
SQ_Classes_Error::setError(__('You\'re blocking google from indexing your site!', _SQ_PLUGIN_NAME_) . " <br />" . sprintf($fixit, "jQuery('#sq_google_index1').attr('checked',true);", "sq_fixprivate") . "", 'settings', 'sq_fix_private');
|
908 |
}
|
909 |
}
|
910 |
|
911 |
if (self::getBadLinkStructure()) {
|
912 |
self::$errors_count++;
|
913 |
if (!$count_only) {
|
914 |
+
SQ_Classes_Error::setError(__('It is highly recommended that you include the %postname% variable in the permalink structure. <br />Go to Settings > Permalinks and add /%postname%/ in Custom Structure', _SQ_PLUGIN_NAME_) . " <br /> ", 'settings');
|
915 |
+
}
|
916 |
+
}
|
917 |
+
|
918 |
+
if (self::getDefaultTagline()) {
|
919 |
+
self::$errors_count++;
|
920 |
+
if (!$count_only) {
|
921 |
+
SQ_Classes_Error::setError(__('It is highly recommended to change or remove the default Wordpress Tagline. <br />Go to Settings > General > Tagline', _SQ_PLUGIN_NAME_) . " <br /> ", 'settings');
|
922 |
}
|
923 |
}
|
924 |
|
925 |
if (self::$errors_count == 0) {
|
926 |
self::saveOptions('sq_areissues', 0);
|
927 |
+
SQ_Classes_Error::setError(__('Great! We didn\'t find any issue in your site.', _SQ_PLUGIN_NAME_) . " <br /> ", 'success');
|
928 |
} else {
|
929 |
self::saveOptions('sq_areissues', 1);
|
930 |
}
|
936 |
* @return bool
|
937 |
*/
|
938 |
private static function getAutoSeoSquirrly() {
|
939 |
+
return (!self::getOption('sq_use'));
|
|
|
|
|
|
|
940 |
}
|
941 |
|
942 |
/**
|
948 |
return false;
|
949 |
}
|
950 |
|
951 |
+
if (self::getOption('sq_use') && self::getOption('sq_auto_facebook')) {
|
952 |
|
953 |
if (self::$source_code <> '') {
|
954 |
preg_match_all("/<meta[\s+]property=[\"|\']og:url[\"|\'][\s+](content|value)=[\"|\']([^>]*)[\"|\'][^>]*>/i", self::$source_code, $out);
|
970 |
return false;
|
971 |
}
|
972 |
|
973 |
+
if (self::getOption('sq_use') && self::getOption('sq_auto_twitter')) {
|
974 |
|
975 |
if (self::$source_code <> '') {
|
976 |
preg_match_all("/<meta[\s+]name=[\"|\']twitter:card[\"|\'][\s+](content|value)=[\"|\']([^>]*)[\"|\'][^>]*>/i", self::$source_code, $out);
|
993 |
}
|
994 |
$total = 0;
|
995 |
|
996 |
+
if (self::getOption('sq_use') && self::$options['sq_auto_description'] == 1) {
|
997 |
if (self::$source_code <> '') {
|
998 |
preg_match_all("/<meta[^>]*name=[\"|\']description[\"|\'][^>]*content=[\"]([^\"]*)[\"][^>]*>/i", self::$source_code, $out);
|
999 |
if (!empty($out) && isset($out[0]) && is_array($out[0])) {
|
1019 |
}
|
1020 |
$total = 0;
|
1021 |
|
1022 |
+
if (self::getOption('sq_use') && self::$options['sq_auto_title'] == 1) {
|
1023 |
if (self::$source_code <> '') {
|
1024 |
preg_match_all("/<title[^>]*>(.*)?<\/title>/i", self::$source_code, $out);
|
1025 |
|
1066 |
}
|
1067 |
}
|
1068 |
|
1069 |
+
private static function getDefaultTagline() {
|
1070 |
+
$blog_description = get_bloginfo('description');
|
1071 |
+
$default_blog_description = 'Just another WordPress site';
|
1072 |
+
$translated_blog_description = __('Just another WordPress site');
|
1073 |
+
return $translated_blog_description === $blog_description || $default_blog_description === $blog_description;
|
1074 |
+
}
|
1075 |
+
|
1076 |
/**
|
1077 |
* Support for i18n with wpml, polyglot or qtrans
|
1078 |
*
|
1106 |
return apply_filters('number_format_i18n', $formatted);
|
1107 |
}
|
1108 |
|
1109 |
+
public static function clearTitle($title) {
|
1110 |
+
if ($title <> '') {
|
1111 |
+
$title = str_replace(array("\n", " "), " ", $title);
|
1112 |
+
|
1113 |
+
$title = self::i18n(trim(esc_html(ent2ncr(strip_tags($title)))));
|
1114 |
+
$title = addcslashes($title, '$');
|
1115 |
+
|
1116 |
+
$title = preg_replace('/\s{2,}/', ' ', $title);
|
1117 |
+
}
|
1118 |
+
return $title;
|
1119 |
+
}
|
1120 |
+
|
1121 |
+
public static function clearDescription($description) {
|
1122 |
+
if ($description <> '') {
|
1123 |
+
|
1124 |
+
|
1125 |
+
if (function_exists('preg_replace')) {
|
1126 |
+
$search = array("'<script[^>]*?>.*?<\/script>'si", // strip out javascript
|
1127 |
+
"/<form.*?<\/form>/si",
|
1128 |
+
"/<iframe.*?<\/iframe>/si",
|
1129 |
+
);
|
1130 |
+
$description = preg_replace($search, "", $description);
|
1131 |
+
$search = array(
|
1132 |
+
"/[\n\r]/si",
|
1133 |
+
"/ /si",
|
1134 |
+
"/\s{2,}/",
|
1135 |
+
);
|
1136 |
+
$description = preg_replace($search, " ", $description);
|
1137 |
+
}
|
1138 |
+
|
1139 |
+
$description = self::i18n(trim(esc_html(ent2ncr(strip_tags($description)))));
|
1140 |
+
$description = addcslashes($description, '$');
|
1141 |
+
}
|
1142 |
+
|
1143 |
+
return $description;
|
1144 |
+
}
|
1145 |
+
|
1146 |
+
public static function clearKeywords($keywords) {
|
1147 |
+
return self::clearTitle($keywords);
|
1148 |
+
}
|
1149 |
+
|
1150 |
public static function getBrowserInfo() {
|
1151 |
$ub = '';
|
1152 |
$u_agent = $_SERVER['HTTP_USER_AGENT'];
|
1210 |
/**
|
1211 |
*
|
1212 |
* @param string $url
|
1213 |
+
* @return array | false
|
1214 |
*/
|
1215 |
public static function getSnippet($url) {
|
1216 |
if ($url == '' || !function_exists('preg_match')) {
|
1217 |
+
return false;
|
1218 |
}
|
1219 |
|
1220 |
+
|
1221 |
+
$post_id = 0;
|
1222 |
$snippet = array();
|
|
|
1223 |
|
1224 |
+
if ($post_id == 0) {
|
1225 |
+
$post_id = url_to_postid($url);
|
1226 |
+
} elseif ($url == get_bloginfo('url')) {
|
1227 |
+
if (!$post_id = get_option('page_on_front'))
|
1228 |
+
($post_id = get_option('page_for_posts'));
|
1229 |
}
|
1230 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1231 |
|
1232 |
+
if ($post_id > 0) {
|
1233 |
+
if ($post = SQ_Classes_ObjController::getClass('SQ_Controllers_Menu')->setPostByID($post_id)) {
|
1234 |
+
$snippet['title'] = (self::getOption('sq_auto_title') ? $post->sq->title : $post->post_title);
|
1235 |
+
$snippet['description'] = (self::getOption('sq_auto_description') ? $post->sq->description : $post->post_excerpt);
|
1236 |
+
$snippet['url'] = $url;
|
1237 |
+
}
|
1238 |
+
} elseif ($url == home_url()) {
|
1239 |
+
$post = SQ_Classes_ObjController::getDomain('SQ_Models_Domain_Post');
|
1240 |
+
$post->debug = 'isHomePage';
|
1241 |
+
$post->post_type = 'home';
|
1242 |
+
$post->hash = md5('wp_homepage');
|
1243 |
+
$post->url = home_url();
|
1244 |
+
|
1245 |
+
$post = SQ_Classes_ObjController::getClass('SQ_Models_Frontend')->setPost($post)->getPost();
|
1246 |
+
$snippet['title'] = (self::getOption('sq_auto_title') ? $post->sq->title : get_bloginfo('name'));
|
1247 |
+
$snippet['description'] = (self::getOption('sq_auto_description') ? $post->sq->description : get_bloginfo('description'));
|
1248 |
$snippet['url'] = $url;
|
1249 |
} else {
|
1250 |
$length = array('title' => 66,
|
1270 |
$snippet['description'] = substr($snippet['description'], 0, ($length['description'] - 1)) . '...';
|
1271 |
}
|
1272 |
|
1273 |
+
$snippet['url'] = urldecode($url);
|
1274 |
if (strlen($snippet['url']) > $length['url'])
|
1275 |
$snippet['url'] = substr($snippet['url'], 0, ($length['url'] - 1)) . '...';
|
1276 |
|
1285 |
*/
|
1286 |
private function checkDebug() {
|
1287 |
//if debug is called
|
1288 |
+
if (SQ_DEBUG && self::getIsset('sq_debug')) {
|
|
|
|
|
|
|
|
|
|
|
|
|
1289 |
if (self::getValue('sq_debug') === 'on') {
|
1290 |
if (function_exists('register_shutdown_function')) {
|
1291 |
register_shutdown_function(array($this, 'showDebug'));
|
1344 |
* Show the debug dump
|
1345 |
*/
|
1346 |
public static function showDebug() {
|
|
|
1347 |
echo "Debug result: <br />" . '<div id="wpcontent">' . @implode('<br />', self::$debug) . '</div>';
|
1348 |
|
1349 |
$run_time = number_format(microtime(true) - REQUEST_TIME, 3);
|
1359 |
public function sq_activate() {
|
1360 |
set_transient('sq_activate', true);
|
1361 |
set_transient('sq_rewrite', true);
|
1362 |
+
set_transient('sq_import', true);
|
1363 |
}
|
1364 |
|
1365 |
public function sq_deactivate() {
|
1368 |
|
1369 |
$args = array();
|
1370 |
$args['type'] = 'deact';
|
1371 |
+
SQ_Classes_Action::apiCall('sq/user/log', $args, 5);
|
1372 |
|
1373 |
+
remove_filter('rewrite_rules_array', array(SQ_Classes_ObjController::getClass('SQ_Core_BlockSettingsSeo'), 'rewrite_rules'));
|
1374 |
global $wp_rewrite;
|
1375 |
$wp_rewrite->flush_rules();
|
1376 |
}
|
1393 |
}
|
1394 |
|
1395 |
public static function checkUpgrade() {
|
1396 |
+
if (self::getOption('sq_ver') == 0 || self::getOption('sq_ver') < SQ_VERSION_ID) {
|
1397 |
//Delete the old versions table
|
1398 |
global $wpdb;
|
1399 |
$wpdb->query("UPDATE " . $wpdb->postmeta . " SET `meta_key` = '_sq_fp_title' WHERE `meta_key` = 'sq_fp_title'");
|
1402 |
$wpdb->query("UPDATE " . $wpdb->postmeta . " SET `meta_key` = '_sq_fp_keywords' WHERE `meta_key` = 'sq_fp_keywords'");
|
1403 |
$wpdb->query("UPDATE " . $wpdb->postmeta . " SET `meta_key` = '_sq_post_keyword' WHERE `meta_key` = 'sq_post_keyword'");
|
1404 |
|
1405 |
+
if (self::getOption('sq_ver') < 8200) {
|
1406 |
+
self::createTable();
|
1407 |
+
|
1408 |
+
//Import the SEO from the old format to the new format
|
1409 |
+
$seo = SQ_Classes_ObjController::getClass('SQ_Models_BlockSettingsSeo')->importDBSeo('squirrly-seo');
|
1410 |
+
if (!empty($seo)) {
|
1411 |
+
foreach ($seo as $sq_hash => $metas) {
|
1412 |
+
SQ_Classes_ObjController::getClass('SQ_Models_BlockSettingsSeo')->db_insert(
|
1413 |
+
(isset($metas['url']) ? $metas['url'] : ''),
|
1414 |
+
$sq_hash,
|
1415 |
+
(int)$metas['post_id'],
|
1416 |
+
maybe_serialize($metas),
|
1417 |
+
gmdate('Y-m-d H:i:s'));
|
1418 |
+
}
|
1419 |
+
}
|
1420 |
+
|
1421 |
+
//Import the settings from the old format to the new format
|
1422 |
+
SQ_Classes_ObjController::getClass('SQ_Models_BlockSettingsSeo')->importDBSettings('squirrly-seo');
|
1423 |
+
}
|
1424 |
+
|
1425 |
+
|
1426 |
self::saveOptions('sq_ver', SQ_VERSION_ID);
|
1427 |
|
1428 |
+
self::getOptions();
|
1429 |
+
SQ_Classes_Action::apiCall('sq/user/settings', array('settings' => json_encode(self::getBriefOptions())), 10);
|
1430 |
+
|
1431 |
global $wp_rewrite;
|
1432 |
$wp_rewrite->flush_rules();
|
1433 |
}
|
1434 |
+
|
1435 |
+
|
1436 |
}
|
1437 |
|
1438 |
+
public static function isAjax() {
|
1439 |
+
if (isset(self::$is_ajax)) {
|
1440 |
+
return self::$is_ajax;
|
1441 |
+
}
|
1442 |
+
|
1443 |
+
self::$is_ajax = false;
|
1444 |
+
|
1445 |
+
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
|
1446 |
+
self::$is_ajax = true;
|
1447 |
+
} else {
|
1448 |
+
$url = (isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : false);
|
1449 |
+
if ($url && (strpos($url, str_replace(get_bloginfo('url'), '', admin_url('admin-ajax.php', 'relative'))) !== false)) {
|
1450 |
+
self::$is_ajax = true;
|
1451 |
+
}
|
1452 |
+
}
|
1453 |
+
return self::$is_ajax;
|
1454 |
+
}
|
1455 |
+
|
1456 |
+
public static function isPluginInstalled($name) {
|
1457 |
+
switch ($name) {
|
1458 |
+
case 'instapage':
|
1459 |
+
return defined('INSTAPAGE_PLUGIN_PATH');
|
1460 |
+
break;
|
1461 |
+
case 'quick-seo':
|
1462 |
+
return defined('QSS_VERSION') && defined('_QSS_ROOT_DIR_');
|
1463 |
+
break;
|
1464 |
+
case 'premium-seo-pack':
|
1465 |
+
return defined('PSP_VERSION') && defined('_PSP_ROOT_DIR_');
|
1466 |
+
break;
|
1467 |
+
}
|
1468 |
+
}
|
1469 |
+
|
1470 |
+
public static function isFrontAdmin() {
|
1471 |
+
return (!is_admin() && is_user_logged_in());
|
1472 |
+
}
|
1473 |
+
|
1474 |
+
public static function createTable() {
|
1475 |
+
global $wpdb, $charset_collate;
|
1476 |
+
$sq_table_query = 'CREATE TABLE IF NOT EXISTS ' . $wpdb->prefix . strtolower(_SQ_DB_) . ' (
|
1477 |
+
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
1478 |
+
`blog_id` INT(10) NOT NULL,
|
1479 |
+
`post_id` bigint(20) NOT NULL DEFAULT 0 ,
|
1480 |
+
`URL` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
|
1481 |
+
`url_hash` VARCHAR(32) NOT NULL,
|
1482 |
+
`seo` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
|
1483 |
+
`date_time` DATETIME NOT NULL,
|
1484 |
+
PRIMARY KEY(id),
|
1485 |
+
UNIQUE url_hash(url_hash) USING BTREE,
|
1486 |
+
INDEX post_id(post_id) USING BTREE,
|
1487 |
+
INDEX blog_id_url_hash(blog_id, url_hash) USING BTREE
|
1488 |
+
) CHARACTER SET utf8 COLLATE utf8_general_ci';
|
1489 |
+
|
1490 |
+
if (file_exists(ABSPATH . 'wp-admin/includes/upgrade.php')) {
|
1491 |
+
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
|
1492 |
+
if (function_exists('dbDelta')) {
|
1493 |
+
dbDelta($sq_table_query, true);
|
1494 |
+
$count = $wpdb->get_row("SELECT count(*) as count
|
1495 |
+
FROM information_schema.columns
|
1496 |
+
WHERE table_name = '" . $wpdb->prefix . strtolower(_SQ_DB_) . "'
|
1497 |
+
AND column_name = 'post_id';");
|
1498 |
+
|
1499 |
+
if ($count->count == 0) {
|
1500 |
+
$wpdb->query("ALTER TABLE " . $wpdb->prefix . strtolower(_SQ_DB_) . " ADD COLUMN `post_id` bigint(20) NOT NULL DEFAULT 0");
|
1501 |
+
}
|
1502 |
+
}
|
1503 |
+
}
|
1504 |
+
}
|
1505 |
}
|
config/config.php
CHANGED
@@ -4,33 +4,79 @@
|
|
4 |
* The configuration file
|
5 |
*/
|
6 |
define('_SQ_SUPPORT_EMAIL_', 'support@squirrly.co');
|
7 |
-
if (defined('
|
8 |
-
|
9 |
-
|
10 |
-
|
|
|
|
|
11 |
}
|
|
|
12 |
define('_SQ_MOBILE_ICON_SIZES', '76,120,152');
|
13 |
define('REQUEST_TIME', microtime(true));
|
14 |
|
15 |
|
16 |
if (!defined('PHP_VERSION_ID')) {
|
17 |
$version = explode('.', PHP_VERSION);
|
18 |
-
define('PHP_VERSION_ID', ((int)
|
19 |
}
|
20 |
if (!defined('WP_VERSION_ID') && isset($wp_version)) {
|
21 |
$version = explode('.', $wp_version);
|
22 |
-
define('WP_VERSION_ID', ((int)
|
23 |
}
|
24 |
if (!defined('WP_VERSION_ID'))
|
25 |
define('WP_VERSION_ID', '3000');
|
26 |
|
27 |
if (!defined('SQ_VERSION_ID')) {
|
28 |
-
|
29 |
-
define('SQ_VERSION_ID', ((int) @$version[0] * 1000 + (int) @$version[1] * 100 + ((isset($version[2])) ? ((int) $version[2] * 10) : 0)));
|
30 |
}
|
31 |
|
|
|
32 |
/* No path file? error ... */
|
33 |
require_once(dirname(__FILE__) . '/paths.php');
|
34 |
|
35 |
/* Define the record name in the Option and UserMeta tables */
|
36 |
define('SQ_OPTION', 'sq_options');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
* The configuration file
|
5 |
*/
|
6 |
define('_SQ_SUPPORT_EMAIL_', 'support@squirrly.co');
|
7 |
+
if (!defined('_SQ_NONCE_ID_')) {
|
8 |
+
if (defined('NONCE_KEY')) {
|
9 |
+
define('_SQ_NONCE_ID_', NONCE_KEY);
|
10 |
+
} else {
|
11 |
+
define('_SQ_NONCE_ID_', md5(date('Y-d')));
|
12 |
+
}
|
13 |
}
|
14 |
+
defined('SQ_DEBUG') || define('SQ_DEBUG', 0);
|
15 |
define('_SQ_MOBILE_ICON_SIZES', '76,120,152');
|
16 |
define('REQUEST_TIME', microtime(true));
|
17 |
|
18 |
|
19 |
if (!defined('PHP_VERSION_ID')) {
|
20 |
$version = explode('.', PHP_VERSION);
|
21 |
+
define('PHP_VERSION_ID', ((int)@$version[0] * 1000 + (int)@$version[1] * 100 + ((isset($version[2])) ? ((int)$version[2] * 10) : 0)));
|
22 |
}
|
23 |
if (!defined('WP_VERSION_ID') && isset($wp_version)) {
|
24 |
$version = explode('.', $wp_version);
|
25 |
+
define('WP_VERSION_ID', ((int)@$version[0] * 1000 + (int)@$version[1] * 100 + ((isset($version[2])) ? ((int)$version[2] * 10) : 0)));
|
26 |
}
|
27 |
if (!defined('WP_VERSION_ID'))
|
28 |
define('WP_VERSION_ID', '3000');
|
29 |
|
30 |
if (!defined('SQ_VERSION_ID')) {
|
31 |
+
define('SQ_VERSION_ID', (int)number_format(str_replace('.', '', SQ_VERSION), 0, '', ''));
|
|
|
32 |
}
|
33 |
|
34 |
+
|
35 |
/* No path file? error ... */
|
36 |
require_once(dirname(__FILE__) . '/paths.php');
|
37 |
|
38 |
/* Define the record name in the Option and UserMeta tables */
|
39 |
define('SQ_OPTION', 'sq_options');
|
40 |
+
|
41 |
+
|
42 |
+
define('SQ_ALL_PATTERNS', json_encode(array(
|
43 |
+
'{{date}}' => __("Displays the date of the post/page once it's published", _SQ_PLUGIN_NAME_),
|
44 |
+
'{{title}}' => __("Adds the title of the post/page once it’s published", _SQ_PLUGIN_NAME_),
|
45 |
+
'{{page}}' => __("Displays the number of the current page (i.e. 1 of 6)", _SQ_PLUGIN_NAME_),
|
46 |
+
'{{parent_title}}' => __('Adds the title of a page\'s parent page', _SQ_PLUGIN_NAME_),
|
47 |
+
'{{sitename}}' => __("Adds the site's name to the post description", _SQ_PLUGIN_NAME_),
|
48 |
+
'{{sitedesc}}' => __("Adds the tagline/description of your site", _SQ_PLUGIN_NAME_),
|
49 |
+
'{{excerpt}}' => __("Will display an excerpt from the post/page (if not customized, the excerpt will be auto-generated)", _SQ_PLUGIN_NAME_),
|
50 |
+
'{{excerpt_only}}' => __("Will display an excerpt from the post/page (no auto-generation)", _SQ_PLUGIN_NAME_),
|
51 |
+
'{{tag}}' => __("Adds the current tag(s) to the post description", _SQ_PLUGIN_NAME_),
|
52 |
+
'{{category}}' => __("Adds the post category (several categories will be comma-separated)", _SQ_PLUGIN_NAME_),
|
53 |
+
'{{primary_category}}' => __("Adds the primary category of the post/page", _SQ_PLUGIN_NAME_),
|
54 |
+
'{{category_description}}' => __("Adds the category description to the post description", _SQ_PLUGIN_NAME_),
|
55 |
+
'{{tag_description}}' => __("Adds the tag description", _SQ_PLUGIN_NAME_),
|
56 |
+
'{{term_description}}' => __("Adds the term description", _SQ_PLUGIN_NAME_),
|
57 |
+
'{{term_title}}' => __("Adds the term name", _SQ_PLUGIN_NAME_),
|
58 |
+
'{{searchphrase}}' => __("Displays the search phrase (if it appears in the post)", _SQ_PLUGIN_NAME_),
|
59 |
+
'{{sep}}' => __("Places a separator between the elements of the post description", _SQ_PLUGIN_NAME_),
|
60 |
+
'{{modified}}' => __("Replaces the publication date of a post/page with the modified one", _SQ_PLUGIN_NAME_),
|
61 |
+
'{{name}}' => __("Displays the author's nicename", _SQ_PLUGIN_NAME_),
|
62 |
+
'{{user_description}}' => __("Adds the author's biographical info to the post description", _SQ_PLUGIN_NAME_),
|
63 |
+
'{{currentdate}}' => __("Displays the current date of a post/page", _SQ_PLUGIN_NAME_),
|
64 |
+
'{{keyword}}' => __("Adds the post's keyword to the post description", _SQ_PLUGIN_NAME_),
|
65 |
+
)));
|
66 |
+
|
67 |
+
|
68 |
+
define('SQ_ALL_SEP', json_encode(array(
|
69 |
+
'sc-dash' => '-',
|
70 |
+
'sc-ndash' => '–',
|
71 |
+
'sc-mdash' => '—',
|
72 |
+
'sc-middot' => '·',
|
73 |
+
'sc-bull' => '•',
|
74 |
+
'sc-star' => '*',
|
75 |
+
'sc-smstar' => '⋆',
|
76 |
+
'sc-pipe' => '|',
|
77 |
+
'sc-tilde' => '~',
|
78 |
+
'sc-laquo' => '«',
|
79 |
+
'sc-raquo' => '»',
|
80 |
+
'sc-lt' => '<',
|
81 |
+
'sc-gt' => '>',
|
82 |
+
)));
|
config/paths.php
CHANGED
@@ -3,12 +3,13 @@
|
|
3 |
$currentDir = dirname(__FILE__);
|
4 |
|
5 |
define('_SQ_NAME_', 'squirrly');
|
|
|
|
|
6 |
define('_SQ_PLUGIN_NAME_', 'squirrly-seo'); //THIS LINE WILL BE CHANGED WITH THE USER SETTINGS
|
7 |
-
define('_THEME_NAME_', 'default'); //THIS LINE WILL BE CHANGED WITH THE USER SETTINGS
|
8 |
|
9 |
$scheme = (((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") || (defined('FORCE_SSL_ADMIN') && FORCE_SSL_ADMIN)) ? 'https:' : 'http:'); //CHECK IF SCURE
|
10 |
defined('_SQ_DASH_URL_') || define('_SQ_DASH_URL_', 'https://my.squirrly.co/');
|
11 |
-
defined('SQ_URI') || define('SQ_URI',
|
12 |
defined('_SQ_API_URL_') || define('_SQ_API_URL_', '//api.squirrly.co/');
|
13 |
|
14 |
defined('_SQ_STATIC_API_URL_') || define('_SQ_STATIC_API_URL_', '//storage.googleapis.com/squirrly/');
|
@@ -25,13 +26,11 @@ define('_SQ_MODEL_DIR_', _SQ_ROOT_DIR_ . '/models/');
|
|
25 |
define('_SQ_SERVICE_DIR_', _SQ_MODEL_DIR_ . '/services/');
|
26 |
define('_SQ_TRANSLATIONS_DIR_', _SQ_ROOT_DIR_ . '/translations/');
|
27 |
define('_SQ_CORE_DIR_', _SQ_ROOT_DIR_ . '/core/');
|
28 |
-
define('
|
29 |
-
define('_SQ_THEME_DIR_', _SQ_ROOT_DIR_ . '/themes/' . _THEME_NAME_ . '/');
|
30 |
|
31 |
/* URLS */
|
32 |
define('_SQ_URL_', plugins_url('', $currentDir));
|
33 |
-
define('
|
34 |
-
define('_SQ_THEME_URL_', _SQ_URL_ . '/themes/' . _THEME_NAME_ . '/');
|
35 |
|
36 |
|
37 |
$upload_dir = wp_upload_dir();
|
3 |
$currentDir = dirname(__FILE__);
|
4 |
|
5 |
define('_SQ_NAME_', 'squirrly');
|
6 |
+
define('_SQ_NAMESPACE_', 'SQ');
|
7 |
+
define('_SQ_DB_', 'QSS');
|
8 |
define('_SQ_PLUGIN_NAME_', 'squirrly-seo'); //THIS LINE WILL BE CHANGED WITH THE USER SETTINGS
|
|
|
9 |
|
10 |
$scheme = (((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") || (defined('FORCE_SSL_ADMIN') && FORCE_SSL_ADMIN)) ? 'https:' : 'http:'); //CHECK IF SCURE
|
11 |
defined('_SQ_DASH_URL_') || define('_SQ_DASH_URL_', 'https://my.squirrly.co/');
|
12 |
+
defined('SQ_URI') || define('SQ_URI', 'wp480');
|
13 |
defined('_SQ_API_URL_') || define('_SQ_API_URL_', '//api.squirrly.co/');
|
14 |
|
15 |
defined('_SQ_STATIC_API_URL_') || define('_SQ_STATIC_API_URL_', '//storage.googleapis.com/squirrly/');
|
26 |
define('_SQ_SERVICE_DIR_', _SQ_MODEL_DIR_ . '/services/');
|
27 |
define('_SQ_TRANSLATIONS_DIR_', _SQ_ROOT_DIR_ . '/translations/');
|
28 |
define('_SQ_CORE_DIR_', _SQ_ROOT_DIR_ . '/core/');
|
29 |
+
define('_SQ_THEME_DIR_', _SQ_ROOT_DIR_ . '/view/');
|
|
|
30 |
|
31 |
/* URLS */
|
32 |
define('_SQ_URL_', plugins_url('', $currentDir));
|
33 |
+
define('_SQ_THEME_URL_', _SQ_URL_ . '/view/');
|
|
|
34 |
|
35 |
|
36 |
$upload_dir = wp_upload_dir();
|
controllers/Api.php
ADDED
@@ -0,0 +1,76 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SQ_Controllers_Api extends SQ_Classes_FrontController {
|
4 |
+
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Initialize the TinyMCE editor for the current use
|
8 |
+
*
|
9 |
+
* @return void
|
10 |
+
*/
|
11 |
+
public function hookInit() {
|
12 |
+
|
13 |
+
if (SQ_Classes_Tools::getOption('sq_api') == '')
|
14 |
+
return;
|
15 |
+
|
16 |
+
//Change the rest api if needed
|
17 |
+
add_action('rest_api_init', array($this, 'sqApiCall'));
|
18 |
+
}
|
19 |
+
|
20 |
+
|
21 |
+
function sqApiCall() {
|
22 |
+
if (function_exists('register_rest_route')) {
|
23 |
+
register_rest_route('save', '/post/', array(
|
24 |
+
'methods' => WP_REST_Server::EDITABLE,
|
25 |
+
'callback' => array($this, 'savePost'),
|
26 |
+
));
|
27 |
+
}
|
28 |
+
}
|
29 |
+
|
30 |
+
|
31 |
+
public function savePost($request) {
|
32 |
+
SQ_Classes_Tools::setHeader('json');
|
33 |
+
$token = $request->get_param('token');
|
34 |
+
if ($token <> '') {
|
35 |
+
$token = sanitize_text_field($token);
|
36 |
+
}
|
37 |
+
|
38 |
+
if (SQ_Classes_Tools::getOption('sq_token') <> $token) {
|
39 |
+
SQ_Classes_Action::apiCall('sq/user/settings', array('settings' => json_encode(SQ_Classes_Tools::getBriefOptions())), 10);
|
40 |
+
exit(json_encode(array('error' => __('Connection expired. Please try again', _SQ_PLUGIN_NAME_))));
|
41 |
+
|
42 |
+
}
|
43 |
+
|
44 |
+
$post = $request->get_param('post');
|
45 |
+
if ($post = json_decode($post)) {
|
46 |
+
if (isset($post->ID) && $post->ID > 0) {
|
47 |
+
$post = new WP_Post($post);
|
48 |
+
$post->ID = 0;
|
49 |
+
if (isset($post->post_author)) {
|
50 |
+
if (is_email($post->post_author)) {
|
51 |
+
if ($user = get_user_by('email', $post->post_author)) {
|
52 |
+
$post->post_author = $user->ID;
|
53 |
+
} else {
|
54 |
+
exit(json_encode(array('error' => __('Author not found', _SQ_PLUGIN_NAME_))));
|
55 |
+
}
|
56 |
+
} else {
|
57 |
+
exit(json_encode(array('error' => __('Author not found', _SQ_PLUGIN_NAME_))));
|
58 |
+
}
|
59 |
+
} else {
|
60 |
+
exit(json_encode(array('error' => __('Author not found', _SQ_PLUGIN_NAME_))));
|
61 |
+
}
|
62 |
+
|
63 |
+
$post_ID = wp_insert_post($post->to_array());
|
64 |
+
if (is_wp_error($post_ID)) {
|
65 |
+
echo json_encode(array('error' => $post_ID->get_error_message()));
|
66 |
+
} else {
|
67 |
+
echo json_encode(array('saved' => true, 'post_ID' => $post_ID, 'permalink' => get_permalink($post_ID)));
|
68 |
+
}
|
69 |
+
exit();
|
70 |
+
}
|
71 |
+
}
|
72 |
+
echo json_encode(array('error' => true));
|
73 |
+
exit();
|
74 |
+
}
|
75 |
+
|
76 |
+
}
|
controllers/Cron.php
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SQ_Controllers_Cron extends SQ_Classes_FrontController {
|
4 |
+
|
5 |
+
public function processSEOPostCron() {
|
6 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_Tools');
|
7 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_Action');
|
8 |
+
|
9 |
+
if (get_option('sq_seopost') !== false) {
|
10 |
+
$process = json_decode(get_option('sq_seopost'), true);
|
11 |
+
foreach ($process as $key => $call) {
|
12 |
+
|
13 |
+
if (!$response = json_decode(SQ_Classes_Action::apiCall('sq/seo/post', $call, 10))) {
|
14 |
+
break;
|
15 |
+
}
|
16 |
+
|
17 |
+
if (isset($response->saved) && $response->saved == true) {
|
18 |
+
unset($process[$key]);
|
19 |
+
}
|
20 |
+
}
|
21 |
+
update_option('sq_seopost', json_encode($process));
|
22 |
+
}
|
23 |
+
}
|
24 |
+
|
25 |
+
public function processRankingCron() {
|
26 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_Ranking')->processCron();
|
27 |
+
}
|
28 |
+
|
29 |
+
}
|
controllers/{SQ_Feed.php → Feed.php}
RENAMED
@@ -3,7 +3,7 @@
|
|
3 |
/**
|
4 |
* Class for Sitemap Generator
|
5 |
*/
|
6 |
-
class
|
7 |
/* @var string post limit */
|
8 |
|
9 |
var $posts_limit = 10000;
|
@@ -15,7 +15,7 @@ class SQ_Feed extends SQ_FrontController {
|
|
15 |
|
16 |
public function hookPreventRedirect() {
|
17 |
global $wp_query;
|
18 |
-
if (
|
19 |
$wp_query->is_404 = false;
|
20 |
$wp_query->is_feed = true;
|
21 |
|
@@ -27,11 +27,11 @@ class SQ_Feed extends SQ_FrontController {
|
|
27 |
}
|
28 |
|
29 |
public function feedCss() {
|
30 |
-
echo "\t" . '<feedcss>' . _SQ_THEME_URL_ . 'css/' . '
|
31 |
}
|
32 |
|
33 |
public function feedStyle() {
|
34 |
-
echo '<?xml-stylesheet type="text/xsl" href="' . _SQ_THEME_URL_ . 'css/' . '
|
35 |
}
|
36 |
|
37 |
public function feedHeader($content_type, $type) {
|
@@ -43,7 +43,7 @@ class SQ_Feed extends SQ_FrontController {
|
|
43 |
'rss' => ' text/xml',
|
44 |
'rss2' => ' text/xml'
|
45 |
);
|
46 |
-
$content_type = (!empty($types[$type])
|
47 |
|
48 |
return $content_type;
|
49 |
}
|
@@ -52,12 +52,14 @@ class SQ_Feed extends SQ_FrontController {
|
|
52 |
global $post;
|
53 |
if (has_post_thumbnail($post->ID)) {
|
54 |
$attachment = get_post(get_post_thumbnail_id($post->ID));
|
55 |
-
|
56 |
-
|
|
|
57 |
<a href="' . get_permalink($post->ID) . '">
|
58 |
<img src="' . esc_url($thumb[0]) . '" alt="' . get_the_title($post->ID) . '">
|
59 |
</a>
|
60 |
</div>' . $content;
|
|
|
61 |
}
|
62 |
return $content;
|
63 |
}
|
@@ -72,7 +74,7 @@ class SQ_Feed extends SQ_FrontController {
|
|
72 |
|
73 |
public function refreshSitemap($new_status, $old_status, $post) {
|
74 |
if ($old_status <> $new_status && $new_status = 'publish') {
|
75 |
-
if (
|
76 |
wp_schedule_single_event(time() + 5, 'sq_processPing');
|
77 |
}
|
78 |
}
|
3 |
/**
|
4 |
* Class for Sitemap Generator
|
5 |
*/
|
6 |
+
class SQ_Controllers_Feed extends SQ_Classes_FrontController {
|
7 |
/* @var string post limit */
|
8 |
|
9 |
var $posts_limit = 10000;
|
15 |
|
16 |
public function hookPreventRedirect() {
|
17 |
global $wp_query;
|
18 |
+
if (get_query_var('feed')) {
|
19 |
$wp_query->is_404 = false;
|
20 |
$wp_query->is_feed = true;
|
21 |
|
27 |
}
|
28 |
|
29 |
public function feedCss() {
|
30 |
+
echo "\t" . '<feedcss>' . _SQ_THEME_URL_ . 'css/' . 'feed.css</feedcss>' . "\n";
|
31 |
}
|
32 |
|
33 |
public function feedStyle() {
|
34 |
+
echo '<?xml-stylesheet type="text/xsl" href="' . _SQ_THEME_URL_ . 'css/' . 'feed.xsl' . '"?>';
|
35 |
}
|
36 |
|
37 |
public function feedHeader($content_type, $type) {
|
43 |
'rss' => ' text/xml',
|
44 |
'rss2' => ' text/xml'
|
45 |
);
|
46 |
+
$content_type = (!empty($types[$type])) ? $types[$type] : $content_type;
|
47 |
|
48 |
return $content_type;
|
49 |
}
|
52 |
global $post;
|
53 |
if (has_post_thumbnail($post->ID)) {
|
54 |
$attachment = get_post(get_post_thumbnail_id($post->ID));
|
55 |
+
if (isset($attachment->ID)) {
|
56 |
+
$thumb = wp_get_attachment_image_src($attachment->ID, 'large');
|
57 |
+
$content = '<div class="thumbnail">
|
58 |
<a href="' . get_permalink($post->ID) . '">
|
59 |
<img src="' . esc_url($thumb[0]) . '" alt="' . get_the_title($post->ID) . '">
|
60 |
</a>
|
61 |
</div>' . $content;
|
62 |
+
}
|
63 |
}
|
64 |
return $content;
|
65 |
}
|
74 |
|
75 |
public function refreshSitemap($new_status, $old_status, $post) {
|
76 |
if ($old_status <> $new_status && $new_status = 'publish') {
|
77 |
+
if (SQ_Classes_Tools::getOption('sq_sitemap_ping')) {
|
78 |
wp_schedule_single_event(time() + 5, 'sq_processPing');
|
79 |
}
|
80 |
}
|
controllers/FrontMenu.php
ADDED
@@ -0,0 +1,100 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SQ_Controllers_FrontMenu extends SQ_Classes_FrontController {
|
4 |
+
|
5 |
+
public function action() {
|
6 |
+
parent::action();
|
7 |
+
switch (SQ_Classes_Tools::getValue('action')) {
|
8 |
+
case 'sq_saveseo':
|
9 |
+
//Save the SEO settings
|
10 |
+
$json = $this->saveSEO();
|
11 |
+
|
12 |
+
if (SQ_Classes_Tools::isAjax()) {
|
13 |
+
SQ_Classes_Tools::setHeader('json');
|
14 |
+
echo json_encode($json);
|
15 |
+
exit();
|
16 |
+
}
|
17 |
+
break;
|
18 |
+
}
|
19 |
+
}
|
20 |
+
|
21 |
+
public function saveSEO(){
|
22 |
+
$json = array();
|
23 |
+
if (SQ_Classes_Tools::getIsset('sq_hash')) {
|
24 |
+
$sq_hash = SQ_Classes_Tools::getValue('sq_hash', false);
|
25 |
+
$post_id = SQ_Classes_Tools::getValue('post_id', 0);
|
26 |
+
$term_taxonomy_id = SQ_Classes_Tools::getValue('term_taxonomy_id', 0);
|
27 |
+
$taxonomy = SQ_Classes_Tools::getValue('taxonomy', 'category');
|
28 |
+
|
29 |
+
if (!current_user_can('manage_options')) {
|
30 |
+
if (!current_user_can('edit_post', $post_id)) {
|
31 |
+
$json['error'] = 1;
|
32 |
+
$json['error_message'] = __("You don't have enough pemission to edit this article", _SQ_PLUGIN_NAME_);
|
33 |
+
exit();
|
34 |
+
}
|
35 |
+
}
|
36 |
+
|
37 |
+
$url = SQ_Classes_Tools::getValue('sq_url', false);
|
38 |
+
|
39 |
+
$sq = SQ_Classes_ObjController::getClass('SQ_Models_Frontend')->getSqSeo($sq_hash);
|
40 |
+
|
41 |
+
$sq->doseo = SQ_Classes_Tools::getValue('sq_doseo', 0);
|
42 |
+
|
43 |
+
$sq->title = SQ_Classes_Tools::getValue('sq_title', false);
|
44 |
+
$sq->description = SQ_Classes_Tools::getValue('sq_description', false);
|
45 |
+
$sq->keywords = SQ_Classes_Tools::getValue('sq_keywords', array());
|
46 |
+
$sq->canonical = SQ_Classes_Tools::getValue('sq_canonical', false);
|
47 |
+
$sq->noindex = SQ_Classes_Tools::getValue('sq_noindex', 0);
|
48 |
+
$sq->nofollow = SQ_Classes_Tools::getValue('sq_nofollow', 0);
|
49 |
+
$sq->nositemap = SQ_Classes_Tools::getValue('sq_nositemap', 0);
|
50 |
+
|
51 |
+
$sq->og_title = SQ_Classes_Tools::getValue('sq_og_title', false);
|
52 |
+
$sq->og_description = SQ_Classes_Tools::getValue('sq_og_description', false);
|
53 |
+
$sq->og_author = SQ_Classes_Tools::getValue('sq_og_author', false);
|
54 |
+
$sq->og_type = SQ_Classes_Tools::getValue('sq_og_type', 'website');
|
55 |
+
$sq->og_media = SQ_Classes_Tools::getValue('sq_og_media', false);
|
56 |
+
|
57 |
+
$sq->tw_title = SQ_Classes_Tools::getValue('sq_tw_title', false);
|
58 |
+
$sq->tw_description = SQ_Classes_Tools::getValue('sq_tw_description', false);
|
59 |
+
$sq->tw_media = SQ_Classes_Tools::getValue('sq_tw_media', false);
|
60 |
+
|
61 |
+
|
62 |
+
//empty the cache from cache plugins
|
63 |
+
//SQ_Classes_Tools::emptyCache();
|
64 |
+
|
65 |
+
if (SQ_Classes_ObjController::getClass('SQ_Models_BlockSettingsSeo')->db_insert(
|
66 |
+
$url,
|
67 |
+
$sq_hash,
|
68 |
+
(int)$post_id,
|
69 |
+
maybe_serialize($sq->toArray()),
|
70 |
+
gmdate('Y-m-d H:i:s')
|
71 |
+
)
|
72 |
+
) {
|
73 |
+
$json['saved'] = $sq_hash;
|
74 |
+
|
75 |
+
if (SQ_Classes_Tools::isAjax()) {
|
76 |
+
if ($post_id > 0) {
|
77 |
+
if (SQ_Classes_ObjController::getClass("SQ_Controllers_Menu")->setPostByID($post_id)) {
|
78 |
+
$json['html'] = SQ_Classes_ObjController::getClass("SQ_Controllers_Menu")->getView('FrontMenu');
|
79 |
+
}
|
80 |
+
} elseif ($term_taxonomy_id > 0) {
|
81 |
+
if (SQ_Classes_ObjController::getClass("SQ_Controllers_Menu")->setPostByTaxID($term_taxonomy_id, $taxonomy)) {
|
82 |
+
$json['html'] = SQ_Classes_ObjController::getClass("SQ_Controllers_Menu")->getView('FrontMenu');
|
83 |
+
}
|
84 |
+
}
|
85 |
+
}
|
86 |
+
} else {
|
87 |
+
$json['error'] = 1;
|
88 |
+
$json['error_message'] = 'Could not Insert the information';
|
89 |
+
SQ_Classes_Tools::createTable();
|
90 |
+
};
|
91 |
+
|
92 |
+
} else {
|
93 |
+
$json['error'] = 1;
|
94 |
+
$json['error_message'] = 'Wrong number of parameters';
|
95 |
+
|
96 |
+
}
|
97 |
+
|
98 |
+
return $json;
|
99 |
+
}
|
100 |
+
}
|
controllers/Frontend.php
ADDED
@@ -0,0 +1,193 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SQ_Controllers_Frontend extends SQ_Classes_FrontController {
|
4 |
+
|
5 |
+
public function __construct() {
|
6 |
+
if (SQ_Classes_Tools::isAjax()) return;
|
7 |
+
parent::__construct();
|
8 |
+
|
9 |
+
//For favicon and Robots
|
10 |
+
$this->hookCheckFiles();
|
11 |
+
|
12 |
+
add_action('plugins_loaded', array($this, 'hookBuffer'));
|
13 |
+
add_action('template_redirect', array($this, 'hookBuffer'));
|
14 |
+
|
15 |
+
//SET THE POST FROM THE BEGINING
|
16 |
+
add_action('template_redirect', array($this->model, 'setPost'), 0);
|
17 |
+
|
18 |
+
/* Check if sitemap is on and Load the Sitemap */
|
19 |
+
if (SQ_Classes_Tools::getOption('sq_auto_sitemap')) SQ_Classes_ObjController::getClass('SQ_Controllers_Sitemaps');
|
20 |
+
|
21 |
+
/* Load the Feed Style */
|
22 |
+
if (SQ_Classes_Tools::getOption('sq_auto_feed')) SQ_Classes_ObjController::getClass('SQ_Controllers_Feed');
|
23 |
+
|
24 |
+
/* Fix the Links for feed*/
|
25 |
+
if (SQ_Classes_Tools::getOption('sq_url_fix')) add_action('the_content', array($this, 'fixFeedLinks'), 11);
|
26 |
+
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* HOOK THE BUFFER
|
31 |
+
*/
|
32 |
+
public function hookBuffer() {
|
33 |
+
remove_action('template_redirect', array($this, 'hookBuffer'));
|
34 |
+
|
35 |
+
if ($this->isSquirrlySeoEnabled()) {
|
36 |
+
global $wp_super_cache_late_init;
|
37 |
+
if (isset($wp_super_cache_late_init) && $wp_super_cache_late_init == 1 && !did_action('init')) {
|
38 |
+
//add an action after Super cache late login is started
|
39 |
+
add_action('init', array($this->model, 'startBuffer'), PHP_INT_MAX);
|
40 |
+
} elseif (SQ_Classes_Tools::getOption('sq_laterload') && !did_action('template_redirect')) {
|
41 |
+
add_action('template_redirect', array($this->model, 'startBuffer'), PHP_INT_MAX);
|
42 |
+
} else {
|
43 |
+
$this->model->startBuffer();
|
44 |
+
}
|
45 |
+
|
46 |
+
if (defined('WP_ROCKET_VERSION')) {
|
47 |
+
add_filter('rocket_buffer', array($this->model, 'getBuffer'), PHP_INT_MAX);
|
48 |
+
}
|
49 |
+
|
50 |
+
add_action('shutdown', array($this->model, 'getBuffer'));
|
51 |
+
}
|
52 |
+
}
|
53 |
+
|
54 |
+
|
55 |
+
/**
|
56 |
+
* Called after plugins are loaded
|
57 |
+
*/
|
58 |
+
public function hookCheckFiles() {
|
59 |
+
//Check for sitemap and robots
|
60 |
+
if ($basename = $this->isFile($_SERVER['REQUEST_URI'])) {
|
61 |
+
if (SQ_Classes_Tools::getOption('sq_auto_robots') == 1) {
|
62 |
+
if ($basename == "robots.txt") {
|
63 |
+
SQ_Classes_ObjController::getClass('SQ_Models_Services_Robots');
|
64 |
+
apply_filters('sq_robots', false);
|
65 |
+
exit();
|
66 |
+
}
|
67 |
+
}
|
68 |
+
|
69 |
+
if (SQ_Classes_Tools::getOption('favicon') <> '') {
|
70 |
+
if ($basename == "favicon.icon") {
|
71 |
+
SQ_Classes_Tools::setHeader('ico');
|
72 |
+
@readfile(_SQ_CACHE_DIR_ . SQ_Classes_Tools::getOption('favicon'));
|
73 |
+
exit();
|
74 |
+
} elseif ($basename == "touch-icon.png") {
|
75 |
+
SQ_Classes_Tools::setHeader('png');
|
76 |
+
@readfile(_SQ_CACHE_DIR_ . SQ_Classes_Tools::getOption('favicon'));
|
77 |
+
exit();
|
78 |
+
} else {
|
79 |
+
$appleSizes = preg_split('/[,]+/', _SQ_MOBILE_ICON_SIZES);
|
80 |
+
foreach ($appleSizes as $appleSize) {
|
81 |
+
if ($basename == "touch-icon$appleSize.png") {
|
82 |
+
SQ_Classes_Tools::setHeader('png');
|
83 |
+
@readfile(_SQ_CACHE_DIR_ . SQ_Classes_Tools::getOption('favicon') . $appleSize);
|
84 |
+
exit();
|
85 |
+
}
|
86 |
+
}
|
87 |
+
}
|
88 |
+
}
|
89 |
+
|
90 |
+
}
|
91 |
+
|
92 |
+
}
|
93 |
+
|
94 |
+
|
95 |
+
/**
|
96 |
+
* Hook the Header load
|
97 |
+
*/
|
98 |
+
public function hookFronthead() {
|
99 |
+
if (!SQ_Classes_Tools::isAjax()) {
|
100 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia(_SQ_THEME_URL_ . 'css/frontend' . (SQ_DEBUG ? '' : '.min') . '.css');
|
101 |
+
}
|
102 |
+
}
|
103 |
+
|
104 |
+
/**
|
105 |
+
* Change the image path to absolute when in feed
|
106 |
+
* @param string $content
|
107 |
+
*
|
108 |
+
* @return string
|
109 |
+
*/
|
110 |
+
public function fixFeedLinks($content) {
|
111 |
+
if (is_feed()) {
|
112 |
+
$find = $replace = $urls = array();
|
113 |
+
|
114 |
+
@preg_match_all('/<img[^>]*src=[\'"]([^\'"]+)[\'"][^>]*>/i', $content, $out);
|
115 |
+
if (is_array($out)) {
|
116 |
+
if (!is_array($out[1]) || empty($out[1]))
|
117 |
+
return $content;
|
118 |
+
|
119 |
+
foreach ($out[1] as $row) {
|
120 |
+
if (strpos($row, '//') === false) {
|
121 |
+
if (!in_array($row, $urls)) {
|
122 |
+
$urls[] = $row;
|
123 |
+
}
|
124 |
+
}
|
125 |
+
}
|
126 |
+
}
|
127 |
+
|
128 |
+
@preg_match_all('/<a[^>]*href=[\'"]([^\'"]+)[\'"][^>]*>/i', $content, $out);
|
129 |
+
if (is_array($out)) {
|
130 |
+
if (!is_array($out[1]) || empty($out[1]))
|
131 |
+
return $content;
|
132 |
+
|
133 |
+
foreach ($out[1] as $row) {
|
134 |
+
if (strpos($row, '//') === false) {
|
135 |
+
if (!in_array($row, $urls)) {
|
136 |
+
$urls[] = $row;
|
137 |
+
}
|
138 |
+
}
|
139 |
+
}
|
140 |
+
}
|
141 |
+
if (!is_array($urls) || (is_array($urls) && empty($urls))) {
|
142 |
+
return $content;
|
143 |
+
}
|
144 |
+
|
145 |
+
$urls = array_unique($urls);
|
146 |
+
foreach ($urls as $url) {
|
147 |
+
$find[] = "'" . $url . "'";
|
148 |
+
$replace[] = "'" . esc_url(home_url() . $url) . "'";
|
149 |
+
$find[] = '"' . $url . '"';
|
150 |
+
$replace[] = '"' . esc_url(home_url() . $url) . '"';
|
151 |
+
}
|
152 |
+
if (!empty($find) && !empty($replace)) {
|
153 |
+
$content = str_replace($find, $replace, $content);
|
154 |
+
}
|
155 |
+
}
|
156 |
+
return $content;
|
157 |
+
}
|
158 |
+
|
159 |
+
public function hookFrontfooter() {
|
160 |
+
if ($this->isSquirrlySeoEnabled()) {
|
161 |
+
echo $this->model->getFooter();
|
162 |
+
}
|
163 |
+
}
|
164 |
+
|
165 |
+
public function isSquirrlySeoEnabled() {
|
166 |
+
return (apply_filters('sq_use', SQ_Classes_Tools::getOption('sq_use')) == 1);
|
167 |
+
}
|
168 |
+
|
169 |
+
public function isFile($url = null) {
|
170 |
+
if (isset($url) && $url <> '') {
|
171 |
+
$url = basename($url);
|
172 |
+
if (strpos($url, '?') <> '') {
|
173 |
+
$url = substr($url, 0, strpos($url, '?'));
|
174 |
+
}
|
175 |
+
|
176 |
+
$files = array('ico', 'icon', 'txt', 'jpg', 'jpeg', 'png', 'bmp', 'gif',
|
177 |
+
'css', 'scss', 'js',
|
178 |
+
'pdf', 'doc', 'docx', 'csv', 'xls', 'xslx',
|
179 |
+
'mp4', 'mpeg',
|
180 |
+
'zip', 'rar');
|
181 |
+
|
182 |
+
if (strrpos($url, '.') !== false) {
|
183 |
+
$ext = substr($url, strrpos($url, '.') + 1);
|
184 |
+
if (in_array($ext, $files)) {
|
185 |
+
return $url;
|
186 |
+
}
|
187 |
+
}
|
188 |
+
}
|
189 |
+
|
190 |
+
return false;
|
191 |
+
|
192 |
+
}
|
193 |
+
}
|
controllers/Menu.php
ADDED
@@ -0,0 +1,548 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SQ_Controllers_Menu extends SQ_Classes_FrontController {
|
4 |
+
|
5 |
+
/** @var array snippet */
|
6 |
+
private $post_type;
|
7 |
+
public $post;
|
8 |
+
/** @var array snippet */
|
9 |
+
var $options = array();
|
10 |
+
|
11 |
+
|
12 |
+
public function __construct() {
|
13 |
+
parent::__construct();
|
14 |
+
add_action('admin_bar_menu', array($this, 'hookTopmenu'), 999);
|
15 |
+
}
|
16 |
+
|
17 |
+
/**
|
18 |
+
* Hook the Admin load
|
19 |
+
*/
|
20 |
+
public function hookInit() {
|
21 |
+
/* add the plugin menu in admin */
|
22 |
+
if (current_user_can('manage_options')) {
|
23 |
+
//check if activated
|
24 |
+
if (get_transient('sq_activate') == 1) {
|
25 |
+
//create the table
|
26 |
+
SQ_Classes_Tools::createTable();
|
27 |
+
//Check if there are expected upgrades
|
28 |
+
SQ_Classes_Tools::checkUpgrade();
|
29 |
+
|
30 |
+
// Delete the redirect transient
|
31 |
+
delete_transient('sq_activate');
|
32 |
+
SQ_Classes_Action::apiCall('sq/user/settings', array('settings' => json_encode(SQ_Classes_Tools::getBriefOptions())), 10);
|
33 |
+
|
34 |
+
wp_safe_redirect(admin_url('admin.php?page=sq_dashboard'));
|
35 |
+
exit();
|
36 |
+
} else {
|
37 |
+
//Deactivate the QuickSEO plugin
|
38 |
+
if (SQ_Classes_Tools::isPluginInstalled('quick-seo')) {
|
39 |
+
$quickSEO = _QSS_ROOT_DIR_ . '/index.php';
|
40 |
+
if (is_plugin_active(plugin_basename($quickSEO))) {
|
41 |
+
delete_transient('qss_activate');
|
42 |
+
|
43 |
+
deactivate_plugins(plugin_basename($quickSEO), true);
|
44 |
+
SQ_Classes_Error::setMessage(sprintf(__("Good news, %s is integrated in Squirrly SEO now and you don't have to run 2 plugins anymore", _SQ_PLUGIN_NAME_), _QSS_PLUGIN_NAME_));
|
45 |
+
}
|
46 |
+
|
47 |
+
}
|
48 |
+
|
49 |
+
//Deactivate the Premium SEO Pack plugin
|
50 |
+
if (SQ_Classes_Tools::isPluginInstalled('premium-seo-pack')) {
|
51 |
+
$phpSEO = _PSP_ROOT_DIR_ . '/index.php';
|
52 |
+
if (is_plugin_active(plugin_basename($phpSEO))) {
|
53 |
+
delete_transient('psp_activate');
|
54 |
+
deactivate_plugins(plugin_basename($phpSEO), true);
|
55 |
+
SQ_Classes_Error::setMessage(sprintf(__("Good news, %s is integrated in Squirrly SEO now and you don't have to run 2 plugins anymore", _SQ_PLUGIN_NAME_), _PSP_PLUGIN_NAME_));
|
56 |
+
|
57 |
+
}
|
58 |
+
}
|
59 |
+
|
60 |
+
//Make sure Squirrly upgrades the settings and seo
|
61 |
+
if (SQ_Classes_Tools::getOption('sq_ver') < 8200 && SQ_Classes_Tools::getOption('sq_api') <> '') {
|
62 |
+
wp_redirect('admin.php?page=sq_dashboard&action=sq_dataupgrade&nonce=' . wp_create_nonce(_SQ_NONCE_ID_));
|
63 |
+
}
|
64 |
+
}
|
65 |
+
|
66 |
+
if (get_transient('sq_rewrite') == 1) {
|
67 |
+
// Delete the redirect transient
|
68 |
+
delete_transient('sq_rewrite');
|
69 |
+
global $wp_rewrite;
|
70 |
+
$wp_rewrite->flush_rules();
|
71 |
+
}
|
72 |
+
|
73 |
+
|
74 |
+
}
|
75 |
+
//activate the cron job if not exists
|
76 |
+
if (!wp_get_schedule('sq_processCron')) {
|
77 |
+
wp_schedule_event(time(), 'hourly', 'sq_processCron');
|
78 |
+
}
|
79 |
+
|
80 |
+
add_filter('rewrite_rules_array', array(SQ_Classes_ObjController::getClass('SQ_Core_BlockSettingsSeo'), 'rewrite_rules'), 999, 1);
|
81 |
+
|
82 |
+
|
83 |
+
}
|
84 |
+
|
85 |
+
/**
|
86 |
+
* Add a menu in Admin Bar
|
87 |
+
*
|
88 |
+
* @param WP_Admin_Bar $wp_admin_bar
|
89 |
+
*/
|
90 |
+
public function hookTopmenu($wp_admin_bar) {
|
91 |
+
global $tag, $wp_the_query;
|
92 |
+
|
93 |
+
if (!is_user_logged_in()) {
|
94 |
+
return;
|
95 |
+
}
|
96 |
+
|
97 |
+
$wp_admin_bar->add_node(array(
|
98 |
+
'id' => 'sq_posts',
|
99 |
+
'title' => __('See Your Rank on Google', _SQ_PLUGIN_NAME_),
|
100 |
+
'href' => admin_url('admin.php?page=sq_posts'),
|
101 |
+
'parent' => false
|
102 |
+
));
|
103 |
+
|
104 |
+
if (is_admin()) {
|
105 |
+
$current_screen = get_current_screen();
|
106 |
+
SQ_Classes_Tools::dump($current_screen);
|
107 |
+
|
108 |
+
$post = get_post();
|
109 |
+
if ('post' == $current_screen->base
|
110 |
+
&& ($post_type_object = get_post_type_object($post->post_type))
|
111 |
+
&& current_user_can('edit_post', $post->ID)
|
112 |
+
&& ($post_type_object->public)) {
|
113 |
+
} elseif ('edit' == $current_screen->base
|
114 |
+
&& ($post_type_object = get_post_type_object($current_screen->post_type))
|
115 |
+
&& ($post_type_object->show_in_admin_bar)
|
116 |
+
&& !('edit-' . $current_screen->post_type === $current_screen->id)) {
|
117 |
+
} elseif ('term' == $current_screen->base
|
118 |
+
&& isset($tag) && is_object($tag) && !is_wp_error($tag)
|
119 |
+
&& ($tax = get_taxonomy($tag->taxonomy))
|
120 |
+
&& $tax->public) {
|
121 |
+
} else {
|
122 |
+
return;
|
123 |
+
}
|
124 |
+
|
125 |
+
//Add the snippet in all post types
|
126 |
+
$this->addMetabox();
|
127 |
+
} else {
|
128 |
+
//If user set not to load Squirrly in frontend
|
129 |
+
if (!SQ_Classes_Tools::getOption('sq_use_frontend')) {
|
130 |
+
return;
|
131 |
+
}
|
132 |
+
|
133 |
+
if (!current_user_can('manage_options')) {
|
134 |
+
$current_object = $wp_the_query->get_queried_object();
|
135 |
+
|
136 |
+
if (empty($current_object))
|
137 |
+
return;
|
138 |
+
|
139 |
+
if (!empty($current_object->post_type)
|
140 |
+
&& ($post_type_object = get_post_type_object($current_object->post_type))
|
141 |
+
&& current_user_can('edit_post', $current_object->ID)
|
142 |
+
&& $post_type_object->show_in_admin_bar
|
143 |
+
&& $edit_post_link = get_edit_post_link($current_object->ID)) {
|
144 |
+
} elseif (!empty($current_object->taxonomy)
|
145 |
+
&& ($tax = get_taxonomy($current_object->taxonomy))
|
146 |
+
&& current_user_can('edit_term', $current_object->term_id)
|
147 |
+
&& $edit_term_link = get_edit_term_link($current_object->term_id, $current_object->taxonomy)) {
|
148 |
+
} else {
|
149 |
+
return;
|
150 |
+
}
|
151 |
+
}
|
152 |
+
}
|
153 |
+
|
154 |
+
|
155 |
+
$wp_admin_bar->add_node(array(
|
156 |
+
'id' => 'sq_bar_menu',
|
157 |
+
'title' => '<span class="dashicons-sqlogo"></span> ' . __('Custom SEO', _SQ_PLUGIN_NAME_),
|
158 |
+
'parent' => 'top-secondary',
|
159 |
+
));
|
160 |
+
|
161 |
+
$wp_admin_bar->add_menu(array(
|
162 |
+
'id' => 'sq_bar_submenu',
|
163 |
+
'parent' => 'sq_bar_menu',
|
164 |
+
'meta' => array(
|
165 |
+
'html' => $this->getView('FrontMenu'),
|
166 |
+
'tabindex' => PHP_INT_MAX,
|
167 |
+
),
|
168 |
+
));
|
169 |
+
|
170 |
+
if (is_admin()) {
|
171 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('frontmenu');
|
172 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('patterns');
|
173 |
+
}
|
174 |
+
|
175 |
+
}
|
176 |
+
|
177 |
+
/**
|
178 |
+
* Creates the Setting menu in Wordpress
|
179 |
+
*/
|
180 |
+
public function hookMenu() {
|
181 |
+
|
182 |
+
$this->post_type = SQ_Classes_Tools::getOption('sq_post_types');
|
183 |
+
|
184 |
+
//Push the Analytics Check
|
185 |
+
if (strpos($_SERVER['REQUEST_URI'], '?page=sq_dashboard') !== false) {
|
186 |
+
SQ_Classes_Tools::saveOptions('sq_dashboard', 1);
|
187 |
+
}
|
188 |
+
if (strpos($_SERVER['REQUEST_URI'], '?page=sq_analytics') !== false) {
|
189 |
+
SQ_Classes_Tools::saveOptions('sq_analytics', 1);
|
190 |
+
}
|
191 |
+
|
192 |
+
$analytics_alert = 0;
|
193 |
+
if (SQ_Classes_ObjController::getClass('SQ_Models_Post')->countKeywords() > 0 && !SQ_Classes_Tools::getOption('sq_analytics')) {
|
194 |
+
$analytics_alert = 1;
|
195 |
+
if (!get_transient('sq_analytics')) {
|
196 |
+
set_transient('sq_analytics', time(), (60 * 60 * 24 * 7));
|
197 |
+
} else {
|
198 |
+
$time_loaded = get_transient('sq_analytics');
|
199 |
+
if (time() - $time_loaded > (60 * 60 * 24 * 3) && time() - $time_loaded < (60 * 60 * 24 * 14)) {
|
200 |
+
SQ_Classes_Error::setError(__('Check out the Squirrly Analytics section. <a href="admin.php?page=sq_posts" title="Squirrly Analytics">Click here</a>', _SQ_PLUGIN_NAME_));
|
201 |
+
}
|
202 |
+
}
|
203 |
+
}
|
204 |
+
|
205 |
+
$dashboard_alert = (int)(SQ_Classes_Tools::getOption('sq_dashboard') == 0);
|
206 |
+
|
207 |
+
|
208 |
+
///////////////
|
209 |
+
|
210 |
+
$this->model->addMenu(array(ucfirst(_SQ_NAME_),
|
211 |
+
'Squirrly' . SQ_Classes_Tools::showNotices(SQ_Classes_Tools::$errors_count, 'errors_count'),
|
212 |
+
'edit_posts',
|
213 |
+
'sq_dashboard',
|
214 |
+
null,
|
215 |
+
_SQ_THEME_URL_ . 'img/settings/menu_icon_16.png'
|
216 |
+
));
|
217 |
+
|
218 |
+
$this->model->addSubmenu(array('sq_dashboard',
|
219 |
+
ucfirst(_SQ_NAME_) . __(' Dashboard', _SQ_PLUGIN_NAME_),
|
220 |
+
((SQ_Classes_Tools::getOption('sq_api') == '') ? __('First Step', _SQ_PLUGIN_NAME_) : __('Dashboard', _SQ_PLUGIN_NAME_)) . SQ_Classes_Tools::showNotices($dashboard_alert, 'errors_count'),
|
221 |
+
'edit_posts',
|
222 |
+
'sq_dashboard',
|
223 |
+
array(SQ_Classes_ObjController::getClass('SQ_Core_BlockDashboard'), 'init')
|
224 |
+
));
|
225 |
+
|
226 |
+
//IF SERP PLUGIN IS NOT INSTALLED
|
227 |
+
if (!class_exists('SRC_Classes_ObjController')) {
|
228 |
+
$this->model->addSubmenu(array('sq_dashboard',
|
229 |
+
ucfirst(_SQ_NAME_) . __(' Performance Analytics', _SQ_PLUGIN_NAME_),
|
230 |
+
__('Performance <br />Analytics', _SQ_PLUGIN_NAME_) . SQ_Classes_Tools::showNotices($analytics_alert, 'errors_count'),
|
231 |
+
'edit_posts',
|
232 |
+
'sq_posts',
|
233 |
+
array(SQ_Classes_ObjController::getClass('SQ_Core_BlockPostsAnalytics'), 'init')
|
234 |
+
));
|
235 |
+
}
|
236 |
+
|
237 |
+
$this->model->addSubmenu(array('sq_dashboard',
|
238 |
+
ucfirst(_SQ_NAME_) . __(' Keyword Research', _SQ_PLUGIN_NAME_),
|
239 |
+
__('Keyword Research', _SQ_PLUGIN_NAME_),
|
240 |
+
'edit_posts',
|
241 |
+
'sq_keywordresearch',
|
242 |
+
array(SQ_Classes_ObjController::getClass('SQ_Core_BlockKeywordResearch'), 'init')
|
243 |
+
));
|
244 |
+
|
245 |
+
$this->model->addSubmenu(array('sq_dashboard',
|
246 |
+
ucfirst(_SQ_NAME_) . __(' Live Assistant', _SQ_PLUGIN_NAME_),
|
247 |
+
__('Live Assistant', _SQ_PLUGIN_NAME_),
|
248 |
+
'edit_posts',
|
249 |
+
'sq_liveassistant',
|
250 |
+
array(SQ_Classes_ObjController::getClass('SQ_Core_BlockLiveAssistant'), 'init')
|
251 |
+
));
|
252 |
+
$this->model->addSubmenu(array('sq_dashboard',
|
253 |
+
__(' Copywriting', _SQ_PLUGIN_NAME_),
|
254 |
+
__('Copywriting', _SQ_PLUGIN_NAME_),
|
255 |
+
'edit_posts',
|
256 |
+
'sq_copyright',
|
257 |
+
array(SQ_Classes_ObjController::getClass('SQ_Core_BlockCopyright'), 'init')
|
258 |
+
));
|
259 |
+
|
260 |
+
if (current_user_can('manage_options')) {
|
261 |
+
$this->model->addSubmenu(array('sq_dashboard',
|
262 |
+
ucfirst(_SQ_NAME_) . __(' SEO Audit', _SQ_PLUGIN_NAME_),
|
263 |
+
__('Site Audit', _SQ_PLUGIN_NAME_),
|
264 |
+
'edit_posts',
|
265 |
+
'sq_seoaudit',
|
266 |
+
array(SQ_Classes_ObjController::getClass('SQ_Core_BlockAudit'), 'init')
|
267 |
+
));
|
268 |
+
}
|
269 |
+
|
270 |
+
$this->model->addSubmenu(array('sq_dashboard',
|
271 |
+
ucfirst(_SQ_NAME_) . __(' SEO Settings', _SQ_PLUGIN_NAME_),
|
272 |
+
__('SEO Settings', _SQ_PLUGIN_NAME_) . SQ_Classes_Tools::showNotices(SQ_Classes_Tools::$errors_count, 'errors_count'),
|
273 |
+
'manage_options',
|
274 |
+
'sq_seo',
|
275 |
+
array(SQ_Classes_ObjController::getClass('SQ_Core_BlockSettingsSeo'), 'init')
|
276 |
+
));
|
277 |
+
|
278 |
+
|
279 |
+
$this->model->addSubmenu(array('sq_dashboard',
|
280 |
+
ucfirst(_SQ_NAME_) . __(' Advanced Settings', _SQ_PLUGIN_NAME_),
|
281 |
+
__('Advanced Settings', _SQ_PLUGIN_NAME_),
|
282 |
+
'manage_options',
|
283 |
+
'sq_settings',
|
284 |
+
array(SQ_Classes_ObjController::getClass('SQ_Core_BlockSettings'), 'init')
|
285 |
+
));
|
286 |
+
|
287 |
+
$this->model->addSubmenu(array('sq_dashboard',
|
288 |
+
ucfirst(_SQ_NAME_) . __(' SEO Patterns', _SQ_PLUGIN_NAME_),
|
289 |
+
__('Patterns', _SQ_PLUGIN_NAME_),
|
290 |
+
'manage_options',
|
291 |
+
'sq_patterns',
|
292 |
+
array(SQ_Classes_ObjController::getClass('SQ_Core_BlockPatterns'), 'init')
|
293 |
+
));
|
294 |
+
|
295 |
+
$this->model->addSubmenu(array('sq_dashboard',
|
296 |
+
ucfirst(_SQ_NAME_) . __(' Account Info', _SQ_PLUGIN_NAME_),
|
297 |
+
__('Account Info', _SQ_PLUGIN_NAME_),
|
298 |
+
'manage_options',
|
299 |
+
'sq_account',
|
300 |
+
array(SQ_Classes_ObjController::getClass('SQ_Core_BlockAccount'), 'init')
|
301 |
+
));
|
302 |
+
|
303 |
+
$this->model->addSubmenu(array('sq_dashboard',
|
304 |
+
ucfirst(_SQ_NAME_) . __(' Support', _SQ_PLUGIN_NAME_),
|
305 |
+
__('Support', _SQ_PLUGIN_NAME_),
|
306 |
+
'edit_posts',
|
307 |
+
'sq_customerservice',
|
308 |
+
array(SQ_Classes_ObjController::getClass('SQ_Core_BlockCustomerService'), 'init')
|
309 |
+
));
|
310 |
+
|
311 |
+
$this->model->addSubmenu(array('sq_dashboard',
|
312 |
+
__('Become an Affiliate with ', _SQ_PLUGIN_NAME_) . ucfirst(_SQ_NAME_),
|
313 |
+
__('Become an Affiliate', _SQ_PLUGIN_NAME_),
|
314 |
+
'edit_posts',
|
315 |
+
'sq_affiliate',
|
316 |
+
array(SQ_Classes_ObjController::getClass('SQ_Core_BlockAffiliate'), 'init')
|
317 |
+
));
|
318 |
+
|
319 |
+
if (current_user_can('manage_options')) {
|
320 |
+
$this->model->addSubmenu(array('sq_dashboard',
|
321 |
+
__('Import SEO ', _SQ_PLUGIN_NAME_),
|
322 |
+
__('Import SEO', _SQ_PLUGIN_NAME_),
|
323 |
+
'edit_posts',
|
324 |
+
'sq_import',
|
325 |
+
array(SQ_Classes_ObjController::getClass('SQ_Core_BlockImport'), 'init')
|
326 |
+
));
|
327 |
+
}
|
328 |
+
|
329 |
+
foreach ($this->post_type as $type) {
|
330 |
+
$this->model->addMeta(array('post' . _SQ_NAME_,
|
331 |
+
ucfirst(_SQ_NAME_),
|
332 |
+
array(SQ_Classes_ObjController::getClass('SQ_Controllers_Post'), 'init'),
|
333 |
+
$type,
|
334 |
+
'side',
|
335 |
+
'high'
|
336 |
+
));
|
337 |
+
}
|
338 |
+
|
339 |
+
|
340 |
+
//Add the Rank in the Posts list
|
341 |
+
$postlist = SQ_Classes_ObjController::getClass('SQ_Controllers_PostsList');
|
342 |
+
if (is_object($postlist)) {
|
343 |
+
$postlist->init();
|
344 |
+
}
|
345 |
+
|
346 |
+
//Show bar to go back and finish the help
|
347 |
+
if (current_user_can('manage_options') && ($this->is_page('edit') || strpos($_SERVER['REQUEST_URI'], 'sq_posts') !== false)) {
|
348 |
+
if (SQ_Classes_Tools::getOption('active_help') <> '' && !SQ_Classes_Tools::getOption('ignore_warn')) {
|
349 |
+
SQ_Classes_Error::setError(sprintf(__('Go back and complete the Squirrly Tasks for today %sContinue%s', _SQ_PLUGIN_NAME_), '<a href="admin.php?page=sq_' . SQ_Classes_Tools::getOption('active_help') . '" class="sq_button" title="Continue the Help">', '</a>'), 'helpnotice');
|
350 |
+
}
|
351 |
+
}
|
352 |
+
|
353 |
+
|
354 |
+
}
|
355 |
+
|
356 |
+
/**
|
357 |
+
* Add Post Editor Meta Box
|
358 |
+
*/
|
359 |
+
public function addMetabox() {
|
360 |
+
$this->model->addMeta(array('sq_blocksnippet',
|
361 |
+
ucfirst(_SQ_NAME_) . ' ' . __('SEO Snippet', _SQ_PLUGIN_NAME_),
|
362 |
+
array(SQ_Classes_ObjController::getClass('SQ_Controllers_FrontMenu'), 'show'),
|
363 |
+
null,
|
364 |
+
'normal',
|
365 |
+
'high'
|
366 |
+
));
|
367 |
+
}
|
368 |
+
|
369 |
+
/**
|
370 |
+
* Hook the Head sequence in frontend when user is logged in
|
371 |
+
*/
|
372 |
+
public function hookFronthead() {
|
373 |
+
if (current_user_can('edit_posts')) {
|
374 |
+
//prevent some compatibility errors with other plugins
|
375 |
+
remove_all_actions('print_media_templates');
|
376 |
+
|
377 |
+
//loade the media library
|
378 |
+
wp_enqueue_media();
|
379 |
+
|
380 |
+
//Set the current post domain with all the data
|
381 |
+
$this->post = SQ_Classes_ObjController::getClass('SQ_Models_Frontend')->getPost();
|
382 |
+
}
|
383 |
+
}
|
384 |
+
|
385 |
+
/**
|
386 |
+
* Called when Post action is triggered
|
387 |
+
*
|
388 |
+
* @return void
|
389 |
+
*/
|
390 |
+
public function action() {
|
391 |
+
parent::action();
|
392 |
+
|
393 |
+
if (!current_user_can('edit_posts')) {
|
394 |
+
return;
|
395 |
+
}
|
396 |
+
|
397 |
+
SQ_Classes_Tools::setHeader('json');
|
398 |
+
|
399 |
+
switch (SQ_Classes_Tools::getValue('action')) {
|
400 |
+
case 'sq_getfrontmenu':
|
401 |
+
$json = array();
|
402 |
+
$post_id = (int)SQ_Classes_Tools::getValue('post_id', 0);
|
403 |
+
$term_taxonomy_id = (int)SQ_Classes_Tools::getValue('term_taxonomy_id', 0);
|
404 |
+
$taxonomy = SQ_Classes_Tools::getValue('taxonomy', 'category');
|
405 |
+
|
406 |
+
if ($post_id > 0) {
|
407 |
+
if ($this->setPostByID($post_id)) {
|
408 |
+
$json['html'] = $this->getView('FrontMenu');
|
409 |
+
}
|
410 |
+
} elseif ($term_taxonomy_id > 0) {
|
411 |
+
if ($this->setPostByTaxID($term_taxonomy_id, $taxonomy)) {
|
412 |
+
if (get_term_link($term_taxonomy_id) == $this->post->url) {
|
413 |
+
$json['html'] = $this->getView('FrontMenu');
|
414 |
+
}
|
415 |
+
}
|
416 |
+
}
|
417 |
+
echo json_encode($json);
|
418 |
+
exit();
|
419 |
+
}
|
420 |
+
}
|
421 |
+
|
422 |
+
public function getPostType($for, $post_type = null) {
|
423 |
+
switch ($for) {
|
424 |
+
case 'og:type':
|
425 |
+
if (isset($this->post->sq) && $this->post->sq->og_type <> '') {
|
426 |
+
if ($this->post->sq->og_type == $post_type) return 'selected="selected"';
|
427 |
+
} else {
|
428 |
+
switch ($post_type) {
|
429 |
+
case 'website':
|
430 |
+
if ($this->post->post_type == 'home') return 'selected="selected"';
|
431 |
+
break;
|
432 |
+
default:
|
433 |
+
if ($this->post->post_type == $post_type) return 'selected="selected"';
|
434 |
+
}
|
435 |
+
}
|
436 |
+
break;
|
437 |
+
}
|
438 |
+
return false;
|
439 |
+
}
|
440 |
+
|
441 |
+
public function getImportList() {
|
442 |
+
return apply_filters('sq_importList', false);
|
443 |
+
}
|
444 |
+
|
445 |
+
public function setPostByURL($url) {
|
446 |
+
$post_id = url_to_postid($url);
|
447 |
+
$this->post = get_post($post_id);
|
448 |
+
|
449 |
+
if ($post_id > 0) {
|
450 |
+
add_filter('sq_current_post', array($this, 'setCurrentPost'), 10);
|
451 |
+
SQ_Classes_ObjController::getClass('SQ_Models_Frontend')->setPost();
|
452 |
+
$this->post = SQ_Classes_ObjController::getClass('SQ_Models_Frontend')->getPost();
|
453 |
+
return $this->post;
|
454 |
+
}
|
455 |
+
|
456 |
+
return false;
|
457 |
+
}
|
458 |
+
|
459 |
+
public function setPostByID($post = 0, $taxonomy = 'post') {
|
460 |
+
if ($post instanceof WP_Post) {
|
461 |
+
$this->post = $post;
|
462 |
+
} else {
|
463 |
+
$post_id = (int)$post;
|
464 |
+
if ($post_id > 0) {
|
465 |
+
$this->post = get_post($post_id);
|
466 |
+
}
|
467 |
+
}
|
468 |
+
|
469 |
+
if ($this->post) {
|
470 |
+
set_query_var('post_type', $this->post->post_type);
|
471 |
+
$this->post = SQ_Classes_ObjController::getClass('SQ_Models_Frontend')->setPost($this->post)->getPost();
|
472 |
+
|
473 |
+
SQ_Classes_Tools::dump($this->post);
|
474 |
+
return $this->post;
|
475 |
+
}
|
476 |
+
return false;
|
477 |
+
}
|
478 |
+
|
479 |
+
public function setPostByTaxID($term_taxonomy_id = 0, $taxonomy = 'category') {
|
480 |
+
if ($term_taxonomy_id > 0) {
|
481 |
+
global $wp_query;
|
482 |
+
|
483 |
+
$term = get_term($term_taxonomy_id, $taxonomy);
|
484 |
+
if ($taxonomy == 'category') {
|
485 |
+
$args = array('posts_per_page' => '1', 'cat' => $term_taxonomy_id);
|
486 |
+
} elseif ($taxonomy == 'post_tag') {
|
487 |
+
$args = array('posts_per_page' => 1, 'tag_id' => $term_taxonomy_id);
|
488 |
+
} else {
|
489 |
+
$args = array('posts_per_page' => 1, $taxonomy => $term->slug, 'term_id' => $term_taxonomy_id);
|
490 |
+
}
|
491 |
+
|
492 |
+
$tax_query = array(
|
493 |
+
array(
|
494 |
+
'taxonomy' => $taxonomy,
|
495 |
+
'terms' => $term->slug,
|
496 |
+
'field' => 'slug',
|
497 |
+
'include_children' => true,
|
498 |
+
'operator' => 'IN'
|
499 |
+
),
|
500 |
+
array(
|
501 |
+
'taxonomy' => $taxonomy,
|
502 |
+
'terms' => $term->slug,
|
503 |
+
'field' => 'slug',
|
504 |
+
'include_children' => false,
|
505 |
+
)
|
506 |
+
);
|
507 |
+
|
508 |
+
$args['tax_query'] = $tax_query;
|
509 |
+
$wp_query->query($args);
|
510 |
+
set_query_var('post_type', $taxonomy);
|
511 |
+
|
512 |
+
if ($this->post = SQ_Classes_ObjController::getClass('SQ_Models_Frontend')->setPost($term)->getPost()) {
|
513 |
+
return $this->post;
|
514 |
+
}
|
515 |
+
}
|
516 |
+
return false;
|
517 |
+
}
|
518 |
+
|
519 |
+
public function setCurrentPost() {
|
520 |
+
return $this->post;
|
521 |
+
}
|
522 |
+
|
523 |
+
/**
|
524 |
+
* Is the user on page name? Default name = post edit page
|
525 |
+
* name = 'quirrly'
|
526 |
+
*
|
527 |
+
* @global array $pagenow
|
528 |
+
* @param string $name
|
529 |
+
* @return boolean
|
530 |
+
*/
|
531 |
+
public function is_page($name = '') {
|
532 |
+
global $pagenow;
|
533 |
+
$page = array();
|
534 |
+
//make sure we are on the backend
|
535 |
+
if (is_admin() && $name <> '') {
|
536 |
+
if ($name == 'edit') {
|
537 |
+
$page = array('post.php', 'post-new.php');
|
538 |
+
} else {
|
539 |
+
array_push($page, $name . '.php');
|
540 |
+
}
|
541 |
+
|
542 |
+
return in_array($pagenow, $page);
|
543 |
+
}
|
544 |
+
|
545 |
+
return false;
|
546 |
+
}
|
547 |
+
|
548 |
+
}
|
controllers/{SQ_Post.php → Post.php}
RENAMED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class
|
4 |
|
5 |
public $saved;
|
6 |
|
@@ -16,15 +16,15 @@ class SQ_Post extends SQ_FrontController {
|
|
16 |
add_filter('mce_external_plugins', array($this->model, 'addHeadingButton'));
|
17 |
add_filter('mce_buttons', array($this->model, 'registerButton'));
|
18 |
|
19 |
-
if (
|
20 |
return;
|
21 |
|
22 |
add_action('save_post', array($this, 'hookSavePost'), 99, 1);
|
23 |
add_action('shopp_product_saved', array($this, 'hookShopp'), 11, 1);
|
24 |
add_action('edit_attachment', array($this, 'checkSeo'), 99, 1);
|
25 |
|
26 |
-
if (
|
27 |
-
add_action('transition_post_status', array(
|
28 |
}
|
29 |
}
|
30 |
|
@@ -44,14 +44,14 @@ class SQ_Post extends SQ_FrontController {
|
|
44 |
* Set the global variable $sq_postID for cookie and keyword record
|
45 |
*/
|
46 |
if ((int)$post_ID == 0) {
|
47 |
-
if (
|
48 |
-
$GLOBALS['sq_postID'] = (int)
|
49 |
} else {
|
50 |
$GLOBALS['sq_postID'] = $post_ID;
|
51 |
}
|
52 |
/* * ****************************** */
|
53 |
|
54 |
-
echo '<script type="text/javascript">(function() {
|
55 |
}
|
56 |
|
57 |
/**
|
@@ -75,20 +75,20 @@ class SQ_Post extends SQ_FrontController {
|
|
75 |
remove_action('save_post', array($this, 'hookSavePost'), 99);
|
76 |
|
77 |
//If the post is a new or edited post
|
78 |
-
if ((
|
79 |
wp_is_post_autosave($post_id) == '' &&
|
80 |
get_post_status($post_id) != 'auto-draft' &&
|
81 |
get_post_status($post_id) != 'inherit' &&
|
82 |
-
|
83 |
) {
|
84 |
|
85 |
if ($this->saved[$post_id] === false) {
|
86 |
-
//check for custom SEO
|
87 |
-
$this->_checkAdvMeta($post_id);
|
88 |
//check the SEO from Squirrly Live Assistant
|
89 |
$this->checkSeo($post_id, get_post_status($post_id));
|
90 |
//check the remote images
|
91 |
$this->checkImage($post_id);
|
|
|
|
|
92 |
}
|
93 |
$this->saved[$post_id] = true;
|
94 |
}
|
@@ -97,6 +97,22 @@ class SQ_Post extends SQ_FrontController {
|
|
97 |
add_action('save_post', array($this, 'hookSavePost'), 99);
|
98 |
}
|
99 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
100 |
/**
|
101 |
* Check if the image is a remote image and save it locally
|
102 |
*
|
@@ -106,12 +122,12 @@ class SQ_Post extends SQ_FrontController {
|
|
106 |
public function checkImage($post_id) {
|
107 |
|
108 |
//if the option to save the images locally is set on
|
109 |
-
if (
|
110 |
|
111 |
@set_time_limit(90);
|
112 |
$local_file = false;
|
113 |
|
114 |
-
$content =
|
115 |
$tmpcontent = trim(html_entity_decode($content), "\n");
|
116 |
$urls = array();
|
117 |
|
@@ -147,7 +163,6 @@ class SQ_Post extends SQ_FrontController {
|
|
147 |
$time = microtime(true);
|
148 |
foreach ($urls as $url) {
|
149 |
if ($file = $this->model->upload_image($url)) {
|
150 |
-
|
151 |
if (!file_is_valid_image($file['file']))
|
152 |
continue;
|
153 |
|
@@ -155,21 +170,25 @@ class SQ_Post extends SQ_FrontController {
|
|
155 |
if ($local_file !== false) {
|
156 |
$content = str_replace($url, $local_file, $content);
|
157 |
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
|
|
|
|
168 |
}
|
169 |
}
|
|
|
170 |
if (microtime(true) - $time >= 20) {
|
171 |
break;
|
172 |
}
|
|
|
173 |
}
|
174 |
|
175 |
|
@@ -182,6 +201,7 @@ class SQ_Post extends SQ_FrontController {
|
|
182 |
}
|
183 |
}
|
184 |
|
|
|
185 |
/**
|
186 |
* Check the SEO from Squirrly Live Assistant
|
187 |
*
|
@@ -191,22 +211,22 @@ class SQ_Post extends SQ_FrontController {
|
|
191 |
public function checkSeo($post_id, $status = '') {
|
192 |
$args = array();
|
193 |
|
194 |
-
$seo =
|
195 |
|
196 |
if (is_array($seo) && count($seo) > 0)
|
197 |
$args['seo'] = implode(',', $seo);
|
198 |
|
199 |
-
$args['keyword'] =
|
200 |
|
201 |
$args['status'] = $status;
|
202 |
$args['permalink'] = get_permalink($post_id);
|
203 |
$args['permalink'] = $this->getPaged($args['permalink']);
|
204 |
-
$args['author'] = (int)
|
205 |
$args['post_id'] = $post_id;
|
206 |
|
207 |
|
208 |
-
if (
|
209 |
-
|
210 |
} else {
|
211 |
$process = array();
|
212 |
if (get_option('sq_seopost') !== false) {
|
@@ -222,13 +242,18 @@ class SQ_Post extends SQ_FrontController {
|
|
222 |
|
223 |
//Save the keyword for this post
|
224 |
if ($json = $this->model->getKeyword($post_id)) {
|
225 |
-
$json->keyword = addslashes(
|
226 |
$this->model->saveKeyword($post_id, $json);
|
227 |
} else {
|
228 |
$args = array();
|
229 |
-
$args['keyword'] = addslashes(
|
230 |
$this->model->saveKeyword($post_id, json_decode(json_encode($args)));
|
231 |
}
|
|
|
|
|
|
|
|
|
|
|
232 |
}
|
233 |
|
234 |
public function getPaged($link) {
|
@@ -247,13 +272,7 @@ class SQ_Post extends SQ_FrontController {
|
|
247 |
public function action() {
|
248 |
parent::action();
|
249 |
|
250 |
-
switch (
|
251 |
-
case 'sq_save_meta':
|
252 |
-
$return = $this->_checkAdvMeta(SQ_Tools::getValue('post_id'));
|
253 |
-
SQ_Tools::setHeader('json');
|
254 |
-
echo json_encode($return);
|
255 |
-
SQ_Tools::emptyCache();
|
256 |
-
break;
|
257 |
case 'sq_save_ogimage':
|
258 |
if (!empty($_FILES['ogimage'])) {
|
259 |
$return = $this->model->addImage($_FILES['ogimage']);
|
@@ -267,93 +286,63 @@ class SQ_Post extends SQ_FrontController {
|
|
267 |
'post_content' => '',
|
268 |
'post_status' => 'inherit',
|
269 |
'guid' => $local_file
|
270 |
-
), $return['file'],
|
271 |
|
272 |
$attach_data = wp_generate_attachment_metadata($attach_id, $return['file']);
|
273 |
wp_update_attachment_metadata($attach_id, $attach_data);
|
274 |
}
|
275 |
-
|
276 |
echo json_encode($return);
|
277 |
-
|
278 |
|
279 |
break;
|
280 |
case 'sq_get_keyword':
|
281 |
-
|
282 |
-
if (
|
283 |
-
echo json_encode($this->model->getKeywordsFromPost(
|
284 |
} else {
|
285 |
echo json_encode(array('error' => true));
|
286 |
}
|
287 |
-
|
288 |
break;
|
289 |
}
|
290 |
exit();
|
291 |
}
|
292 |
|
293 |
/**
|
294 |
-
*
|
295 |
-
* @param
|
296 |
-
* @return array | false
|
297 |
-
*
|
298 |
*/
|
299 |
-
private function
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
$
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
if (SQ_Tools::getIsset('sq_canonical'))
|
320 |
-
$meta[] = array('key' => '_sq_canonical',
|
321 |
-
'value' => SQ_Tools::getValue('sq_canonical'));
|
322 |
-
|
323 |
-
$this->model->saveAdvMeta($post_id, $meta);
|
324 |
-
|
325 |
-
return $meta;
|
326 |
}
|
327 |
-
return false;
|
328 |
}
|
329 |
|
330 |
public function hookFooter() {
|
331 |
-
if (!defined('DISABLE_WP_CRON') || DISABLE_WP_CRON
|
332 |
global $pagenow;
|
333 |
if (in_array($pagenow, array('post.php', 'post-new.php'))) {
|
334 |
-
|
335 |
}
|
336 |
}
|
337 |
}
|
338 |
|
339 |
-
public function processCron() {
|
340 |
-
SQ_ObjController::getController('SQ_Tools', false);
|
341 |
-
SQ_ObjController::getController('SQ_Action', false);
|
342 |
-
|
343 |
-
if (get_option('sq_seopost') !== false) {
|
344 |
-
$process = json_decode(get_option('sq_seopost'), true);
|
345 |
-
foreach ($process as $key => $call) {
|
346 |
-
|
347 |
-
if (!$response = json_decode(SQ_Action::apiCall('sq/seo/post', $call, 10))) {
|
348 |
-
break;
|
349 |
-
}
|
350 |
-
|
351 |
-
if (isset($response->saved) && $response->saved == true) {
|
352 |
-
unset($process[$key]);
|
353 |
-
}
|
354 |
-
}
|
355 |
-
update_option('sq_seopost', json_encode($process));
|
356 |
-
}
|
357 |
-
}
|
358 |
-
|
359 |
}
|
1 |
<?php
|
2 |
|
3 |
+
class SQ_Controllers_Post extends SQ_Classes_FrontController {
|
4 |
|
5 |
public $saved;
|
6 |
|
16 |
add_filter('mce_external_plugins', array($this->model, 'addHeadingButton'));
|
17 |
add_filter('mce_buttons', array($this->model, 'registerButton'));
|
18 |
|
19 |
+
if (SQ_Classes_Tools::getOption('sq_api') == '')
|
20 |
return;
|
21 |
|
22 |
add_action('save_post', array($this, 'hookSavePost'), 99, 1);
|
23 |
add_action('shopp_product_saved', array($this, 'hookShopp'), 11, 1);
|
24 |
add_action('edit_attachment', array($this, 'checkSeo'), 99, 1);
|
25 |
|
26 |
+
if (SQ_Classes_Tools::getOption('sq_use') && SQ_Classes_Tools::getOption('sq_auto_sitemap')) {
|
27 |
+
add_action('transition_post_status', array(SQ_Classes_ObjController::getClass('SQ_Controllers_Sitemaps'), 'refreshSitemap'), 9999, 3);
|
28 |
}
|
29 |
}
|
30 |
|
44 |
* Set the global variable $sq_postID for cookie and keyword record
|
45 |
*/
|
46 |
if ((int)$post_ID == 0) {
|
47 |
+
if (SQ_Classes_Tools::getIsset('id'))
|
48 |
+
$GLOBALS['sq_postID'] = (int)SQ_Classes_Tools::getValue('id');
|
49 |
} else {
|
50 |
$GLOBALS['sq_postID'] = $post_ID;
|
51 |
}
|
52 |
/* * ****************************** */
|
53 |
|
54 |
+
echo '<script type="text/javascript">(function($) {$.sq_tinymce = { callback: function () {}, setup: function(ed){} } })(jQuery);</script>';
|
55 |
}
|
56 |
|
57 |
/**
|
75 |
remove_action('save_post', array($this, 'hookSavePost'), 99);
|
76 |
|
77 |
//If the post is a new or edited post
|
78 |
+
if ((SQ_Classes_Tools::getValue('action')) == 'editpost' &&
|
79 |
wp_is_post_autosave($post_id) == '' &&
|
80 |
get_post_status($post_id) != 'auto-draft' &&
|
81 |
get_post_status($post_id) != 'inherit' &&
|
82 |
+
SQ_Classes_Tools::getValue('autosave') == ''
|
83 |
) {
|
84 |
|
85 |
if ($this->saved[$post_id] === false) {
|
|
|
|
|
86 |
//check the SEO from Squirrly Live Assistant
|
87 |
$this->checkSeo($post_id, get_post_status($post_id));
|
88 |
//check the remote images
|
89 |
$this->checkImage($post_id);
|
90 |
+
//check sq mark remained
|
91 |
+
$this->removeHighlight($post_id);
|
92 |
}
|
93 |
$this->saved[$post_id] = true;
|
94 |
}
|
97 |
add_action('save_post', array($this, 'hookSavePost'), 99);
|
98 |
}
|
99 |
|
100 |
+
/**
|
101 |
+
* Remove the Squirrly Highlights in case there are some left
|
102 |
+
* @param $post_id
|
103 |
+
*/
|
104 |
+
public function removeHighlight($post_id) {
|
105 |
+
$content = SQ_Classes_Tools::getValue('post_content', '', true); //get the content in html format
|
106 |
+
|
107 |
+
if (strpos($content, '<mark') !== false) {
|
108 |
+
$content = preg_replace('/<mark[^>]*data-markjs="true"[^>]*>([^<]*)<\/mark>/i', '$1', $content);
|
109 |
+
wp_update_post(array(
|
110 |
+
'ID' => $post_id,
|
111 |
+
'post_content' => $content)
|
112 |
+
);
|
113 |
+
}
|
114 |
+
}
|
115 |
+
|
116 |
/**
|
117 |
* Check if the image is a remote image and save it locally
|
118 |
*
|
122 |
public function checkImage($post_id) {
|
123 |
|
124 |
//if the option to save the images locally is set on
|
125 |
+
if (SQ_Classes_Tools::getOption('sq_local_images')) {
|
126 |
|
127 |
@set_time_limit(90);
|
128 |
$local_file = false;
|
129 |
|
130 |
+
$content = SQ_Classes_Tools::getValue('post_content', '', true); //get the content in html format
|
131 |
$tmpcontent = trim(html_entity_decode($content), "\n");
|
132 |
$urls = array();
|
133 |
|
163 |
$time = microtime(true);
|
164 |
foreach ($urls as $url) {
|
165 |
if ($file = $this->model->upload_image($url)) {
|
|
|
166 |
if (!file_is_valid_image($file['file']))
|
167 |
continue;
|
168 |
|
170 |
if ($local_file !== false) {
|
171 |
$content = str_replace($url, $local_file, $content);
|
172 |
|
173 |
+
if (!$this->model->findAttachmentByUrl(basename($url))) {
|
174 |
+
$attach_id = wp_insert_attachment(array(
|
175 |
+
'post_mime_type' => $file['type'],
|
176 |
+
'post_title' => SQ_Classes_Tools::getValue('sq_keyword', preg_replace('/\.[^.]+$/', '', $file['filename'])),
|
177 |
+
'post_content' => '',
|
178 |
+
'post_status' => 'inherit',
|
179 |
+
'guid' => $local_file
|
180 |
+
), $file['file'], $post_id);
|
181 |
+
|
182 |
+
$attach_data = wp_generate_attachment_metadata($attach_id, $file['file']);
|
183 |
+
wp_update_attachment_metadata($attach_id, $attach_data);
|
184 |
+
}
|
185 |
}
|
186 |
}
|
187 |
+
|
188 |
if (microtime(true) - $time >= 20) {
|
189 |
break;
|
190 |
}
|
191 |
+
|
192 |
}
|
193 |
|
194 |
|
201 |
}
|
202 |
}
|
203 |
|
204 |
+
|
205 |
/**
|
206 |
* Check the SEO from Squirrly Live Assistant
|
207 |
*
|
211 |
public function checkSeo($post_id, $status = '') {
|
212 |
$args = array();
|
213 |
|
214 |
+
$seo = SQ_Classes_Tools::getValue('sq_seo');
|
215 |
|
216 |
if (is_array($seo) && count($seo) > 0)
|
217 |
$args['seo'] = implode(',', $seo);
|
218 |
|
219 |
+
$args['keyword'] = SQ_Classes_Tools::getValue('sq_keyword');
|
220 |
|
221 |
$args['status'] = $status;
|
222 |
$args['permalink'] = get_permalink($post_id);
|
223 |
$args['permalink'] = $this->getPaged($args['permalink']);
|
224 |
+
$args['author'] = (int)SQ_Classes_Tools::getUserID();
|
225 |
$args['post_id'] = $post_id;
|
226 |
|
227 |
|
228 |
+
if (SQ_Classes_Tools::getOption('sq_force_savepost')) {
|
229 |
+
SQ_Classes_Action::apiCall('sq/seo/post', $args, 10);
|
230 |
} else {
|
231 |
$process = array();
|
232 |
if (get_option('sq_seopost') !== false) {
|
242 |
|
243 |
//Save the keyword for this post
|
244 |
if ($json = $this->model->getKeyword($post_id)) {
|
245 |
+
$json->keyword = addslashes(SQ_Classes_Tools::getValue('sq_keyword'));
|
246 |
$this->model->saveKeyword($post_id, $json);
|
247 |
} else {
|
248 |
$args = array();
|
249 |
+
$args['keyword'] = addslashes(SQ_Classes_Tools::getValue('sq_keyword'));
|
250 |
$this->model->saveKeyword($post_id, json_decode(json_encode($args)));
|
251 |
}
|
252 |
+
|
253 |
+
//Save the snippet in case is edited in backend and not saved
|
254 |
+
SQ_Classes_ObjController::getClass('SQ_Controllers_FrontMenu')->saveSEO();
|
255 |
+
//check for custom SEO
|
256 |
+
$this->_checkBriefcaseKeywords($post_id);
|
257 |
}
|
258 |
|
259 |
public function getPaged($link) {
|
272 |
public function action() {
|
273 |
parent::action();
|
274 |
|
275 |
+
switch (SQ_Classes_Tools::getValue('action')) {
|
|
|
|
|
|
|
|
|
|
|
|
|
276 |
case 'sq_save_ogimage':
|
277 |
if (!empty($_FILES['ogimage'])) {
|
278 |
$return = $this->model->addImage($_FILES['ogimage']);
|
286 |
'post_content' => '',
|
287 |
'post_status' => 'inherit',
|
288 |
'guid' => $local_file
|
289 |
+
), $return['file'], SQ_Classes_Tools::getValue('post_id'));
|
290 |
|
291 |
$attach_data = wp_generate_attachment_metadata($attach_id, $return['file']);
|
292 |
wp_update_attachment_metadata($attach_id, $attach_data);
|
293 |
}
|
294 |
+
SQ_Classes_Tools::setHeader('json');
|
295 |
echo json_encode($return);
|
296 |
+
SQ_Classes_Tools::emptyCache();
|
297 |
|
298 |
break;
|
299 |
case 'sq_get_keyword':
|
300 |
+
SQ_Classes_Tools::setHeader('json');
|
301 |
+
if (SQ_Classes_Tools::getIsset('post_id')) {
|
302 |
+
echo json_encode($this->model->getKeywordsFromPost(SQ_Classes_Tools::getValue('post_id')));
|
303 |
} else {
|
304 |
echo json_encode(array('error' => true));
|
305 |
}
|
306 |
+
SQ_Classes_Tools::emptyCache();
|
307 |
break;
|
308 |
}
|
309 |
exit();
|
310 |
}
|
311 |
|
312 |
/**
|
313 |
+
* Save the keywords from briefcase into the meta keywords if there are no keywords saved
|
314 |
+
* @param $post_id
|
|
|
|
|
315 |
*/
|
316 |
+
private function _checkBriefcaseKeywords($post_id) {
|
317 |
+
if (SQ_Classes_Tools::getIsset('sq_hash')) {
|
318 |
+
$keywords = SQ_Classes_Tools::getValue('sq_briefcase_keyword', array());
|
319 |
+
if (!empty($keywords)) {
|
320 |
+
$sq_hash = SQ_Classes_Tools::getValue('sq_hash', md5($post_id));
|
321 |
+
$url = SQ_Classes_Tools::getValue('sq_url', get_permalink($post_id));
|
322 |
+
$sq = SQ_Classes_ObjController::getClass('SQ_Models_Frontend')->getSqSeo($sq_hash);
|
323 |
+
|
324 |
+
if ($sq->doseo && $sq->keywords == '') {
|
325 |
+
$sq->keywords = join(',', $keywords);
|
326 |
+
|
327 |
+
SQ_Classes_ObjController::getClass('SQ_Models_BlockSettingsSeo')->db_insert(
|
328 |
+
$url,
|
329 |
+
$sq_hash,
|
330 |
+
(int)$post_id,
|
331 |
+
maybe_serialize($sq->toArray()),
|
332 |
+
gmdate('Y-m-d H:i:s')
|
333 |
+
);
|
334 |
+
}
|
335 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
336 |
}
|
|
|
337 |
}
|
338 |
|
339 |
public function hookFooter() {
|
340 |
+
if (!defined('DISABLE_WP_CRON') || DISABLE_WP_CRON) {
|
341 |
global $pagenow;
|
342 |
if (in_array($pagenow, array('post.php', 'post-new.php'))) {
|
343 |
+
SQ_Classes_ObjController::getClass('SQ_Controllers_Cron')->processSEOPostCron();
|
344 |
}
|
345 |
}
|
346 |
}
|
347 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
348 |
}
|
controllers/{SQ_PostsList.php → PostsList.php}
RENAMED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class
|
4 |
{
|
5 |
|
6 |
/** @var array Posts types in */
|
@@ -17,11 +17,11 @@ class SQ_PostsList extends SQ_FrontController
|
|
17 |
private $posts = array();
|
18 |
|
19 |
/**
|
20 |
-
* Called in
|
21 |
*/
|
22 |
public function init()
|
23 |
{
|
24 |
-
$this->types = array_map(array($this, '_addPostsType'),
|
25 |
}
|
26 |
|
27 |
protected function _addPostsType($type)
|
@@ -44,12 +44,12 @@ class SQ_PostsList extends SQ_FrontController
|
|
44 |
*/
|
45 |
public function hookInit()
|
46 |
{
|
47 |
-
$browser =
|
48 |
|
49 |
if ($browser['name'] == 'IE' && (int)$browser['version'] < 9 && (int)$browser['version'] > 0)
|
50 |
return;
|
51 |
|
52 |
-
if (
|
53 |
foreach ($this->types as $type) {
|
54 |
|
55 |
if (isset($options['hideeditbox-post']) && $options['hideeditbox-post'])
|
@@ -57,36 +57,16 @@ class SQ_PostsList extends SQ_FrontController
|
|
57 |
add_filter('manage_' . $type . '_columns', array($this, 'add_column'), 10, 1);
|
58 |
add_action('manage_' . $type . '_custom_column', array($this, 'add_row'), 10, 2);
|
59 |
}
|
60 |
-
add_filter('posts_where', array($this, 'filterPosts'));
|
61 |
}
|
62 |
}
|
63 |
|
64 |
-
/**
|
65 |
-
* Filter the Posts when sq_post_id is set
|
66 |
-
*
|
67 |
-
* @param string $where
|
68 |
-
* @return string
|
69 |
-
*/
|
70 |
-
public function filterPosts($where)
|
71 |
-
{
|
72 |
-
if (!is_admin())
|
73 |
-
return;
|
74 |
-
|
75 |
-
if (SQ_Tools::getIsset('sq_post_id')) {
|
76 |
-
$where .= " AND ID = " . (int)SQ_Tools::getValue('sq_post_id');
|
77 |
-
}
|
78 |
-
|
79 |
-
return $where;
|
80 |
-
}
|
81 |
-
|
82 |
/**
|
83 |
* Hook the Wordpress header
|
84 |
*/
|
85 |
public function loadHead()
|
86 |
{
|
87 |
parent::hookHead();
|
88 |
-
|
89 |
-
->loadMedia(_SQ_THEME_URL_ . '/css/sq_postslist.css');
|
90 |
}
|
91 |
|
92 |
/**
|
@@ -111,9 +91,6 @@ class SQ_PostsList extends SQ_FrontController
|
|
111 |
*/
|
112 |
public function add_row($column, $post_id)
|
113 |
{
|
114 |
-
$title = '';
|
115 |
-
$description = '';
|
116 |
-
$frontend = null;
|
117 |
$cached = false;
|
118 |
|
119 |
if ($column == $this->column_id) {
|
@@ -126,15 +103,9 @@ class SQ_PostsList extends SQ_FrontController
|
|
126 |
|
127 |
echo '<div class="' . $this->column_id . '_row" ref="' . $post_id . '">' . (($cached) ? $_COOKIE[$this->column_id . $post_id] : 'loading ...') . '</div>';
|
128 |
|
129 |
-
if ($frontend =
|
130 |
$title = $frontend->getAdvancedMeta($post_id, 'title');
|
131 |
$description = $frontend->getAdvancedMeta($post_id, 'description');
|
132 |
-
if ($post_id == get_option('page_on_front')) {
|
133 |
-
if (SQ_Tools::$options['sq_fp_title'] <> '' && !$title)
|
134 |
-
$title = SQ_Tools::$options['sq_fp_title'];
|
135 |
-
if (SQ_Tools::$options['sq_fp_description'] <> '' && !$description)
|
136 |
-
$description = SQ_Tools::$options['sq_fp_description'];
|
137 |
-
}
|
138 |
echo '<script type="text/javascript">
|
139 |
jQuery(\'#post-' . $post_id . '\').find(\'.row-title\').before(\'' . (($description <> '') ? '<span class="sq_rank_custom_meta sq_rank_customdescription sq_rank_sprite" title="' . __('Custom description: ', _SQ_PLUGIN_NAME_) . ' ' . addslashes($description) . '"></span>' : '') . ' ' . (($title <> '') ? '<span class="sq_rank_custom_meta sq_rank_customtitle sq_rank_sprite" title="' . __('Custom title: ', _SQ_PLUGIN_NAME_) . ' ' . addslashes($title) . '"></span>' : '') . '\');
|
140 |
</script>';
|
@@ -178,7 +149,7 @@ class SQ_PostsList extends SQ_FrontController
|
|
178 |
var __sq_refresh = "' . __('Update', _SQ_PLUGIN_NAME_) . '"
|
179 |
|
180 |
var __sq_dashurl = "' . _SQ_STATIC_API_URL_ . '";
|
181 |
-
var __token = "' .
|
182 |
var __sq_ranknotpublic_text = "' . __('Not Public', _SQ_PLUGIN_NAME_) . '";
|
183 |
var __sq_couldnotprocess_text = "' . __('Could not process', _SQ_PLUGIN_NAME_) . '";
|
184 |
</script>';
|
@@ -190,7 +161,7 @@ class SQ_PostsList extends SQ_FrontController
|
|
190 |
//load the rank from squirrly
|
191 |
if (typeof sq_script === "undefined"){
|
192 |
var sq_script = document.createElement(\'script\');
|
193 |
-
sq_script.src = "' . _SQ_STATIC_API_URL_ . SQ_URI . '/js/sq_rank.js?ver=' . SQ_VERSION_ID . '";
|
194 |
var site_head = document.getElementsByTagName ("head")[0] || document.documentElement;
|
195 |
site_head.insertBefore(sq_script, site_head.firstChild);
|
196 |
}
|
@@ -258,16 +229,16 @@ class SQ_PostsList extends SQ_FrontController
|
|
258 |
public function action()
|
259 |
{
|
260 |
parent::action();
|
261 |
-
switch (
|
262 |
case 'sq_posts_rank':
|
263 |
-
|
264 |
$args = array();
|
265 |
-
$posts =
|
266 |
if (is_array($posts) && !empty($posts)) {
|
267 |
-
$posts =
|
268 |
$args['posts'] = join(',', $posts);
|
269 |
|
270 |
-
$response = json_decode(
|
271 |
}
|
272 |
if (isset($response) && is_object($response)) {
|
273 |
$response = $this->model->getTotal($response);
|
@@ -276,13 +247,13 @@ class SQ_PostsList extends SQ_FrontController
|
|
276 |
exit(json_encode(array('posts' => array())));
|
277 |
break;
|
278 |
case 'sq_post_rank':
|
279 |
-
|
280 |
$args = array();
|
281 |
$rank = null;
|
282 |
-
$this->model->post_id = (int)
|
283 |
$args['post_id'] = $this->model->post_id;
|
284 |
|
285 |
-
if ($json =
|
286 |
if (isset($json->rank)) {
|
287 |
$rank = $json->rank;
|
288 |
} else {
|
@@ -290,43 +261,43 @@ class SQ_PostsList extends SQ_FrontController
|
|
290 |
}
|
291 |
|
292 |
if (isset($rank) && $rank !== false) {
|
293 |
-
$ranking =
|
294 |
$args['rank'] = (string)$rank;
|
295 |
$args['country'] = $ranking->getCountry();
|
296 |
$args['language'] = $ranking->getLanguage();
|
297 |
}
|
298 |
}
|
299 |
|
300 |
-
$response = json_decode(
|
301 |
|
302 |
if (!is_object($response)) {
|
303 |
exit(json_encode(array('error' => $response)));
|
304 |
} else {
|
305 |
-
//
|
306 |
-
$analytics =
|
307 |
$analytics->flush = false;
|
308 |
$analytics->post_id = $this->model->post_id;
|
309 |
$analytics->audit = $this->model->getAnalytics($response, $this->model->post_id);
|
310 |
|
311 |
$response = $analytics->init();
|
312 |
-
if (
|
313 |
exit();
|
314 |
}
|
315 |
exit(json_encode($response));
|
316 |
}
|
317 |
break;
|
318 |
case 'sq_recheck':
|
319 |
-
|
320 |
-
if (
|
321 |
-
$this->model->post_id = (int)
|
322 |
-
if ($json =
|
323 |
$oldrank = (isset($json->rank) ? $json->rank : -1);
|
324 |
if (get_transient('sq_rank' . $this->model->post_id) !== false) {
|
325 |
delete_transient('sq_rank' . $this->model->post_id);
|
326 |
}
|
327 |
|
328 |
$this->checkKeyword($json->keyword, true);
|
329 |
-
$json =
|
330 |
if ($json->rank === false) {
|
331 |
exit(json_encode(array('error' => true)));
|
332 |
} else {
|
@@ -347,8 +318,8 @@ class SQ_PostsList extends SQ_FrontController
|
|
347 |
|
348 |
exit(json_encode(array('error' => true)));
|
349 |
} else {
|
350 |
-
$this->model->post_id = (int)
|
351 |
-
if ($json =
|
352 |
if ($json->rank === false) {
|
353 |
exit(json_encode(array('error' => true)));
|
354 |
} else {
|
@@ -381,13 +352,13 @@ class SQ_PostsList extends SQ_FrontController
|
|
381 |
if ($keyword == '')
|
382 |
return;
|
383 |
|
384 |
-
$ranking =
|
385 |
if (is_object($ranking)) {
|
386 |
$rank = get_transient('sq_rank' . $this->model->post_id);
|
387 |
//if the rank is not in transient
|
388 |
if ($rank === false) {
|
389 |
//get the keyword from database
|
390 |
-
$json =
|
391 |
if ($force === false && isset($json->rank)) {
|
392 |
$rank = $json->rank;
|
393 |
//add it to transient
|
@@ -408,7 +379,7 @@ class SQ_PostsList extends SQ_FrontController
|
|
408 |
$args['rank'] = $rank;
|
409 |
$args['country'] = $ranking->getCountry();
|
410 |
$args['language'] = $ranking->getLanguage();
|
411 |
-
|
412 |
}
|
413 |
//add it to transient
|
414 |
set_transient('sq_rank' . $this->model->post_id, $rank, (60 * 60 * 24 * 1));
|
@@ -422,7 +393,7 @@ class SQ_PostsList extends SQ_FrontController
|
|
422 |
$args['rank'] = (string)$rank;
|
423 |
$args['country'] = $ranking->getCountry();
|
424 |
$args['language'] = $ranking->getLanguage();
|
425 |
-
|
426 |
}
|
427 |
}
|
428 |
return $rank;
|
1 |
<?php
|
2 |
|
3 |
+
class SQ_Controllers_PostsList extends SQ_Classes_FrontController
|
4 |
{
|
5 |
|
6 |
/** @var array Posts types in */
|
17 |
private $posts = array();
|
18 |
|
19 |
/**
|
20 |
+
* Called in SQ_Controllers_Menu > hookMenu
|
21 |
*/
|
22 |
public function init()
|
23 |
{
|
24 |
+
$this->types = array_map(array($this, '_addPostsType'), SQ_Classes_Tools::getOption('sq_post_types'));
|
25 |
}
|
26 |
|
27 |
protected function _addPostsType($type)
|
44 |
*/
|
45 |
public function hookInit()
|
46 |
{
|
47 |
+
$browser = SQ_Classes_Tools::getBrowserInfo();
|
48 |
|
49 |
if ($browser['name'] == 'IE' && (int)$browser['version'] < 9 && (int)$browser['version'] > 0)
|
50 |
return;
|
51 |
|
52 |
+
if (SQ_Classes_Tools::getOption('sq_api') <> '') {
|
53 |
foreach ($this->types as $type) {
|
54 |
|
55 |
if (isset($options['hideeditbox-post']) && $options['hideeditbox-post'])
|
57 |
add_filter('manage_' . $type . '_columns', array($this, 'add_column'), 10, 1);
|
58 |
add_action('manage_' . $type . '_custom_column', array($this, 'add_row'), 10, 2);
|
59 |
}
|
|
|
60 |
}
|
61 |
}
|
62 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
63 |
/**
|
64 |
* Hook the Wordpress header
|
65 |
*/
|
66 |
public function loadHead()
|
67 |
{
|
68 |
parent::hookHead();
|
69 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia(_SQ_THEME_URL_ . '/css/postslist.css');
|
|
|
70 |
}
|
71 |
|
72 |
/**
|
91 |
*/
|
92 |
public function add_row($column, $post_id)
|
93 |
{
|
|
|
|
|
|
|
94 |
$cached = false;
|
95 |
|
96 |
if ($column == $this->column_id) {
|
103 |
|
104 |
echo '<div class="' . $this->column_id . '_row" ref="' . $post_id . '">' . (($cached) ? $_COOKIE[$this->column_id . $post_id] : 'loading ...') . '</div>';
|
105 |
|
106 |
+
if ($frontend = SQ_Classes_ObjController::getClass('SQ_Models_Frontend')) {
|
107 |
$title = $frontend->getAdvancedMeta($post_id, 'title');
|
108 |
$description = $frontend->getAdvancedMeta($post_id, 'description');
|
|
|
|
|
|
|
|
|
|
|
|
|
109 |
echo '<script type="text/javascript">
|
110 |
jQuery(\'#post-' . $post_id . '\').find(\'.row-title\').before(\'' . (($description <> '') ? '<span class="sq_rank_custom_meta sq_rank_customdescription sq_rank_sprite" title="' . __('Custom description: ', _SQ_PLUGIN_NAME_) . ' ' . addslashes($description) . '"></span>' : '') . ' ' . (($title <> '') ? '<span class="sq_rank_custom_meta sq_rank_customtitle sq_rank_sprite" title="' . __('Custom title: ', _SQ_PLUGIN_NAME_) . ' ' . addslashes($title) . '"></span>' : '') . '\');
|
111 |
</script>';
|
149 |
var __sq_refresh = "' . __('Update', _SQ_PLUGIN_NAME_) . '"
|
150 |
|
151 |
var __sq_dashurl = "' . _SQ_STATIC_API_URL_ . '";
|
152 |
+
var __token = "' . SQ_Classes_Tools::getOption('sq_api') . '";
|
153 |
var __sq_ranknotpublic_text = "' . __('Not Public', _SQ_PLUGIN_NAME_) . '";
|
154 |
var __sq_couldnotprocess_text = "' . __('Could not process', _SQ_PLUGIN_NAME_) . '";
|
155 |
</script>';
|
161 |
//load the rank from squirrly
|
162 |
if (typeof sq_script === "undefined"){
|
163 |
var sq_script = document.createElement(\'script\');
|
164 |
+
sq_script.src = "' . _SQ_STATIC_API_URL_ . SQ_URI . '/js/sq_rank' . (SQ_DEBUG ? '' : '.min') . '.js?ver=' . SQ_VERSION_ID . '";
|
165 |
var site_head = document.getElementsByTagName ("head")[0] || document.documentElement;
|
166 |
site_head.insertBefore(sq_script, site_head.firstChild);
|
167 |
}
|
229 |
public function action()
|
230 |
{
|
231 |
parent::action();
|
232 |
+
switch (SQ_Classes_Tools::getValue('action')) {
|
233 |
case 'sq_posts_rank':
|
234 |
+
SQ_Classes_Tools::setHeader('json');
|
235 |
$args = array();
|
236 |
+
$posts = SQ_Classes_Tools::getValue('posts');
|
237 |
if (is_array($posts) && !empty($posts)) {
|
238 |
+
$posts = SQ_Classes_Tools::getValue('posts');
|
239 |
$args['posts'] = join(',', $posts);
|
240 |
|
241 |
+
$response = json_decode(SQ_Classes_Action::apiCall('sq/user-analytics/total', $args, 20));
|
242 |
}
|
243 |
if (isset($response) && is_object($response)) {
|
244 |
$response = $this->model->getTotal($response);
|
247 |
exit(json_encode(array('posts' => array())));
|
248 |
break;
|
249 |
case 'sq_post_rank':
|
250 |
+
SQ_Classes_Tools::setHeader('json');
|
251 |
$args = array();
|
252 |
$rank = null;
|
253 |
+
$this->model->post_id = (int)SQ_Classes_Tools::getValue('post');
|
254 |
$args['post_id'] = $this->model->post_id;
|
255 |
|
256 |
+
if ($json = SQ_Classes_ObjController::getClass('SQ_Models_Post')->getKeyword($this->model->post_id)) {
|
257 |
if (isset($json->rank)) {
|
258 |
$rank = $json->rank;
|
259 |
} else {
|
261 |
}
|
262 |
|
263 |
if (isset($rank) && $rank !== false) {
|
264 |
+
$ranking = SQ_Classes_ObjController::getClass('SQ_Classes_Ranking');
|
265 |
$args['rank'] = (string)$rank;
|
266 |
$args['country'] = $ranking->getCountry();
|
267 |
$args['language'] = $ranking->getLanguage();
|
268 |
}
|
269 |
}
|
270 |
|
271 |
+
$response = json_decode(SQ_Classes_Action::apiCall('sq/user-analytics/detail', $args, 20));
|
272 |
|
273 |
if (!is_object($response)) {
|
274 |
exit(json_encode(array('error' => $response)));
|
275 |
} else {
|
276 |
+
//SQ_Classes_Tools::dump($response);
|
277 |
+
$analytics = SQ_Classes_ObjController::getClass('SQ_Core_BlockAnalytics');
|
278 |
$analytics->flush = false;
|
279 |
$analytics->post_id = $this->model->post_id;
|
280 |
$analytics->audit = $this->model->getAnalytics($response, $this->model->post_id);
|
281 |
|
282 |
$response = $analytics->init();
|
283 |
+
if (SQ_Classes_Tools::getValue('sq_debug') === 'on') {
|
284 |
exit();
|
285 |
}
|
286 |
exit(json_encode($response));
|
287 |
}
|
288 |
break;
|
289 |
case 'sq_recheck':
|
290 |
+
SQ_Classes_Tools::setHeader('json');
|
291 |
+
if (SQ_Classes_Tools::getValue('sq_debug') === 'on' || get_transient('google_blocked') === false) {
|
292 |
+
$this->model->post_id = (int)SQ_Classes_Tools::getValue('post_id');
|
293 |
+
if ($json = SQ_Classes_ObjController::getClass('SQ_Models_Post')->getKeyword($this->model->post_id)) {
|
294 |
$oldrank = (isset($json->rank) ? $json->rank : -1);
|
295 |
if (get_transient('sq_rank' . $this->model->post_id) !== false) {
|
296 |
delete_transient('sq_rank' . $this->model->post_id);
|
297 |
}
|
298 |
|
299 |
$this->checkKeyword($json->keyword, true);
|
300 |
+
$json = SQ_Classes_ObjController::getClass('SQ_Models_Post')->getKeyword($this->model->post_id);
|
301 |
if ($json->rank === false) {
|
302 |
exit(json_encode(array('error' => true)));
|
303 |
} else {
|
318 |
|
319 |
exit(json_encode(array('error' => true)));
|
320 |
} else {
|
321 |
+
$this->model->post_id = (int)SQ_Classes_Tools::getValue('post_id');
|
322 |
+
if ($json = SQ_Classes_ObjController::getClass('SQ_Models_Post')->getKeyword($this->model->post_id)) {
|
323 |
if ($json->rank === false) {
|
324 |
exit(json_encode(array('error' => true)));
|
325 |
} else {
|
352 |
if ($keyword == '')
|
353 |
return;
|
354 |
|
355 |
+
$ranking = SQ_Classes_ObjController::getClass('SQ_Classes_Ranking');
|
356 |
if (is_object($ranking)) {
|
357 |
$rank = get_transient('sq_rank' . $this->model->post_id);
|
358 |
//if the rank is not in transient
|
359 |
if ($rank === false) {
|
360 |
//get the keyword from database
|
361 |
+
$json = SQ_Classes_ObjController::getClass('SQ_Models_Post')->getKeyword($this->model->post_id);
|
362 |
if ($force === false && isset($json->rank)) {
|
363 |
$rank = $json->rank;
|
364 |
//add it to transient
|
379 |
$args['rank'] = $rank;
|
380 |
$args['country'] = $ranking->getCountry();
|
381 |
$args['language'] = $ranking->getLanguage();
|
382 |
+
SQ_Classes_ObjController::getClass('SQ_Models_Post')->saveKeyword($this->model->post_id, json_decode(json_encode($args)));
|
383 |
}
|
384 |
//add it to transient
|
385 |
set_transient('sq_rank' . $this->model->post_id, $rank, (60 * 60 * 24 * 1));
|
393 |
$args['rank'] = (string)$rank;
|
394 |
$args['country'] = $ranking->getCountry();
|
395 |
$args['language'] = $ranking->getLanguage();
|
396 |
+
SQ_Classes_Action::apiCall('sq/user-analytics/saveserp', $args);
|
397 |
}
|
398 |
}
|
399 |
return $rank;
|
controllers/SQ_Frontend.php
DELETED
@@ -1,218 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class SQ_Frontend extends SQ_FrontController {
|
4 |
-
|
5 |
-
public static $options;
|
6 |
-
|
7 |
-
public function __construct() {
|
8 |
-
|
9 |
-
if ($this->_isAjax()) {
|
10 |
-
return;
|
11 |
-
}
|
12 |
-
|
13 |
-
parent::__construct();
|
14 |
-
|
15 |
-
/* Check if sitemap is on */
|
16 |
-
if (SQ_Tools::$options['sq_auto_sitemap'] == 1) {
|
17 |
-
/* Load the Sitemap */
|
18 |
-
add_filter('rewrite_rules_array', array($this, 'rewrite_rules'), 1, 1);
|
19 |
-
SQ_ObjController::getController('SQ_Sitemaps');
|
20 |
-
}
|
21 |
-
|
22 |
-
if (SQ_Tools::$options['sq_auto_feed'] == 1) {
|
23 |
-
/* Load the Feed Style */
|
24 |
-
SQ_ObjController::getController('SQ_Feed');
|
25 |
-
}
|
26 |
-
|
27 |
-
//validate custom arguments for favicon and sitemap
|
28 |
-
add_filter('query_vars', array($this, 'validateParams'), 1, 1);
|
29 |
-
|
30 |
-
if ($this->isSquirrlySeoEnabled()) {
|
31 |
-
add_filter('sq_title', array($this->model, 'clearTitle'));
|
32 |
-
add_filter('sq_description', array($this->model, 'clearDescription'));
|
33 |
-
|
34 |
-
add_action('plugins_loaded', array($this->model, 'startBuffer'));
|
35 |
-
add_action('template_redirect', array($this->model, 'checkHandles'));
|
36 |
-
//flush the header with the title and removing duplicates
|
37 |
-
add_action('shutdown', array($this->model, 'getBuffer'));
|
38 |
-
}
|
39 |
-
if (SQ_Tools::$options['sq_url_fix'] == 1) {
|
40 |
-
add_action('the_content', array($this, 'fixFeedLinks'), 11);
|
41 |
-
}
|
42 |
-
|
43 |
-
}
|
44 |
-
|
45 |
-
public function rewrite_rules($wp_rewrite) {
|
46 |
-
if (SQ_Tools::$options['sq_auto_sitemap'] == 1) {
|
47 |
-
foreach (SQ_Tools::$options['sq_sitemap'] as $name => $sitemap) {
|
48 |
-
$rules[preg_quote($sitemap[0]) . '$'] = 'index.php?sq_feed=' . $name;
|
49 |
-
}
|
50 |
-
}
|
51 |
-
return array_merge($rules, $wp_rewrite);
|
52 |
-
}
|
53 |
-
|
54 |
-
private function _isAjax() {
|
55 |
-
$url = (isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : false);
|
56 |
-
if ($url && (strpos($url, str_replace(get_bloginfo('url'), '', admin_url('admin-ajax.php', 'relative'))) !== false)) {
|
57 |
-
return true;
|
58 |
-
}
|
59 |
-
|
60 |
-
return false;
|
61 |
-
}
|
62 |
-
|
63 |
-
/**
|
64 |
-
* Hook the Header load
|
65 |
-
*/
|
66 |
-
public function hookFronthead() {
|
67 |
-
|
68 |
-
if (!$this->_isAjax()) {
|
69 |
-
if ($this->isSquirrlySeoEnabled()) {
|
70 |
-
if (SQ_Tools::$options['sq_auto_jsonld'] == 1) {
|
71 |
-
//load the hooks for JsonLD
|
72 |
-
SQ_ObjController::getModelService('JsonLD');
|
73 |
-
}
|
74 |
-
|
75 |
-
}
|
76 |
-
|
77 |
-
SQ_ObjController::getController('SQ_DisplayController', false)
|
78 |
-
->loadMedia(_SQ_THEME_URL_ . 'css/sq_frontend.css');
|
79 |
-
}
|
80 |
-
}
|
81 |
-
|
82 |
-
/**
|
83 |
-
* Called after plugins are loaded
|
84 |
-
*/
|
85 |
-
public function hookPreload() {
|
86 |
-
//Check for sitemap and robots
|
87 |
-
if ($this->isSquirrlySeoEnabled()) {
|
88 |
-
if (isset($_SERVER['REQUEST_URI'])) {
|
89 |
-
if (SQ_Tools::$options['sq_auto_robots'] == 1) {
|
90 |
-
if (substr(strrchr($_SERVER['REQUEST_URI'], "/"), 1) == "robots.txt" || $_SERVER['REQUEST_URI'] == "/robots.txt") {
|
91 |
-
$this->model->robots();
|
92 |
-
}
|
93 |
-
}
|
94 |
-
}
|
95 |
-
|
96 |
-
//check the action call
|
97 |
-
$this->action();
|
98 |
-
}
|
99 |
-
|
100 |
-
|
101 |
-
}
|
102 |
-
|
103 |
-
/**
|
104 |
-
* Change the image path to absolute when in feed
|
105 |
-
* @param string $content
|
106 |
-
*
|
107 |
-
* @return string
|
108 |
-
*/
|
109 |
-
public function fixFeedLinks($content) {
|
110 |
-
if (is_feed()) {
|
111 |
-
$find = $replace = $urls = array();
|
112 |
-
|
113 |
-
@preg_match_all('/<img[^>]*src=[\'"]([^\'"]+)[\'"][^>]*>/i', $content, $out);
|
114 |
-
if (is_array($out)) {
|
115 |
-
if (!is_array($out[1]) || empty($out[1]))
|
116 |
-
return $content;
|
117 |
-
|
118 |
-
foreach ($out[1] as $row) {
|
119 |
-
if (strpos($row, '//') === false) {
|
120 |
-
if (!in_array($row, $urls)) {
|
121 |
-
$urls[] = $row;
|
122 |
-
}
|
123 |
-
}
|
124 |
-
}
|
125 |
-
}
|
126 |
-
|
127 |
-
@preg_match_all('/<a[^>]*href=[\'"]([^\'"]+)[\'"][^>]*>/i', $content, $out);
|
128 |
-
if (is_array($out)) {
|
129 |
-
if (!is_array($out[1]) || empty($out[1]))
|
130 |
-
return $content;
|
131 |
-
|
132 |
-
foreach ($out[1] as $row) {
|
133 |
-
if (strpos($row, '//') === false) {
|
134 |
-
if (!in_array($row, $urls)) {
|
135 |
-
$urls[] = $row;
|
136 |
-
}
|
137 |
-
}
|
138 |
-
}
|
139 |
-
}
|
140 |
-
if (!is_array($urls) || (is_array($urls) && empty($urls))) {
|
141 |
-
return $content;
|
142 |
-
}
|
143 |
-
|
144 |
-
$urls = array_unique($urls);
|
145 |
-
foreach ($urls as $url) {
|
146 |
-
$find[] = "'" . $url . "'";
|
147 |
-
$replace[] = "'" . esc_url(get_bloginfo('url') . $url) . "'";
|
148 |
-
$find[] = '"' . $url . '"';
|
149 |
-
$replace[] = '"' . esc_url(get_bloginfo('url') . $url) . '"';
|
150 |
-
}
|
151 |
-
if (!empty($find) && !empty($replace)) {
|
152 |
-
$content = str_replace($find, $replace, $content);
|
153 |
-
}
|
154 |
-
}
|
155 |
-
return $content;
|
156 |
-
}
|
157 |
-
|
158 |
-
/**
|
159 |
-
* Validate the params for getting the basic info from the server
|
160 |
-
* eg favicon.ico
|
161 |
-
*
|
162 |
-
* @param array $vars
|
163 |
-
* @return $vars
|
164 |
-
*/
|
165 |
-
public function validateParams($vars) {
|
166 |
-
array_push($vars, 'sq_feed');
|
167 |
-
array_push($vars, 'sq_get');
|
168 |
-
array_push($vars, 'sq_size');
|
169 |
-
return $vars;
|
170 |
-
}
|
171 |
-
|
172 |
-
public function action() {
|
173 |
-
global $wp_query;
|
174 |
-
if (!empty($wp_query->query_vars["sq_get"])) {
|
175 |
-
$wp_query->is_404 = false;
|
176 |
-
|
177 |
-
|
178 |
-
switch (get_query_var('sq_get')) {
|
179 |
-
case 'favicon':
|
180 |
-
if (SQ_Tools::$options['favicon'] <> '') {
|
181 |
-
//show the favico file
|
182 |
-
SQ_Tools::setHeader('ico');
|
183 |
-
readfile(_SQ_CACHE_DIR_ . SQ_Tools::$options['favicon']);
|
184 |
-
exit();
|
185 |
-
}
|
186 |
-
break;
|
187 |
-
case 'touchicon':
|
188 |
-
$size = (int)get_query_var('sq_size');
|
189 |
-
if (SQ_Tools::$options['favicon'] <> '') {
|
190 |
-
//show the favico file
|
191 |
-
SQ_Tools::setHeader('png');
|
192 |
-
if ($size <> '') {
|
193 |
-
readfile(_SQ_CACHE_DIR_ . SQ_Tools::$options['favicon'] . get_query_var('sq_size'));
|
194 |
-
} else {
|
195 |
-
readfile(_SQ_CACHE_DIR_ . SQ_Tools::$options['favicon']);
|
196 |
-
}
|
197 |
-
exit();
|
198 |
-
}
|
199 |
-
break;
|
200 |
-
|
201 |
-
case 'feedcss':
|
202 |
-
readfile(_SQ_THEME_DIR_ . 'css/' . 'sq_feed.css');
|
203 |
-
exit();
|
204 |
-
break;
|
205 |
-
}
|
206 |
-
}
|
207 |
-
}
|
208 |
-
|
209 |
-
public function hookFrontfooter() {
|
210 |
-
if ($this->isSquirrlySeoEnabled()) {
|
211 |
-
echo $this->model->getGoogleAnalyticsAMPBody();
|
212 |
-
}
|
213 |
-
}
|
214 |
-
|
215 |
-
public function isSquirrlySeoEnabled() {
|
216 |
-
return (apply_filters('sq_use', SQ_Tools::$options['sq_use']) == 1);
|
217 |
-
}
|
218 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
controllers/SQ_Menu.php
DELETED
@@ -1,247 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class SQ_Menu extends SQ_FrontController {
|
4 |
-
|
5 |
-
/** @var array snippet */
|
6 |
-
private $post_type;
|
7 |
-
|
8 |
-
/** @var array snippet */
|
9 |
-
var $options = array();
|
10 |
-
|
11 |
-
public function __construct() {
|
12 |
-
parent::__construct();
|
13 |
-
add_filter('rewrite_rules_array', array(SQ_ObjController::getBlock('SQ_BlockSettingsSeo'), 'rewrite_rules'), 999, 1);
|
14 |
-
add_action('admin_bar_menu', array($this, 'hookTopmenu'), 999);
|
15 |
-
}
|
16 |
-
|
17 |
-
/**
|
18 |
-
* Hook the Admin load
|
19 |
-
*/
|
20 |
-
public function hookInit() {
|
21 |
-
|
22 |
-
/* add the plugin menu in admin */
|
23 |
-
if (current_user_can('manage_options')) {
|
24 |
-
//check if activated
|
25 |
-
if (get_transient('sq_activate') == 1) {
|
26 |
-
// Delete the redirect transient
|
27 |
-
delete_transient('sq_activate');
|
28 |
-
SQ_Action::apiCall('sq/user/settings', array('settings' => json_encode(SQ_Tools::getBriefOptions())), 10);
|
29 |
-
|
30 |
-
wp_safe_redirect(admin_url('admin.php?page=sq_dashboard'));
|
31 |
-
exit();
|
32 |
-
}
|
33 |
-
|
34 |
-
if (get_transient('sq_rewrite') == 1) {
|
35 |
-
// Delete the redirect transient
|
36 |
-
delete_transient('sq_rewrite');
|
37 |
-
global $wp_rewrite;
|
38 |
-
$wp_rewrite->flush_rules();
|
39 |
-
}
|
40 |
-
|
41 |
-
//Check if there are expected upgrades
|
42 |
-
SQ_Tools::checkUpgrade();
|
43 |
-
}
|
44 |
-
//activate the cron job if not exists
|
45 |
-
if (!wp_get_schedule('sq_processCron')) {
|
46 |
-
wp_schedule_event(time(), 'hourly', 'sq_processCron');
|
47 |
-
}
|
48 |
-
}
|
49 |
-
|
50 |
-
/**
|
51 |
-
* Add a menu in Admin Bar
|
52 |
-
*
|
53 |
-
* @param WP_Admin_Bar $wp_admin_bar
|
54 |
-
*/
|
55 |
-
public function hookTopmenu($wp_admin_bar) {
|
56 |
-
$wp_admin_bar->add_node(array(
|
57 |
-
'id' => 'sq_posts',
|
58 |
-
'title' => __('See Your Rank on Google', _SQ_PLUGIN_NAME_),
|
59 |
-
'href' => admin_url('admin.php?page=sq_posts'),
|
60 |
-
'parent' => false
|
61 |
-
));
|
62 |
-
}
|
63 |
-
|
64 |
-
/**
|
65 |
-
* Creates the Setting menu in Wordpress
|
66 |
-
*/
|
67 |
-
public function hookMenu() {
|
68 |
-
|
69 |
-
$this->post_type = SQ_Tools::$options['sq_post_types'];
|
70 |
-
|
71 |
-
//Push the Analytics Check
|
72 |
-
if (strpos($_SERVER['REQUEST_URI'], '?page=sq_dashboard') !== false) {
|
73 |
-
SQ_Tools::saveOptions('sq_dashboard', 1);
|
74 |
-
}
|
75 |
-
if (strpos($_SERVER['REQUEST_URI'], '?page=sq_analytics') !== false) {
|
76 |
-
SQ_Tools::saveOptions('sq_analytics', 1);
|
77 |
-
}
|
78 |
-
|
79 |
-
$analytics_alert = 0;
|
80 |
-
if (SQ_ObjController::getModel('SQ_Post')->countKeywords() > 0 && SQ_Tools::$options['sq_analytics'] == 0) {
|
81 |
-
$analytics_alert = 1;
|
82 |
-
if (!get_transient('sq_analytics')) {
|
83 |
-
set_transient('sq_analytics', time(), (60 * 60 * 24 * 7));
|
84 |
-
} else {
|
85 |
-
$time_loaded = get_transient('sq_analytics');
|
86 |
-
if (time() - $time_loaded > (60 * 60 * 24 * 3) && time() - $time_loaded < (60 * 60 * 24 * 14)) {
|
87 |
-
SQ_Error::setError(__('Check out the Squirrly Analytics section. <a href="admin.php?page=sq_posts" title="Squirrly Analytics">Click here</a>', _SQ_PLUGIN_NAME_));
|
88 |
-
}
|
89 |
-
}
|
90 |
-
}
|
91 |
-
|
92 |
-
$dashboard_alert = (int) (SQ_Tools::$options['sq_dashboard'] == 0);
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
///////////////
|
97 |
-
|
98 |
-
$this->model->addMenu(array(ucfirst(_SQ_NAME_),
|
99 |
-
'Squirrly' . SQ_Tools::showNotices(SQ_Tools::$errors_count, 'errors_count'),
|
100 |
-
'edit_posts',
|
101 |
-
'sq_dashboard',
|
102 |
-
null,
|
103 |
-
_SQ_THEME_URL_ . 'img/settings/menu_icon_16.png'
|
104 |
-
));
|
105 |
-
|
106 |
-
$this->model->addSubmenu(array('sq_dashboard',
|
107 |
-
ucfirst(_SQ_NAME_) . __(' Dashboard', _SQ_PLUGIN_NAME_),
|
108 |
-
( (SQ_Tools::$options['sq_api'] == '') ? __('First Step', _SQ_PLUGIN_NAME_) : __('Dashboard', _SQ_PLUGIN_NAME_)) . SQ_Tools::showNotices($dashboard_alert, 'errors_count'),
|
109 |
-
'edit_posts',
|
110 |
-
'sq_dashboard',
|
111 |
-
array(SQ_ObjController::getBlock('SQ_BlockDashboard'), 'init')
|
112 |
-
));
|
113 |
-
if (SQ_Tools::$options['sq_api'] <> '') {
|
114 |
-
|
115 |
-
//IF SERP PLUGIN IS NOT INSTALLED
|
116 |
-
if (!class_exists('SRC_Classes_ObjController')){
|
117 |
-
$this->model->addSubmenu(array('sq_dashboard',
|
118 |
-
ucfirst(_SQ_NAME_) . __(' Performance Analytics', _SQ_PLUGIN_NAME_),
|
119 |
-
__('Performance <br />Analytics', _SQ_PLUGIN_NAME_) . SQ_Tools::showNotices($analytics_alert, 'errors_count'),
|
120 |
-
'edit_posts',
|
121 |
-
'sq_posts',
|
122 |
-
array(SQ_ObjController::getBlock('SQ_BlockPostsAnalytics'), 'init')
|
123 |
-
));
|
124 |
-
}
|
125 |
-
|
126 |
-
$this->model->addSubmenu(array('sq_dashboard',
|
127 |
-
ucfirst(_SQ_NAME_) . __(' Keyword Research', _SQ_PLUGIN_NAME_),
|
128 |
-
__('Keyword Research', _SQ_PLUGIN_NAME_),
|
129 |
-
'edit_posts',
|
130 |
-
'sq_keywordresearch',
|
131 |
-
array(SQ_ObjController::getBlock('SQ_BlockKeywordResearch'), 'init')
|
132 |
-
));
|
133 |
-
|
134 |
-
$this->model->addSubmenu(array('sq_dashboard',
|
135 |
-
ucfirst(_SQ_NAME_) . __(' Live Assistant', _SQ_PLUGIN_NAME_),
|
136 |
-
__('Live Assistant', _SQ_PLUGIN_NAME_),
|
137 |
-
'edit_posts',
|
138 |
-
'sq_liveassistant',
|
139 |
-
array(SQ_ObjController::getBlock('SQ_BlockLiveAssistant'), 'init')
|
140 |
-
));
|
141 |
-
$this->model->addSubmenu(array('sq_dashboard',
|
142 |
-
ucfirst(_SQ_NAME_) . __(' Copywriting Options', _SQ_PLUGIN_NAME_),
|
143 |
-
__('Copywriting Options', _SQ_PLUGIN_NAME_),
|
144 |
-
'edit_posts',
|
145 |
-
'sq_copyright',
|
146 |
-
array(SQ_ObjController::getBlock('SQ_BlockCopyright'), 'init')
|
147 |
-
));
|
148 |
-
|
149 |
-
$this->model->addSubmenu(array('sq_dashboard',
|
150 |
-
ucfirst(_SQ_NAME_) . __(' SEO Audit', _SQ_PLUGIN_NAME_),
|
151 |
-
__('Audit Site', _SQ_PLUGIN_NAME_),
|
152 |
-
'edit_posts',
|
153 |
-
'sq_seoaudit',
|
154 |
-
array(SQ_ObjController::getBlock('SQ_BlockAudit'), 'init')
|
155 |
-
));
|
156 |
-
|
157 |
-
$this->model->addSubmenu(array('sq_dashboard',
|
158 |
-
ucfirst(_SQ_NAME_) . __(' SEO Settings', _SQ_PLUGIN_NAME_),
|
159 |
-
__('SEO Settings', _SQ_PLUGIN_NAME_) . SQ_Tools::showNotices(SQ_Tools::$errors_count, 'errors_count'),
|
160 |
-
'manage_options',
|
161 |
-
'sq_seo',
|
162 |
-
array(SQ_ObjController::getBlock('SQ_BlockSettingsSeo'), 'init')
|
163 |
-
));
|
164 |
-
|
165 |
-
|
166 |
-
$this->model->addSubmenu(array('sq_dashboard',
|
167 |
-
ucfirst(_SQ_NAME_) . __(' Advanced Settings', _SQ_PLUGIN_NAME_),
|
168 |
-
__('Advanced Settings', _SQ_PLUGIN_NAME_),
|
169 |
-
'manage_options',
|
170 |
-
'sq_settings',
|
171 |
-
array(SQ_ObjController::getBlock('SQ_BlockSettings'), 'init')
|
172 |
-
));
|
173 |
-
|
174 |
-
$this->model->addSubmenu(array('sq_dashboard',
|
175 |
-
ucfirst(_SQ_NAME_) . __(' Account Info', _SQ_PLUGIN_NAME_),
|
176 |
-
__('Account Info', _SQ_PLUGIN_NAME_),
|
177 |
-
'manage_options',
|
178 |
-
'sq_account',
|
179 |
-
array(SQ_ObjController::getBlock('SQ_BlockAccount'), 'init')
|
180 |
-
));
|
181 |
-
}
|
182 |
-
|
183 |
-
$this->model->addSubmenu(array('sq_dashboard',
|
184 |
-
ucfirst(_SQ_NAME_) . __(' Customer Service', _SQ_PLUGIN_NAME_),
|
185 |
-
__('Customer Service', _SQ_PLUGIN_NAME_),
|
186 |
-
'edit_posts',
|
187 |
-
'sq_customerservice',
|
188 |
-
array(SQ_ObjController::getBlock('SQ_BlockCustomerService'), 'init')
|
189 |
-
));
|
190 |
-
|
191 |
-
$this->model->addSubmenu(array('sq_dashboard',
|
192 |
-
__('Become an Affiliate with ', _SQ_PLUGIN_NAME_) . ucfirst(_SQ_NAME_),
|
193 |
-
__('Become an Affiliate', _SQ_PLUGIN_NAME_),
|
194 |
-
'edit_posts',
|
195 |
-
'sq_affiliate',
|
196 |
-
array(SQ_ObjController::getBlock('SQ_BlockAffiliate'), 'init')
|
197 |
-
));
|
198 |
-
|
199 |
-
foreach ($this->post_type as $type)
|
200 |
-
$this->model->addMeta(array('post' . _SQ_NAME_,
|
201 |
-
ucfirst(_SQ_NAME_),
|
202 |
-
array(SQ_ObjController::getController('SQ_Post'), 'init'),
|
203 |
-
$type,
|
204 |
-
'side',
|
205 |
-
'high'
|
206 |
-
));
|
207 |
-
|
208 |
-
//Add the Rank in the Posts list
|
209 |
-
$postlist = SQ_ObjController::getController('SQ_PostsList');
|
210 |
-
if (is_object($postlist)) {
|
211 |
-
$postlist->init();
|
212 |
-
}
|
213 |
-
|
214 |
-
//Show bar to go back and finish the help
|
215 |
-
if ($this->is_page('edit') || strpos($_SERVER['REQUEST_URI'], 'sq_posts') !== false) {
|
216 |
-
if (SQ_Tools::$options['active_help'] <> '' && SQ_Tools::$options['ignore_warn'] == 0) {
|
217 |
-
SQ_Error::setError('Go back and complete the Squirrly Tasks for today <a href="admin.php?page=sq_' . SQ_Tools::$options['active_help'] . '" class="sq_button" title="Continue the Help">Continue</a>', 'helpnotice');
|
218 |
-
}
|
219 |
-
}
|
220 |
-
}
|
221 |
-
|
222 |
-
/**
|
223 |
-
* Is the user on page name? Default name = post edit page
|
224 |
-
* name = 'quirrly'
|
225 |
-
*
|
226 |
-
* @global array $pagenow
|
227 |
-
* @param string $name
|
228 |
-
* @return boolean
|
229 |
-
*/
|
230 |
-
public function is_page($name = '') {
|
231 |
-
global $pagenow;
|
232 |
-
$page = array();
|
233 |
-
//make sure we are on the backend
|
234 |
-
if (is_admin() && $name <> '') {
|
235 |
-
if ($name == 'edit') {
|
236 |
-
$page = array('post.php', 'post-new.php');
|
237 |
-
} else {
|
238 |
-
array_push($page, $name . '.php');
|
239 |
-
}
|
240 |
-
|
241 |
-
return in_array($pagenow, $page);
|
242 |
-
}
|
243 |
-
|
244 |
-
return false;
|
245 |
-
}
|
246 |
-
|
247 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
controllers/{SQ_Sitemaps.php → Sitemaps.php}
RENAMED
@@ -3,37 +3,70 @@
|
|
3 |
/**
|
4 |
* Class for Sitemap Generator
|
5 |
*/
|
6 |
-
class
|
7 |
/* @var string root name */
|
8 |
|
9 |
var $root = 'sitemap';
|
10 |
/* @var string post limit */
|
11 |
-
var $posts_limit
|
12 |
-
var $news_limit =
|
13 |
|
14 |
public function __construct() {
|
15 |
parent::__construct();
|
16 |
-
|
|
|
17 |
add_filter('user_trailingslashit', array($this, 'untrailingslashit'));
|
18 |
add_action('sq_processPing', array($this, 'processCron'));
|
19 |
}
|
20 |
|
21 |
public function hookPreventRedirect() {
|
22 |
-
global $wp_query
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
$
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
}
|
32 |
}
|
33 |
|
34 |
public function refreshSitemap($new_status, $old_status, $post) {
|
35 |
if ($old_status <> $new_status && $new_status = 'publish') {
|
36 |
-
if (
|
37 |
wp_schedule_single_event(time() + 5, 'sq_processPing');
|
38 |
}
|
39 |
}
|
@@ -41,46 +74,51 @@ class SQ_Sitemaps extends SQ_FrontController {
|
|
41 |
|
42 |
/**
|
43 |
* Listen the feed call from wordpress
|
44 |
-
* @param
|
45 |
-
* @
|
|
|
46 |
*/
|
47 |
-
public function feedRequest($request) {
|
48 |
global $wp_query;
|
49 |
$query = array();
|
50 |
|
51 |
-
if (
|
52 |
-
$
|
53 |
-
|
54 |
|
55 |
-
|
56 |
-
|
|
|
|
|
|
|
|
|
|
|
57 |
|
58 |
-
$this->model->type = $request['sq_feed'];
|
59 |
//init the query
|
60 |
$query = array(
|
61 |
'sq_feed' => $this->model->type,
|
62 |
'post_type' => array('post'),
|
63 |
'tax_query' => array(),
|
64 |
'post_status' => 'publish',
|
|
|
|
|
|
|
|
|
65 |
);
|
66 |
|
67 |
//show products
|
68 |
if ($this->model->type == 'sitemap-product') {
|
69 |
-
if (
|
70 |
-
|
71 |
}
|
72 |
}
|
73 |
|
74 |
-
if (isset(
|
75 |
|
76 |
-
add_action('do_feed_' . $
|
77 |
//PREPARE CUSTOM QUERIES
|
78 |
switch ($this->model->type) {
|
79 |
-
|
80 |
case 'sitemap-news':
|
81 |
-
if ($this->model->type == 'sitemap-news') {
|
82 |
-
$this->posts_limit = $this->news_limit;
|
83 |
-
}
|
84 |
case 'sitemap-post':
|
85 |
break;
|
86 |
case 'sitemap-category':
|
@@ -90,7 +128,7 @@ class SQ_Sitemaps extends SQ_FrontController {
|
|
90 |
add_filter('get_terms_fields', array($this, 'customTaxFilter'), 5, 2);
|
91 |
break;
|
92 |
case 'sitemap-page':
|
93 |
-
$query['post_type'] =
|
94 |
break;
|
95 |
case 'sitemap-author':
|
96 |
add_filter('sq-sitemap-authors', array($this, 'authorFilter'), 5);
|
@@ -115,27 +153,27 @@ class SQ_Sitemaps extends SQ_FrontController {
|
|
115 |
array_push($types, 'custom-post');
|
116 |
}
|
117 |
|
118 |
-
$query['post_type'] =
|
119 |
break;
|
120 |
case 'sitemap-product':
|
121 |
-
if (!$types =
|
122 |
$types = array('custom-post');
|
123 |
}
|
124 |
-
$query['post_type'] =
|
125 |
break;
|
126 |
case 'sitemap-archive':
|
127 |
add_filter('sq-sitemap-archive', array($this, 'archiveFilter'), 5);
|
128 |
break;
|
129 |
}
|
130 |
|
131 |
-
add_filter('post_limits', array($this, 'setLimits'));
|
132 |
}
|
133 |
}
|
134 |
-
|
135 |
if (method_exists($wp_query, 'parse_query')) {
|
136 |
$wp_query = new WP_Query($query);
|
|
|
137 |
}
|
138 |
-
|
|
|
139 |
}
|
140 |
|
141 |
/**
|
@@ -149,7 +187,7 @@ class SQ_Sitemaps extends SQ_FrontController {
|
|
149 |
header('Content-Type: text/xml; charset=' . get_bloginfo('charset'), true);
|
150 |
//Generate header
|
151 |
echo '<?xml version="1.0" encoding="' . get_bloginfo('charset') . '"?>' . "\n";
|
152 |
-
echo '<?xml-stylesheet type="text/xsl" href="' .
|
153 |
echo '<!-- generated-on="' . date('Y-m-d\TH:i:s+00:00') . '" -->' . "\n";
|
154 |
echo '<!-- generator="Squirrly SEO Sitemap" -->' . "\n";
|
155 |
echo '<!-- generator-url="https://wordpress.org/plugins/squirrly-seo/" -->' . "\n";
|
@@ -214,20 +252,57 @@ class SQ_Sitemaps extends SQ_FrontController {
|
|
214 |
switch ($this->model->type) {
|
215 |
case 'sitemap':
|
216 |
$this->showSitemapHeader();
|
|
|
217 |
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
|
|
223 |
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
229 |
}
|
230 |
-
}
|
231 |
$this->showSitemapFooter();
|
232 |
break;
|
233 |
case 'sitemap-home':
|
@@ -256,12 +331,12 @@ class SQ_Sitemaps extends SQ_FrontController {
|
|
256 |
|
257 |
/**
|
258 |
* Pach the XML for each sitemap
|
259 |
-
* @param
|
260 |
-
* @return
|
261 |
*/
|
262 |
public function showPackXml($xml) {
|
263 |
if (empty($xml)) {
|
264 |
-
|
265 |
}
|
266 |
if (!isset($xml['contains'])) {
|
267 |
$xml['contains'] = '';
|
@@ -330,14 +405,17 @@ class SQ_Sitemaps extends SQ_FrontController {
|
|
330 |
/**
|
331 |
* Get the url for each sitemap
|
332 |
* @param string $sitemap
|
|
|
333 |
* @return string
|
334 |
*/
|
335 |
-
public function getXmlUrl($sitemap) {
|
|
|
|
|
336 |
if (!get_option('permalink_structure')) {
|
337 |
-
$sitemap = '?sq_feed=' . str_replace('.xml', '', $sitemap);
|
338 |
} else {
|
339 |
-
if (isset(
|
340 |
-
$sitemap =
|
341 |
}
|
342 |
|
343 |
if (strpos($sitemap, '.xml') === false) {
|
@@ -349,12 +427,15 @@ class SQ_Sitemaps extends SQ_FrontController {
|
|
349 |
}
|
350 |
|
351 |
public function processCron() {
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
|
|
|
|
|
|
|
|
356 |
}
|
357 |
-
}
|
358 |
}
|
359 |
|
360 |
/**
|
@@ -370,7 +451,7 @@ class SQ_Sitemaps extends SQ_FrontController {
|
|
370 |
);
|
371 |
|
372 |
foreach ($urls as $url) {
|
373 |
-
if ($responce =
|
374 |
$success = true;
|
375 |
sleep(mt_rand(2, 5));
|
376 |
}
|
@@ -384,9 +465,10 @@ class SQ_Sitemaps extends SQ_FrontController {
|
|
384 |
* @return boolean
|
385 |
*/
|
386 |
public function deleteSitemapFile() {
|
387 |
-
|
388 |
-
|
389 |
-
|
|
|
390 |
return true;
|
391 |
}
|
392 |
}
|
@@ -470,7 +552,7 @@ class SQ_Sitemaps extends SQ_FrontController {
|
|
470 |
|
471 |
public function productFilter(&$query) {
|
472 |
|
473 |
-
if (!$types =
|
474 |
$types = array('custom-post');
|
475 |
}
|
476 |
$query->set('post_type', $types); // id of page or post
|
3 |
/**
|
4 |
* Class for Sitemap Generator
|
5 |
*/
|
6 |
+
class SQ_Controllers_Sitemaps extends SQ_Classes_FrontController {
|
7 |
/* @var string root name */
|
8 |
|
9 |
var $root = 'sitemap';
|
10 |
/* @var string post limit */
|
11 |
+
var $posts_limit;
|
12 |
+
var $news_limit = 10;
|
13 |
|
14 |
public function __construct() {
|
15 |
parent::__construct();
|
16 |
+
$this->posts_limit = SQ_Classes_Tools::getOption('sq_sitemap_perpage');
|
17 |
+
add_filter('template_redirect', array($this, 'hookPreventRedirect'), 0);
|
18 |
add_filter('user_trailingslashit', array($this, 'untrailingslashit'));
|
19 |
add_action('sq_processPing', array($this, 'processCron'));
|
20 |
}
|
21 |
|
22 |
public function hookPreventRedirect() {
|
23 |
+
global $wp_query;
|
24 |
+
// echo '<pre>' . print_R($_SERVER, true) . '</pre>';
|
25 |
+
// exit();
|
26 |
+
if (isset($_SERVER['REQUEST_URI'])) {
|
27 |
+
if (strpos($_SERVER['REQUEST_URI'], 'sq_feed') !== false) {
|
28 |
+
$parseurl = @parse_url($_SERVER['REQUEST_URI']);
|
29 |
+
$sitemap = 'sitemap';
|
30 |
+
$page = 0;
|
31 |
+
|
32 |
+
if (isset($parseurl['query'])) {
|
33 |
+
parse_str($parseurl['query'], $query);
|
34 |
+
$sitemap = (isset($query['sq_feed']) ? $query['sq_feed'] : 'sitemap');
|
35 |
+
$page = (isset($query['page']) ? $query['page'] : 0);
|
36 |
+
}
|
37 |
+
|
38 |
+
$wp_query->is_404 = false;
|
39 |
+
$wp_query->is_feed = true;
|
40 |
+
$this->feedRequest($sitemap, $page);
|
41 |
+
apply_filters('sq_sitemapxml', $this->showSitemap());
|
42 |
+
die();
|
43 |
+
} elseif (strpos($_SERVER['REQUEST_URI'], '.xml') !== false) {
|
44 |
+
$parseurl = @parse_url($_SERVER['REQUEST_URI']);
|
45 |
+
$stemaplist = SQ_Classes_Tools::getOption('sq_sitemap');
|
46 |
+
$page = 0;
|
47 |
+
|
48 |
+
foreach ($stemaplist as $request => $sitemap) {
|
49 |
+
if (isset($sitemap[0]) && $sitemap[1] && str_replace('/', '', $parseurl['path']) == $sitemap[0]) {
|
50 |
+
$wp_query->is_404 = false;
|
51 |
+
$wp_query->is_feed = true;
|
52 |
+
|
53 |
+
if (isset($parseurl['query'])) {
|
54 |
+
parse_str($parseurl['query'], $query);
|
55 |
+
$page = (isset($query['page']) ? $query['page'] : 0);
|
56 |
+
}
|
57 |
+
|
58 |
+
$this->feedRequest($request, $page);
|
59 |
+
apply_filters('sq_sitemapxml', $this->showSitemap());
|
60 |
+
die();
|
61 |
+
}
|
62 |
+
}
|
63 |
+
}
|
64 |
}
|
65 |
}
|
66 |
|
67 |
public function refreshSitemap($new_status, $old_status, $post) {
|
68 |
if ($old_status <> $new_status && $new_status = 'publish') {
|
69 |
+
if (SQ_Classes_Tools::getOption('sq_sitemap_ping')) {
|
70 |
wp_schedule_single_event(time() + 5, 'sq_processPing');
|
71 |
}
|
72 |
}
|
74 |
|
75 |
/**
|
76 |
* Listen the feed call from wordpress
|
77 |
+
* @param string $request
|
78 |
+
* @param integer $page
|
79 |
+
* @return SQ_Controllers_Sitemaps
|
80 |
*/
|
81 |
+
public function feedRequest($request = null, $page = 1) {
|
82 |
global $wp_query;
|
83 |
$query = array();
|
84 |
|
85 |
+
if (isset($request) && strpos($request, 'sitemap') !== false) {
|
86 |
+
$sq_sitemap = SQ_Classes_Tools::getOption('sq_sitemap');
|
87 |
+
$this->model->type = $request;
|
88 |
|
89 |
+
if ($request == 'sitemap') { //if sitemapindex, return
|
90 |
+
return $wp_query;
|
91 |
+
}
|
92 |
+
|
93 |
+
if ($this->model->type == 'sitemap-news') {
|
94 |
+
$this->posts_limit = $this->news_limit;
|
95 |
+
}
|
96 |
|
|
|
97 |
//init the query
|
98 |
$query = array(
|
99 |
'sq_feed' => $this->model->type,
|
100 |
'post_type' => array('post'),
|
101 |
'tax_query' => array(),
|
102 |
'post_status' => 'publish',
|
103 |
+
'posts_per_page' => $this->posts_limit,
|
104 |
+
'paged' => $page,
|
105 |
+
'orderby' => 'date',
|
106 |
+
'order' => 'DESC',
|
107 |
);
|
108 |
|
109 |
//show products
|
110 |
if ($this->model->type == 'sitemap-product') {
|
111 |
+
if (SQ_Classes_ObjController::getClass('SQ_Models_BlockSettingsSeo')->isEcommerce() && $sq_sitemap[$this->model->type][1] == 2) {
|
112 |
+
$sq_sitemap[$this->model->type][1] = 1;
|
113 |
}
|
114 |
}
|
115 |
|
116 |
+
if (isset($sq_sitemap[$this->model->type]) && $sq_sitemap[$this->model->type][1]) {
|
117 |
|
118 |
+
add_action('do_feed_' . $this->model->type, array($this, 'showSitemap'));
|
119 |
//PREPARE CUSTOM QUERIES
|
120 |
switch ($this->model->type) {
|
|
|
121 |
case 'sitemap-news':
|
|
|
|
|
|
|
122 |
case 'sitemap-post':
|
123 |
break;
|
124 |
case 'sitemap-category':
|
128 |
add_filter('get_terms_fields', array($this, 'customTaxFilter'), 5, 2);
|
129 |
break;
|
130 |
case 'sitemap-page':
|
131 |
+
$query['post_type'] = array('page');
|
132 |
break;
|
133 |
case 'sitemap-author':
|
134 |
add_filter('sq-sitemap-authors', array($this, 'authorFilter'), 5);
|
153 |
array_push($types, 'custom-post');
|
154 |
}
|
155 |
|
156 |
+
$query['post_type'] = $types;
|
157 |
break;
|
158 |
case 'sitemap-product':
|
159 |
+
if (!$types = SQ_Classes_ObjController::getClass('SQ_Models_BlockSettingsSeo')->isEcommerce()) {
|
160 |
$types = array('custom-post');
|
161 |
}
|
162 |
+
$query['post_type'] = $types;
|
163 |
break;
|
164 |
case 'sitemap-archive':
|
165 |
add_filter('sq-sitemap-archive', array($this, 'archiveFilter'), 5);
|
166 |
break;
|
167 |
}
|
168 |
|
|
|
169 |
}
|
170 |
}
|
|
|
171 |
if (method_exists($wp_query, 'parse_query')) {
|
172 |
$wp_query = new WP_Query($query);
|
173 |
+
return $wp_query->found_posts;
|
174 |
}
|
175 |
+
|
176 |
+
return false;
|
177 |
}
|
178 |
|
179 |
/**
|
187 |
header('Content-Type: text/xml; charset=' . get_bloginfo('charset'), true);
|
188 |
//Generate header
|
189 |
echo '<?xml version="1.0" encoding="' . get_bloginfo('charset') . '"?>' . "\n";
|
190 |
+
echo '<?xml-stylesheet type="text/xsl" href="' . _SQ_THEME_URL_ . 'css/sitemap' . ($this->model->type == 'sitemap' ? 'index' : '') . '.xsl"?>' . "\n";
|
191 |
echo '<!-- generated-on="' . date('Y-m-d\TH:i:s+00:00') . '" -->' . "\n";
|
192 |
echo '<!-- generator="Squirrly SEO Sitemap" -->' . "\n";
|
193 |
echo '<!-- generator-url="https://wordpress.org/plugins/squirrly-seo/" -->' . "\n";
|
252 |
switch ($this->model->type) {
|
253 |
case 'sitemap':
|
254 |
$this->showSitemapHeader();
|
255 |
+
$sq_sitemap = SQ_Classes_Tools::getOption('sq_sitemap');
|
256 |
|
257 |
+
if (!empty($sq_sitemap))
|
258 |
+
foreach ($sq_sitemap as $name => $value) {
|
259 |
+
//force to show products if not preset
|
260 |
+
if ($name == 'sitemap-product' && !SQ_Classes_ObjController::getClass('SQ_Models_BlockSettingsSeo')->isEcommerce()) {
|
261 |
+
continue;
|
262 |
+
}
|
263 |
|
264 |
+
if ($name !== 'sitemap' && ($value[1] == 1 || $value[1] == 2)) {
|
265 |
+
echo "\t" . '<sitemap>' . "\n";
|
266 |
+
echo "\t" . '<loc>' . $this->getXmlUrl($name) . '</loc>' . "\n";
|
267 |
+
echo "\t" . '<lastmod>' . mysql2date('Y-m-d\TH:i:s+00:00', get_lastpostmodified('gmt'), false) . '</lastmod>' . "\n";
|
268 |
+
echo "\t" . '</sitemap>' . "\n";
|
269 |
+
|
270 |
+
|
271 |
+
if ($name == 'sitemap-post' && $count_posts = wp_count_posts()) {
|
272 |
+
if (isset($count_posts->publish) && $count_posts->publish > 0 && $count_posts->publish > $this->posts_limit) {
|
273 |
+
$pages = ceil($count_posts->publish / $this->posts_limit);
|
274 |
+
for ($page = 2; $page <= $pages; $page++) {
|
275 |
+
echo "\t" . '<sitemap>' . "\n";
|
276 |
+
echo "\t" . '<loc>' . $this->getXmlUrl($name, $page) . '</loc>' . "\n";
|
277 |
+
echo "\t" . '<lastmod>' . mysql2date('Y-m-d\TH:i:s+00:00', get_lastpostmodified('gmt'), false) . '</lastmod>' . "\n";
|
278 |
+
echo "\t" . '</sitemap>' . "\n";
|
279 |
+
}
|
280 |
+
}
|
281 |
+
}
|
282 |
+
if ($name == 'sitemap-page' && $count_posts = wp_count_posts('page')) {
|
283 |
+
if (isset($count_posts->publish) && $count_posts->publish > 0 && $count_posts->publish > $this->posts_limit) {
|
284 |
+
$pages = ceil($count_posts->publish / $this->posts_limit);
|
285 |
+
for ($page = 2; $page <= $pages; $page++) {
|
286 |
+
echo "\t" . '<sitemap>' . "\n";
|
287 |
+
echo "\t" . '<loc>' . $this->getXmlUrl($name, $page) . '</loc>' . "\n";
|
288 |
+
echo "\t" . '<lastmod>' . mysql2date('Y-m-d\TH:i:s+00:00', get_lastpostmodified('gmt'), false) . '</lastmod>' . "\n";
|
289 |
+
echo "\t" . '</sitemap>' . "\n";
|
290 |
+
}
|
291 |
+
}
|
292 |
+
}
|
293 |
+
if ($name == 'sitemap-product' && $count_posts = wp_count_posts('product')) {
|
294 |
+
if (isset($count_posts->publish) && $count_posts->publish > 0 && $count_posts->publish > $this->posts_limit) {
|
295 |
+
$pages = ceil($count_posts->publish / $this->posts_limit);
|
296 |
+
for ($page = 2; $page <= $pages; $page++) {
|
297 |
+
echo "\t" . '<sitemap>' . "\n";
|
298 |
+
echo "\t" . '<loc>' . $this->getXmlUrl($name, $page) . '</loc>' . "\n";
|
299 |
+
echo "\t" . '<lastmod>' . mysql2date('Y-m-d\TH:i:s+00:00', get_lastpostmodified('gmt'), false) . '</lastmod>' . "\n";
|
300 |
+
echo "\t" . '</sitemap>' . "\n";
|
301 |
+
}
|
302 |
+
}
|
303 |
+
}
|
304 |
+
}
|
305 |
}
|
|
|
306 |
$this->showSitemapFooter();
|
307 |
break;
|
308 |
case 'sitemap-home':
|
331 |
|
332 |
/**
|
333 |
* Pach the XML for each sitemap
|
334 |
+
* @param xhtml $xml
|
335 |
+
* @return xml|false
|
336 |
*/
|
337 |
public function showPackXml($xml) {
|
338 |
if (empty($xml)) {
|
339 |
+
$xml['contains'] = '';
|
340 |
}
|
341 |
if (!isset($xml['contains'])) {
|
342 |
$xml['contains'] = '';
|
405 |
/**
|
406 |
* Get the url for each sitemap
|
407 |
* @param string $sitemap
|
408 |
+
* @param integer $page
|
409 |
* @return string
|
410 |
*/
|
411 |
+
public function getXmlUrl($sitemap, $page = null) {
|
412 |
+
$sq_sitemap = SQ_Classes_Tools::getOption('sq_sitemap');
|
413 |
+
|
414 |
if (!get_option('permalink_structure')) {
|
415 |
+
$sitemap = '?sq_feed=' . str_replace('.xml', '', $sitemap) . (isset($page) ? '&page=' . $page : '');
|
416 |
} else {
|
417 |
+
if (isset($sq_sitemap[$sitemap])) {
|
418 |
+
$sitemap = $sq_sitemap[$sitemap][0] . (isset($page) ? '?page=' . $page : '');
|
419 |
}
|
420 |
|
421 |
if (strpos($sitemap, '.xml') === false) {
|
427 |
}
|
428 |
|
429 |
public function processCron() {
|
430 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_Tools');
|
431 |
+
|
432 |
+
$sq_sitemap = SQ_Classes_Tools::getOption('sq_sitemap');
|
433 |
+
if (!empty($sq_sitemap))
|
434 |
+
foreach ($sq_sitemap as $name => $sitemap) {
|
435 |
+
if ($sitemap[1] == 1) {
|
436 |
+
$this->SendPing($this->getXmlUrl($name));
|
437 |
+
}
|
438 |
}
|
|
|
439 |
}
|
440 |
|
441 |
/**
|
451 |
);
|
452 |
|
453 |
foreach ($urls as $url) {
|
454 |
+
if ($responce = SQ_Classes_Tools::sq_remote_get($url)) {
|
455 |
$success = true;
|
456 |
sleep(mt_rand(2, 5));
|
457 |
}
|
465 |
* @return boolean
|
466 |
*/
|
467 |
public function deleteSitemapFile() {
|
468 |
+
$sq_sitemap = SQ_Classes_Tools::getOption('sq_sitemap');
|
469 |
+
if (isset($sq_sitemap[$this->root])) {
|
470 |
+
if (file_exists(ABSPATH . $sq_sitemap[$this->root])) {
|
471 |
+
@unlink(ABSPATH . $sq_sitemap[$this->root]);
|
472 |
return true;
|
473 |
}
|
474 |
}
|
552 |
|
553 |
public function productFilter(&$query) {
|
554 |
|
555 |
+
if (!$types = SQ_Classes_ObjController::getClass('SQ_Models_BlockSettingsSeo')->isEcommerce()) {
|
556 |
$types = array('custom-post');
|
557 |
}
|
558 |
$query->set('post_type', $types); // id of page or post
|
core/{SQ_BlockAccount/SQ_BlockAccount.php → BlockAccount.php}
RENAMED
@@ -3,7 +3,7 @@
|
|
3 |
/**
|
4 |
* Account settings
|
5 |
*/
|
6 |
-
class
|
7 |
|
8 |
function hookGetContent() {
|
9 |
parent::preloadSettings();
|
3 |
/**
|
4 |
* Account settings
|
5 |
*/
|
6 |
+
class SQ_Core_BlockAccount extends SQ_Classes_BlockController {
|
7 |
|
8 |
function hookGetContent() {
|
9 |
parent::preloadSettings();
|
core/{SQ_BlockAffiliate/SQ_BlockAffiliate.php → BlockAffiliate.php}
RENAMED
@@ -3,7 +3,7 @@
|
|
3 |
/**
|
4 |
* Affiliate settings
|
5 |
*/
|
6 |
-
class
|
7 |
|
8 |
public function hookGetContent() {
|
9 |
parent::preloadSettings();
|
@@ -11,7 +11,7 @@ class SQ_BlockAffiliate extends SQ_BlockController {
|
|
11 |
|
12 |
public function action() {
|
13 |
parent::action();
|
14 |
-
switch (
|
15 |
//login action
|
16 |
case 'sq_settings_affiliate':
|
17 |
//post arguments
|
@@ -21,7 +21,7 @@ class SQ_BlockAffiliate extends SQ_BlockController {
|
|
21 |
//api responce variable
|
22 |
$responce = '';
|
23 |
|
24 |
-
$responce =
|
25 |
|
26 |
//create an object from json responce
|
27 |
if (is_object(json_decode($responce)))
|
@@ -32,7 +32,7 @@ class SQ_BlockAffiliate extends SQ_BlockController {
|
|
32 |
|
33 |
//if the affiliate link is received
|
34 |
if (isset($return->affiliate_link)) {
|
35 |
-
|
36 |
} elseif (!empty($return->error)) {
|
37 |
//if an error is throw then ...
|
38 |
$return->info = sprintf(__('Error: %s', _SQ_PLUGIN_NAME_), $return->error);
|
3 |
/**
|
4 |
* Affiliate settings
|
5 |
*/
|
6 |
+
class SQ_Core_BlockAffiliate extends SQ_Classes_BlockController {
|
7 |
|
8 |
public function hookGetContent() {
|
9 |
parent::preloadSettings();
|
11 |
|
12 |
public function action() {
|
13 |
parent::action();
|
14 |
+
switch (SQ_Classes_Tools::getValue('action')) {
|
15 |
//login action
|
16 |
case 'sq_settings_affiliate':
|
17 |
//post arguments
|
21 |
//api responce variable
|
22 |
$responce = '';
|
23 |
|
24 |
+
$responce = SQ_Classes_Action::apiCall('sq/user/affiliate', $args);
|
25 |
|
26 |
//create an object from json responce
|
27 |
if (is_object(json_decode($responce)))
|
32 |
|
33 |
//if the affiliate link is received
|
34 |
if (isset($return->affiliate_link)) {
|
35 |
+
SQ_Classes_Tools::saveOptions('sq_affiliate_link', $return->affiliate_link);
|
36 |
} elseif (!empty($return->error)) {
|
37 |
//if an error is throw then ...
|
38 |
$return->info = sprintf(__('Error: %s', _SQ_PLUGIN_NAME_), $return->error);
|
core/BlockAnalytics.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SQ_Core_BlockAnalytics extends SQ_Classes_BlockController {
|
4 |
+
|
5 |
+
public function hookGetContent() {
|
6 |
+
|
7 |
+
}
|
8 |
+
|
9 |
+
}
|
core/{SQ_BlockAudit/SQ_BlockAudit.php → BlockAudit.php}
RENAMED
@@ -3,11 +3,11 @@
|
|
3 |
/**
|
4 |
* Audit Page
|
5 |
*/
|
6 |
-
class
|
7 |
public $blog;
|
8 |
|
9 |
function hookGetContent() {
|
10 |
-
$blogs = json_decode(
|
11 |
if (!empty($blogs)) {
|
12 |
foreach ($blogs as $blog) {
|
13 |
if (get_bloginfo('url') == $blog->domain){
|
3 |
/**
|
4 |
* Audit Page
|
5 |
*/
|
6 |
+
class SQ_Core_BlockAudit extends SQ_Classes_BlockController {
|
7 |
public $blog;
|
8 |
|
9 |
function hookGetContent() {
|
10 |
+
$blogs = json_decode(SQ_Classes_Action::apiCall('sq/audit/blog-list'));
|
11 |
if (!empty($blogs)) {
|
12 |
foreach ($blogs as $blog) {
|
13 |
if (get_bloginfo('url') == $blog->domain){
|
core/{SQ_BlockLiveAssistant/SQ_BlockLiveAssistant.php → BlockCopyright.php}
RENAMED
@@ -3,7 +3,7 @@
|
|
3 |
/**
|
4 |
* Live Assistant settings
|
5 |
*/
|
6 |
-
class
|
7 |
|
8 |
function hookGetContent() {
|
9 |
parent::preloadSettings();
|
3 |
/**
|
4 |
* Live Assistant settings
|
5 |
*/
|
6 |
+
class SQ_Core_BlockCopyright extends SQ_Classes_BlockController {
|
7 |
|
8 |
function hookGetContent() {
|
9 |
parent::preloadSettings();
|
core/BlockCustomerService.php
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Customer Service Page
|
5 |
+
*/
|
6 |
+
class SQ_Core_BlockCustomerService extends SQ_Classes_BlockController {
|
7 |
+
|
8 |
+
function hookGetContent() {
|
9 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('blocksupport');
|
10 |
+
}
|
11 |
+
}
|
core/{SQ_BlockDashboard/SQ_BlockDashboard.php → BlockDashboard.php}
RENAMED
@@ -3,7 +3,7 @@
|
|
3 |
/**
|
4 |
* Dashboard settings
|
5 |
*/
|
6 |
-
class
|
7 |
|
8 |
function hookGetContent() {
|
9 |
parent::preloadSettings();
|
3 |
/**
|
4 |
* Dashboard settings
|
5 |
*/
|
6 |
+
class SQ_Core_BlockDashboard extends SQ_Classes_BlockController {
|
7 |
|
8 |
function hookGetContent() {
|
9 |
parent::preloadSettings();
|
core/BlockHelp.php
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Affiliate settings
|
5 |
+
*/
|
6 |
+
class SQ_Core_BlockHelp extends SQ_Classes_BlockController {
|
7 |
+
|
8 |
+
}
|
core/BlockImport.php
ADDED
@@ -0,0 +1,67 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Set the patterns
|
5 |
+
*/
|
6 |
+
class SQ_Core_BlockImport extends SQ_Classes_BlockController {
|
7 |
+
|
8 |
+
function hookGetContent() {
|
9 |
+
//Remove the notification is Inport Settings are shown
|
10 |
+
delete_transient('sq_import');
|
11 |
+
|
12 |
+
parent::preloadSettings();
|
13 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_Error')->hookNotices();
|
14 |
+
}
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Called when Post action is triggered
|
18 |
+
*
|
19 |
+
* @return void
|
20 |
+
*/
|
21 |
+
public function action() {
|
22 |
+
parent::action();
|
23 |
+
switch (SQ_Classes_Tools::getValue('action')) {
|
24 |
+
case 'sq_importsettings':
|
25 |
+
if (!current_user_can('manage_options')) {
|
26 |
+
return;
|
27 |
+
}
|
28 |
+
|
29 |
+
$platform = SQ_Classes_Tools::getValue('sq_import_platform', '');
|
30 |
+
if ($platform <> '') {
|
31 |
+
if (SQ_Classes_ObjController::getClass('SQ_Models_BlockSettingsSeo')->importDBSettings($platform)) {
|
32 |
+
SQ_Classes_Error::setMessage(__('All the Plugin settings were imported successfuly!', _SQ_PLUGIN_NAME_));
|
33 |
+
}else{
|
34 |
+
SQ_Classes_Error::setMessage(__('No settings found for this plugin/theme.', _SQ_PLUGIN_NAME_));
|
35 |
+
|
36 |
+
}
|
37 |
+
}
|
38 |
+
break;
|
39 |
+
|
40 |
+
case 'sq_importseo':
|
41 |
+
if (!current_user_can('manage_options')) {
|
42 |
+
return;
|
43 |
+
}
|
44 |
+
$platform = SQ_Classes_Tools::getValue('sq_import_platform', '');
|
45 |
+
if ($platform <> '') {
|
46 |
+
$seo = SQ_Classes_ObjController::getClass('SQ_Models_BlockSettingsSeo')->importDBSeo($platform);
|
47 |
+
if (!empty($seo)) {
|
48 |
+
foreach ($seo as $sq_hash => $metas) {
|
49 |
+
SQ_Classes_ObjController::getClass('SQ_Models_BlockSettingsSeo')->db_insert(
|
50 |
+
(isset($metas['url']) ? $metas['url'] : ''),
|
51 |
+
$sq_hash,
|
52 |
+
(isset($metas['post_id']) && is_numeric($metas['post_id']) ? (int)$metas['post_id'] : 0),
|
53 |
+
maybe_serialize($metas),
|
54 |
+
gmdate('Y-m-d H:i:s'));
|
55 |
+
}
|
56 |
+
SQ_Classes_Error::setMessage(sprintf(__('%s SEO records were imported successfuly! You can now deactivate the %s plugin', _SQ_PLUGIN_NAME_), count($seo), SQ_Classes_ObjController::getClass('SQ_Models_BlockSettingsSeo')->getName($platform)));
|
57 |
+
} else {
|
58 |
+
SQ_Classes_Error::setMessage(sprintf(__('There are no SEO records with this plugin. You can now deactivate the %s plugin', _SQ_PLUGIN_NAME_), SQ_Classes_ObjController::getClass('SQ_Models_BlockSettingsSeo')->getName($platform)));
|
59 |
+
|
60 |
+
}
|
61 |
+
}
|
62 |
+
break;
|
63 |
+
}
|
64 |
+
}
|
65 |
+
|
66 |
+
|
67 |
+
}
|
core/BlockKeywordResearch.php
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Keyword Research settings
|
5 |
+
*/
|
6 |
+
class SQ_Core_BlockKeywordResearch extends SQ_Classes_BlockController {
|
7 |
+
|
8 |
+
function hookGetContent() {
|
9 |
+
parent::preloadSettings();
|
10 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('blockresearch');
|
11 |
+
}
|
12 |
+
}
|
core/{SQ_BlockCopyright/SQ_BlockCopyright.php → BlockLiveAssistant.php}
RENAMED
@@ -3,7 +3,7 @@
|
|
3 |
/**
|
4 |
* Live Assistant settings
|
5 |
*/
|
6 |
-
class
|
7 |
|
8 |
function hookGetContent() {
|
9 |
parent::preloadSettings();
|
3 |
/**
|
4 |
* Live Assistant settings
|
5 |
*/
|
6 |
+
class SQ_Core_BlockLiveAssistant extends SQ_Classes_BlockController {
|
7 |
|
8 |
function hookGetContent() {
|
9 |
parent::preloadSettings();
|
core/BlockPatterns.php
ADDED
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Set the patterns
|
5 |
+
*/
|
6 |
+
class SQ_Core_BlockPatterns extends SQ_Classes_BlockController {
|
7 |
+
|
8 |
+
function hookGetContent() {
|
9 |
+
parent::preloadSettings();
|
10 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_Error')->hookNotices();
|
11 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('patterns');
|
12 |
+
}
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Called when Post action is triggered
|
16 |
+
*
|
17 |
+
* @return void
|
18 |
+
*/
|
19 |
+
public function action() {
|
20 |
+
parent::action();
|
21 |
+
switch (SQ_Classes_Tools::getValue('action')) {
|
22 |
+
|
23 |
+
case 'sq_savepatters':
|
24 |
+
if (!current_user_can('manage_options')) {
|
25 |
+
return;
|
26 |
+
}
|
27 |
+
|
28 |
+
$patterns = SQ_Classes_Tools::getValue('sq_patterns', array());
|
29 |
+
if (!empty($patterns)) {
|
30 |
+
SQ_Classes_Tools::saveOptions("patterns", $patterns);
|
31 |
+
}
|
32 |
+
|
33 |
+
//If a new post type is added
|
34 |
+
$newposttype = SQ_Classes_Tools::getValue('sq_select_post_types', '');
|
35 |
+
if ($newposttype <> '') {
|
36 |
+
$patterns[$newposttype] = $patterns['custom'];
|
37 |
+
if (!empty($patterns)) {
|
38 |
+
SQ_Classes_Tools::saveOptions("patterns", $patterns);
|
39 |
+
}
|
40 |
+
}
|
41 |
+
|
42 |
+
//empty the cache on settings changed
|
43 |
+
SQ_Classes_Tools::emptyCache();
|
44 |
+
break;
|
45 |
+
}
|
46 |
+
}
|
47 |
+
|
48 |
+
|
49 |
+
}
|
core/{SQ_BlockPostsAnalytics/SQ_BlockPostsAnalytics.php → BlockPostsAnalytics.php}
RENAMED
@@ -1,15 +1,16 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class
|
4 |
|
5 |
public function hookGetContent() {
|
6 |
|
7 |
-
|
8 |
-
->loadMedia(_SQ_THEME_URL_ . '/css/
|
|
|
|
|
|
|
|
|
9 |
|
10 |
-
SQ_Tools::saveOptions('sq_analytics', 1); //Save analytics viewed
|
11 |
-
SQ_Tools::saveOptions('sq_dashboard', 1); //Save dashboard viewed
|
12 |
-
$this->postlist = SQ_ObjController::getController('SQ_PostsList');
|
13 |
|
14 |
$this->model->prepare_items();
|
15 |
|
1 |
<?php
|
2 |
|
3 |
+
class SQ_Core_BlockPostsAnalytics extends SQ_Classes_BlockController {
|
4 |
|
5 |
public function hookGetContent() {
|
6 |
|
7 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')
|
8 |
+
->loadMedia(_SQ_THEME_URL_ . '/css/postslist.css');
|
9 |
+
|
10 |
+
SQ_Classes_Tools::saveOptions('sq_analytics', 1); //Save analytics viewed
|
11 |
+
SQ_Classes_Tools::saveOptions('sq_dashboard', 1); //Save dashboard viewed
|
12 |
+
$this->postlist = SQ_Classes_ObjController::getClass('SQ_Controllers_PostsList');
|
13 |
|
|
|
|
|
|
|
14 |
|
15 |
$this->model->prepare_items();
|
16 |
|
core/BlockSettings.php
ADDED
@@ -0,0 +1,76 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Account settings
|
5 |
+
*/
|
6 |
+
class SQ_Core_BlockSettings extends SQ_Classes_BlockController {
|
7 |
+
|
8 |
+
function hookGetContent() {
|
9 |
+
parent::preloadSettings();
|
10 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_Error')->hookNotices();
|
11 |
+
echo '<script type="text/javascript">
|
12 |
+
jQuery(document).ready(function () {
|
13 |
+
jQuery("#sq_settings").find("select[name=sq_google_country]").val("' . SQ_Classes_Tools::getOption('sq_google_country') . '");
|
14 |
+
});
|
15 |
+
</script>';
|
16 |
+
}
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Called when Post action is triggered
|
20 |
+
*
|
21 |
+
* @return void
|
22 |
+
*/
|
23 |
+
public function action() {
|
24 |
+
parent::action();
|
25 |
+
|
26 |
+
|
27 |
+
switch (SQ_Classes_Tools::getValue('action')) {
|
28 |
+
|
29 |
+
case 'sq_settings_update':
|
30 |
+
if (!current_user_can('manage_options')) {
|
31 |
+
return;
|
32 |
+
}
|
33 |
+
|
34 |
+
if (SQ_Classes_Tools::getIsset('sq_post_types')) {
|
35 |
+
SQ_Classes_Tools::$options['sq_post_types'] = array();
|
36 |
+
foreach (SQ_Classes_Tools::getValue('sq_post_types') as $key) {
|
37 |
+
array_push(SQ_Classes_Tools::$options['sq_post_types'], $key);
|
38 |
+
}
|
39 |
+
if (!in_array('product', get_post_types())) {
|
40 |
+
array_push(SQ_Classes_Tools::$options['sq_post_types'], 'product');
|
41 |
+
}
|
42 |
+
}else{
|
43 |
+
SQ_Classes_Tools::$options['sq_post_types'] = array();
|
44 |
+
}
|
45 |
+
|
46 |
+
SQ_Classes_Tools::saveOptions('sq_google_country', SQ_Classes_Tools::getValue('sq_google_country'));
|
47 |
+
SQ_Classes_Tools::saveOptions('sq_google_country_strict', SQ_Classes_Tools::getValue('sq_google_country_strict'));
|
48 |
+
SQ_Classes_Tools::saveOptions('sq_google_ranksperhour', SQ_Classes_Tools::getValue('sq_google_ranksperhour'));
|
49 |
+
|
50 |
+
SQ_Classes_Tools::saveOptions('sq_keyword_help', (int)SQ_Classes_Tools::getValue('sq_keyword_help'));
|
51 |
+
SQ_Classes_Tools::saveOptions('sq_keyword_information', (int)SQ_Classes_Tools::getValue('sq_keyword_information'));
|
52 |
+
SQ_Classes_Tools::saveOptions('sq_force_savepost', (int)SQ_Classes_Tools::getValue('sq_force_savepost'));
|
53 |
+
|
54 |
+
|
55 |
+
SQ_Classes_Tools::saveOptions('sq_sla', (int)SQ_Classes_Tools::getValue('sq_sla'));
|
56 |
+
SQ_Classes_Tools::saveOptions('sq_use_frontend', (int)SQ_Classes_Tools::getValue('sq_use_frontend'));
|
57 |
+
SQ_Classes_Tools::saveOptions('sq_local_images', (int)SQ_Classes_Tools::getValue('sq_local_images'));
|
58 |
+
SQ_Classes_Tools::saveOptions('sq_url_fix', (int)SQ_Classes_Tools::getValue('sq_url_fix'));
|
59 |
+
|
60 |
+
//Save custom robots
|
61 |
+
$robots = SQ_Classes_Tools::getValue('sq_robots_permission', '', true);
|
62 |
+
$robots = explode(PHP_EOL, $robots);
|
63 |
+
$robots = str_replace("\r", "", $robots);
|
64 |
+
|
65 |
+
if (!empty($robots)) {
|
66 |
+
$robots = array_unique($robots);
|
67 |
+
SQ_Classes_Tools::saveOptions('sq_robots_permission', $robots);
|
68 |
+
}
|
69 |
+
|
70 |
+
SQ_Classes_Action::apiCall('sq/user/settings', array('settings' => json_encode(SQ_Classes_Tools::getBriefOptions())), 10);
|
71 |
+
SQ_Classes_Tools::emptyCache();
|
72 |
+
break;
|
73 |
+
}
|
74 |
+
}
|
75 |
+
|
76 |
+
}
|
core/BlockSettingsSeo.php
ADDED
@@ -0,0 +1,538 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Account settings
|
5 |
+
*/
|
6 |
+
class SQ_Core_BlockSettingsSeo extends SQ_Classes_BlockController {
|
7 |
+
public $post;
|
8 |
+
|
9 |
+
function hookGetContent() {
|
10 |
+
parent::preloadSettings();
|
11 |
+
|
12 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('frontmenu.css');
|
13 |
+
|
14 |
+
//Show Import Settings after Install if needed
|
15 |
+
if (current_user_can('manage_options') && get_transient('sq_import')) {
|
16 |
+
$platforms = SQ_Classes_ObjController::getClass('SQ_Controllers_Menu')->getImportList();
|
17 |
+
$imports = array();
|
18 |
+
if (!empty($platforms)) {
|
19 |
+
foreach ($platforms as $path => $settings) {
|
20 |
+
if ($path !== 'squirrly-seo') {
|
21 |
+
$imports[] = ucfirst(SQ_Classes_ObjController::getClass('SQ_Models_BlockSettingsSeo')->getName($path));
|
22 |
+
}
|
23 |
+
}
|
24 |
+
|
25 |
+
if (!empty($imports)) {
|
26 |
+
SQ_Classes_Error::setError(sprintf(__('You can now import into Squirrly SEO all the SEO Settings from %s', _SQ_PLUGIN_NAME_), '<a href="' . admin_url('admin.php?page=sq_import#import') . '">' . join(', ', $imports) . '</a>'));
|
27 |
+
}
|
28 |
+
}
|
29 |
+
}
|
30 |
+
|
31 |
+
|
32 |
+
/* Force call of error display */
|
33 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_Error')->hookNotices();
|
34 |
+
echo '<script type="text/javascript">
|
35 |
+
var __snippetshort = "' . __('Too short', _SQ_PLUGIN_NAME_) . '";
|
36 |
+
var __snippetlong = "' . __('Too long', _SQ_PLUGIN_NAME_) . '";
|
37 |
+
jQuery(document).ready(function () {
|
38 |
+
jQuery("#sq_settings").find("select[name=sq_og_locale]").val("' . SQ_Classes_Tools::getOption('sq_og_locale') . '");
|
39 |
+
});
|
40 |
+
</script>';
|
41 |
+
|
42 |
+
}
|
43 |
+
|
44 |
+
function hookHead() {
|
45 |
+
if (function_exists('wp_enqueue_media')) {
|
46 |
+
wp_enqueue_media();
|
47 |
+
}
|
48 |
+
parent::hookHead();
|
49 |
+
}
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Called when Post action is triggered
|
53 |
+
*
|
54 |
+
* @return void
|
55 |
+
*/
|
56 |
+
public function action() {
|
57 |
+
parent::action();
|
58 |
+
switch (SQ_Classes_Tools::getValue('action')) {
|
59 |
+
case 'sq_settingsseo_option':
|
60 |
+
SQ_Classes_Tools::setHeader('json');
|
61 |
+
|
62 |
+
if (!current_user_can('manage_options')) {
|
63 |
+
echo json_encode(array('error' => __("You don't have enough pemission to activate this feature", _SQ_PLUGIN_NAME_)));
|
64 |
+
exit();
|
65 |
+
}
|
66 |
+
|
67 |
+
$option = SQ_Classes_Tools::getValue('option');
|
68 |
+
$value = (int)SQ_Classes_Tools::getValue('value');
|
69 |
+
SQ_Classes_Tools::saveOptions($option, $value);
|
70 |
+
|
71 |
+
echo json_encode(array('saved' => true));
|
72 |
+
exit();
|
73 |
+
case 'sq_settingsseo_update':
|
74 |
+
if (!current_user_can('manage_options')) {
|
75 |
+
return;
|
76 |
+
}
|
77 |
+
|
78 |
+
if (!SQ_Classes_Tools::getIsset('sq_use')) {
|
79 |
+
return;
|
80 |
+
}
|
81 |
+
SQ_Classes_Tools::saveOptions('sq_use', (int)SQ_Classes_Tools::getValue('sq_use'));
|
82 |
+
SQ_Classes_Tools::saveOptions('sq_auto_title', (int)SQ_Classes_Tools::getValue('sq_auto_title'));
|
83 |
+
SQ_Classes_Tools::saveOptions('sq_auto_description', (int)SQ_Classes_Tools::getValue('sq_auto_description'));
|
84 |
+
SQ_Classes_Tools::saveOptions('sq_auto_keywords', (int)SQ_Classes_Tools::getValue('sq_auto_keywords'));
|
85 |
+
SQ_Classes_Tools::saveOptions('sq_keywordtag', (int)SQ_Classes_Tools::getValue('sq_keywordtag'));
|
86 |
+
|
87 |
+
SQ_Classes_Tools::saveOptions('sq_auto_canonical', (int)SQ_Classes_Tools::getValue('sq_auto_canonical'));
|
88 |
+
SQ_Classes_Tools::saveOptions('sq_auto_noindex', (int)SQ_Classes_Tools::getValue('sq_auto_noindex'));
|
89 |
+
|
90 |
+
SQ_Classes_Tools::saveOptions('sq_auto_amp', (int)SQ_Classes_Tools::getValue('sq_auto_amp'));
|
91 |
+
|
92 |
+
SQ_Classes_Tools::saveOptions('sq_auto_meta', (int)SQ_Classes_Tools::getValue('sq_auto_meta'));
|
93 |
+
SQ_Classes_Tools::saveOptions('sq_auto_favicon', (int)SQ_Classes_Tools::getValue('sq_auto_favicon'));
|
94 |
+
|
95 |
+
///////////////////////////////////////////
|
96 |
+
/////////////////////////////SOCIAL OPTION
|
97 |
+
SQ_Classes_Tools::saveOptions('sq_auto_facebook', (int)SQ_Classes_Tools::getValue('sq_auto_facebook'));
|
98 |
+
SQ_Classes_Tools::saveOptions('sq_auto_twitter', (int)SQ_Classes_Tools::getValue('sq_auto_twitter'));
|
99 |
+
SQ_Classes_Tools::saveOptions('sq_og_locale', SQ_Classes_Tools::getValue('sq_og_locale'));
|
100 |
+
|
101 |
+
$socials = array_merge(SQ_Classes_Tools::getOption('socials'), SQ_Classes_Tools::getValue('sq_socials', array()));
|
102 |
+
|
103 |
+
if (isset($socials['twitter_site'])) $socials['twitter_site'] = $this->model->checkTwitterAccount($socials['twitter_site']);
|
104 |
+
if (isset($socials['twitter_site'])) $socials['twitter'] = $this->model->checkTwitterAccountName($socials['twitter_site']);
|
105 |
+
if (isset($socials['facebook_site'])) $socials['facebook_site'] = $this->model->checkFacebookAccount($socials['facebook_site']);
|
106 |
+
if (isset($socials['google_plus_url'])) $socials['google_plus_url'] = $this->model->checkGoogleAccount($socials['google_plus_url']);
|
107 |
+
if (isset($socials['pinterest_url'])) $socials['pinterest_url'] = $this->model->checkPinterestAccount($socials['pinterest_url']);
|
108 |
+
if (isset($socials['instagram_url'])) $socials['instagram_url'] = $this->model->checkInstagramAccount($socials['instagram_url']);
|
109 |
+
if (isset($socials['linkedin_url'])) $socials['linkedin_url'] = $this->model->checkLinkeinAccount($socials['linkedin_url']);
|
110 |
+
if (isset($socials['myspace_url'])) $socials['myspace_url'] = $this->model->checkMySpaceAccount($socials['myspace_url']);
|
111 |
+
if (isset($socials['youtube_url'])) $socials['youtube_url'] = $this->model->checkYoutubeAccount($socials['youtube_url']);
|
112 |
+
|
113 |
+
$fb_admins = SQ_Classes_Tools::getValue('sq_fb_admins', array());
|
114 |
+
if (!empty($fb_admins)) {
|
115 |
+
foreach ($fb_admins as $index => $value) {
|
116 |
+
if (isset($value) && $value == '') {
|
117 |
+
unset($socials['fb_admins'][$index]);
|
118 |
+
} else {
|
119 |
+
$socials['fb_admins'][$index]['id'] = $this->model->checkFavebookAdminCode($value);
|
120 |
+
}
|
121 |
+
}
|
122 |
+
}
|
123 |
+
|
124 |
+
//get the facebook app id for sharing
|
125 |
+
if (SQ_Classes_Tools::getIsset('sq_fbadminapp')) $socials['fbadminapp'] = SQ_Classes_Tools::getValue('sq_fbadminapp');
|
126 |
+
if (SQ_Classes_Tools::getIsset('twitter_card_type')) $socials['twitter_card_type'] = SQ_Classes_Tools::getValue('twitter_card_type');
|
127 |
+
|
128 |
+
|
129 |
+
SQ_Classes_Tools::saveOptions("socials", $socials);
|
130 |
+
|
131 |
+
///////////////////////////////////////////
|
132 |
+
/////////////////////////////FIRST PAGE OPTIMIZATION
|
133 |
+
if ($pageId = get_option('page_on_front')) {
|
134 |
+
$sq_hash = md5($pageId);
|
135 |
+
} elseif ($post_id = get_option('page_for_posts')) {
|
136 |
+
$sq_hash = md5($pageId);
|
137 |
+
} else {
|
138 |
+
$sq_hash = md5('wp_homepage');
|
139 |
+
}
|
140 |
+
|
141 |
+
if ($sq_hash <> '') {
|
142 |
+
$url = home_url();
|
143 |
+
$sq = SQ_Classes_ObjController::getClass('SQ_Models_Frontend')->getSqSeo($sq_hash);
|
144 |
+
|
145 |
+
$sq->doseo = 1;
|
146 |
+
$sq->title = urldecode(SQ_Classes_Tools::getValue('sq_fp_title', false));
|
147 |
+
$sq->description = urldecode(SQ_Classes_Tools::getValue('sq_fp_description', false));
|
148 |
+
$sq->keywords = SQ_Classes_Tools::getValue('sq_fp_keywords', false);
|
149 |
+
$sq->og_media = SQ_Classes_Tools::getValue('sq_fp_ogimage', false);
|
150 |
+
|
151 |
+
$this->model->db_insert(
|
152 |
+
$url,
|
153 |
+
$sq_hash,
|
154 |
+
(int)$pageId,
|
155 |
+
maybe_serialize($sq->toArray()),
|
156 |
+
gmdate('Y-m-d H:i:s')
|
157 |
+
);
|
158 |
+
}
|
159 |
+
|
160 |
+
///////////////////////////////////////////
|
161 |
+
/////////////////////////////SITEMAP OPTION
|
162 |
+
SQ_Classes_Tools::saveOptions('sq_auto_sitemap', (int)SQ_Classes_Tools::getValue('sq_auto_sitemap'));
|
163 |
+
SQ_Classes_Tools::saveOptions('sq_auto_feed', (int)SQ_Classes_Tools::getValue('sq_auto_feed'));
|
164 |
+
SQ_Classes_Tools::saveOptions('sq_sitemap_frequency', SQ_Classes_Tools::getValue('sq_sitemap_frequency'));
|
165 |
+
SQ_Classes_Tools::saveOptions('sq_sitemap_ping', (int)SQ_Classes_Tools::getValue('sq_sitemap_ping'));
|
166 |
+
SQ_Classes_Tools::saveOptions('sq_sitemap_perpage', (int)SQ_Classes_Tools::getValue('sq_sitemap_perpage'));
|
167 |
+
|
168 |
+
|
169 |
+
foreach (SQ_Classes_Tools::$options['sq_sitemap'] as $key => $value) {
|
170 |
+
if ($key == 'sitemap') {
|
171 |
+
continue;
|
172 |
+
}
|
173 |
+
SQ_Classes_Tools::$options['sq_sitemap'][$key][1] = 0;
|
174 |
+
if ($key == 'sitemap-product' && !$this->model->isEcommerce()) {
|
175 |
+
SQ_Classes_Tools::$options['sq_sitemap'][$key][1] = 2;
|
176 |
+
}
|
177 |
+
}
|
178 |
+
if (SQ_Classes_Tools::getIsset('sq_sitemap')) {
|
179 |
+
foreach (SQ_Classes_Tools::getValue('sq_sitemap') as $key) {
|
180 |
+
if (isset(SQ_Classes_Tools::$options['sq_sitemap'][$key][1])) {
|
181 |
+
SQ_Classes_Tools::$options['sq_sitemap'][$key][1] = 1;
|
182 |
+
}
|
183 |
+
}
|
184 |
+
}
|
185 |
+
|
186 |
+
foreach (SQ_Classes_Tools::$options['sq_sitemap_show'] as $key => $value) {
|
187 |
+
SQ_Classes_Tools::$options['sq_sitemap_show'][$key] = 0;
|
188 |
+
}
|
189 |
+
if (SQ_Classes_Tools::getIsset('sq_sitemap_show')) {
|
190 |
+
foreach (SQ_Classes_Tools::getValue('sq_sitemap_show') as $key) {
|
191 |
+
if (isset(SQ_Classes_Tools::$options['sq_sitemap_show'][$key])) {
|
192 |
+
SQ_Classes_Tools::$options['sq_sitemap_show'][$key] = 1;
|
193 |
+
}
|
194 |
+
}
|
195 |
+
}
|
196 |
+
|
197 |
+
///////////////////////////////////////////
|
198 |
+
///////SAVE THE CODE
|
199 |
+
$codes = array_merge(SQ_Classes_Tools::getOption('codes'), SQ_Classes_Tools::getValue('sq_codes', array()));
|
200 |
+
|
201 |
+
if (!empty($codes)) {
|
202 |
+
//if (isset($codes['facebook_pixel'])) $codes['facebook_pixel'] = $codes['facebook_pixel'];
|
203 |
+
if (isset($codes['google_analytics'])) $codes['google_analytics'] = $this->model->checkGoogleAnalyticsCode($codes['google_analytics']);
|
204 |
+
if (isset($codes['pinterest_verify'])) $codes['pinterest_verify'] = $this->model->checkPinterestCode($codes['pinterest_verify']);
|
205 |
+
if (isset($codes['google_wt'])) $codes['google_wt'] = $this->model->checkGoogleWTCode($codes['google_wt']);
|
206 |
+
if (isset($codes['bing_wt'])) $codes['bing_wt'] = $this->model->checkBingWTCode($codes['bing_wt']);
|
207 |
+
if (isset($codes['alexa_verify'])) $codes['alexa_verify'] = $this->model->checkBingWTCode($codes['alexa_verify']);
|
208 |
+
|
209 |
+
SQ_Classes_Tools::saveOptions("codes", $codes);
|
210 |
+
}
|
211 |
+
|
212 |
+
|
213 |
+
///////////////////////////////////////////JSONLD
|
214 |
+
SQ_Classes_Tools::saveOptions('sq_auto_jsonld', (int)SQ_Classes_Tools::getValue('sq_auto_jsonld'));
|
215 |
+
if (SQ_Classes_Tools::getIsset('sq_jsonld_type') && isset(SQ_Classes_Tools::$options['sq_jsonld'][SQ_Classes_Tools::getValue('sq_jsonld_type')])) {
|
216 |
+
|
217 |
+
foreach (SQ_Classes_Tools::$options['sq_jsonld'][SQ_Classes_Tools::getValue('sq_jsonld_type')] as $key => $value) {
|
218 |
+
if (isset(SQ_Classes_Tools::$options['sq_jsonld'][SQ_Classes_Tools::getValue('sq_jsonld_type')][$key])) {
|
219 |
+
SQ_Classes_Tools::$options['sq_jsonld'][SQ_Classes_Tools::getValue('sq_jsonld_type')][$key] = SQ_Classes_Tools::getValue('sq_jsonld_' . $key);
|
220 |
+
}
|
221 |
+
}
|
222 |
+
if (isset(SQ_Classes_Tools::$options['sq_jsonld'][SQ_Classes_Tools::getValue('sq_jsonld_type')]['telephone']) &&
|
223 |
+
SQ_Classes_Tools::$options['sq_jsonld'][SQ_Classes_Tools::getValue('sq_jsonld_type')]['telephone'] <> ''
|
224 |
+
) {
|
225 |
+
SQ_Classes_Tools::$options['sq_jsonld'][SQ_Classes_Tools::getValue('sq_jsonld_type')]['telephone'] = '+' . SQ_Classes_Tools::$options['sq_jsonld'][SQ_Classes_Tools::getValue('sq_jsonld_type')]['telephone'];
|
226 |
+
}
|
227 |
+
}
|
228 |
+
SQ_Classes_Tools::saveOptions('sq_jsonld_type', SQ_Classes_Tools::getValue('sq_jsonld_type'));
|
229 |
+
|
230 |
+
///////////////////////////////////////////
|
231 |
+
/////////////////////////////FAVICON OPTION
|
232 |
+
|
233 |
+
/* if there is an icon to upload */
|
234 |
+
if (!empty($_FILES['favicon'])) {
|
235 |
+
|
236 |
+
$return = $this->model->addFavicon($_FILES['favicon']);
|
237 |
+
if ($return['favicon'] <> '') {
|
238 |
+
SQ_Classes_Tools::saveOptions('favicon', strtolower(basename($return['favicon'])));
|
239 |
+
}
|
240 |
+
if ($return['message'] <> '') {
|
241 |
+
define('SQ_MESSAGE_FAVICON', $return['message']);
|
242 |
+
SQ_Classes_Error::setError(SQ_MESSAGE_FAVICON . " <br /> ");
|
243 |
+
}
|
244 |
+
}
|
245 |
+
|
246 |
+
SQ_Classes_Action::apiCall('sq/user/settings', array('settings' => json_encode(SQ_Classes_Tools::getBriefOptions())), 10);
|
247 |
+
|
248 |
+
|
249 |
+
if (SQ_Classes_Tools::isAjax()) {
|
250 |
+
SQ_Classes_Tools::setHeader('json');
|
251 |
+
echo json_encode(array('saved' => true));
|
252 |
+
exit();
|
253 |
+
} else {
|
254 |
+
//Update the rewrite rules with the new options
|
255 |
+
add_filter('rewrite_rules_array', array($this, 'rewrite_rules'), 999, 1);
|
256 |
+
//Flush the rewrite with the new favicon and sitemap
|
257 |
+
flush_rewrite_rules();
|
258 |
+
//empty the cache on settings changed
|
259 |
+
SQ_Classes_Tools::emptyCache();
|
260 |
+
|
261 |
+
}
|
262 |
+
break;
|
263 |
+
case 'sq_setstickysla':
|
264 |
+
SQ_Classes_Tools::saveUserMeta('sq_auto_sticky', (int)SQ_Classes_Tools::getValue('sq_auto_sticky'));
|
265 |
+
|
266 |
+
break;
|
267 |
+
case 'sq_checkissues':
|
268 |
+
if (!current_user_can('manage_options')) {
|
269 |
+
return;
|
270 |
+
}
|
271 |
+
|
272 |
+
SQ_Classes_Tools::saveOptions('sq_checkedissues', 1);
|
273 |
+
SQ_Classes_Action::apiCall('sq/user/settings', array('settings' => json_encode(SQ_Classes_Tools::getBriefOptions())), 10);
|
274 |
+
|
275 |
+
/* Load the error class */
|
276 |
+
SQ_Classes_Tools::checkErrorSettings();
|
277 |
+
|
278 |
+
break;
|
279 |
+
case 'sq_fixautoseo':
|
280 |
+
if (!current_user_can('manage_options')) {
|
281 |
+
return;
|
282 |
+
}
|
283 |
+
|
284 |
+
SQ_Classes_Tools::saveOptions('sq_use', 1);
|
285 |
+
SQ_Classes_Action::apiCall('sq/user/settings', array('settings' => json_encode(SQ_Classes_Tools::getBriefOptions())), 10);
|
286 |
+
|
287 |
+
break;
|
288 |
+
case 'sq_fixprivate':
|
289 |
+
if (!current_user_can('manage_options')) {
|
290 |
+
return;
|
291 |
+
}
|
292 |
+
|
293 |
+
update_option('blog_public', 1);
|
294 |
+
SQ_Classes_Action::apiCall('sq/user/settings', array('settings' => json_encode(SQ_Classes_Tools::getBriefOptions())), 10);
|
295 |
+
|
296 |
+
break;
|
297 |
+
case 'sq_fixcomments':
|
298 |
+
if (!current_user_can('manage_options')) {
|
299 |
+
return;
|
300 |
+
}
|
301 |
+
|
302 |
+
update_option('comments_notify', 1);
|
303 |
+
SQ_Classes_Action::apiCall('sq/user/settings', array('settings' => json_encode(SQ_Classes_Tools::getBriefOptions())), 10);
|
304 |
+
|
305 |
+
break;
|
306 |
+
case 'sq_fixpermalink':
|
307 |
+
if (!current_user_can('manage_options')) {
|
308 |
+
return;
|
309 |
+
}
|
310 |
+
|
311 |
+
$GLOBALS['wp_rewrite'] = new WP_Rewrite();
|
312 |
+
global $wp_rewrite;
|
313 |
+
$permalink_structure = ((get_option('permalink_structure') <> '') ? get_option('permalink_structure') : '/') . "%postname%/";
|
314 |
+
$wp_rewrite->set_permalink_structure($permalink_structure);
|
315 |
+
$permalink_structure = get_option('permalink_structure');
|
316 |
+
|
317 |
+
flush_rewrite_rules();
|
318 |
+
break;
|
319 |
+
case 'sq_fix_ogduplicate':
|
320 |
+
if (!current_user_can('manage_options')) {
|
321 |
+
return;
|
322 |
+
}
|
323 |
+
|
324 |
+
SQ_Classes_Tools::saveOptions('sq_auto_facebook', 0);
|
325 |
+
SQ_Classes_Action::apiCall('sq/user/settings', array('settings' => json_encode(SQ_Classes_Tools::getBriefOptions())), 10);
|
326 |
+
|
327 |
+
break;
|
328 |
+
case 'sq_fix_tcduplicate':
|
329 |
+
if (!current_user_can('manage_options')) {
|
330 |
+
return;
|
331 |
+
}
|
332 |
+
|
333 |
+
SQ_Classes_Tools::saveOptions('sq_auto_twitter', 0);
|
334 |
+
SQ_Classes_Action::apiCall('sq/user/settings', array('settings' => json_encode(SQ_Classes_Tools::getBriefOptions())), 10);
|
335 |
+
|
336 |
+
break;
|
337 |
+
case 'sq_fix_titleduplicate':
|
338 |
+
if (!current_user_can('manage_options')) {
|
339 |
+
return;
|
340 |
+
}
|
341 |
+
|
342 |
+
SQ_Classes_Tools::saveOptions('sq_auto_title', 0);
|
343 |
+
SQ_Classes_Action::apiCall('sq/user/settings', array('settings' => json_encode(SQ_Classes_Tools::getBriefOptions())), 10);
|
344 |
+
|
345 |
+
break;
|
346 |
+
case 'sq_fix_descduplicate':
|
347 |
+
if (!current_user_can('manage_options')) {
|
348 |
+
return;
|
349 |
+
}
|
350 |
+
|
351 |
+
SQ_Classes_Tools::saveOptions('sq_auto_description', 0);
|
352 |
+
SQ_Classes_Action::apiCall('sq/user/settings', array('settings' => json_encode(SQ_Classes_Tools::getBriefOptions())), 10);
|
353 |
+
|
354 |
+
break;
|
355 |
+
case 'sq_active_help' :
|
356 |
+
if (!current_user_can('manage_options')) {
|
357 |
+
return;
|
358 |
+
}
|
359 |
+
|
360 |
+
SQ_Classes_Tools::saveOptions('active_help', SQ_Classes_Tools::getValue('active_help'));
|
361 |
+
break;
|
362 |
+
case 'sq_warnings_off':
|
363 |
+
if (!current_user_can('manage_options')) {
|
364 |
+
return;
|
365 |
+
}
|
366 |
+
|
367 |
+
SQ_Classes_Tools::saveOptions('ignore_warn', 1);
|
368 |
+
break;
|
369 |
+
case 'sq_copyright_agreement':
|
370 |
+
if (!current_user_can('manage_options')) {
|
371 |
+
return;
|
372 |
+
}
|
373 |
+
|
374 |
+
SQ_Classes_Tools::saveOptions('sq_copyright_agreement', 1);
|
375 |
+
break;
|
376 |
+
case 'sq_get_snippet':
|
377 |
+
|
378 |
+
if (SQ_Classes_Tools::getValue('url') <> '') {
|
379 |
+
$url = SQ_Classes_Tools::getValue('url');
|
380 |
+
} else {
|
381 |
+
$url = get_bloginfo('url');
|
382 |
+
}
|
383 |
+
$snippet = SQ_Classes_Tools::getSnippet($url);
|
384 |
+
|
385 |
+
SQ_Classes_Tools::setHeader('json');
|
386 |
+
echo json_encode($snippet);
|
387 |
+
exit();
|
388 |
+
case 'sq_backup':
|
389 |
+
if (!current_user_can('manage_options')) {
|
390 |
+
return;
|
391 |
+
}
|
392 |
+
|
393 |
+
SQ_Classes_Tools::setHeader('text');
|
394 |
+
header("Content-Disposition: attachment; filename=squirrly-settings-" . gmdate('Y-m-d') . ".txt");
|
395 |
+
|
396 |
+
if (function_exists('base64_encode')) {
|
397 |
+
echo base64_encode(json_encode(SQ_Classes_Tools::$options));
|
398 |
+
} else {
|
399 |
+
echo json_encode(SQ_Classes_Tools::$options);
|
400 |
+
}
|
401 |
+
exit();
|
402 |
+
break;
|
403 |
+
case 'sq_restore':
|
404 |
+
if (!current_user_can('manage_options')) {
|
405 |
+
return;
|
406 |
+
}
|
407 |
+
|
408 |
+
if (!empty($_FILES['sq_options']) && $_FILES["sq_options"]["type"] == "text/plain" && $_FILES['sq_options']['tmp_name'] <> '') {
|
409 |
+
$fp = fopen($_FILES['sq_options']['tmp_name'], 'rb');
|
410 |
+
$options = '';
|
411 |
+
while (($line = fgets($fp)) !== false) {
|
412 |
+
$options .= $line;
|
413 |
+
}
|
414 |
+
try {
|
415 |
+
if (function_exists('base64_encode') && base64_decode($options) <> '') {
|
416 |
+
$options = @base64_decode($options);
|
417 |
+
}
|
418 |
+
$options = json_decode($options, true);
|
419 |
+
if (is_array($options) && isset($options['sq_api'])) {
|
420 |
+
if (SQ_Classes_Tools::getOption('sq_api') <> '') {
|
421 |
+
$options['sq_api'] = SQ_Classes_Tools::getOption('sq_api');
|
422 |
+
}
|
423 |
+
SQ_Classes_Tools::$options = $options;
|
424 |
+
SQ_Classes_Tools::saveOptions();
|
425 |
+
|
426 |
+
//Check if there is an old backup from Squirrly
|
427 |
+
SQ_Classes_Tools::getOptions();
|
428 |
+
SQ_Classes_Tools::checkUpgrade();
|
429 |
+
|
430 |
+
//Update the rewrite rules with the new options
|
431 |
+
add_filter('rewrite_rules_array', array($this, 'rewrite_rules'), 999, 1);
|
432 |
+
//Flush the rewrite with the new favicon and sitemap
|
433 |
+
flush_rewrite_rules();
|
434 |
+
|
435 |
+
SQ_Classes_Error::setError(__('Great! The backup is restored.', _SQ_PLUGIN_NAME_) . " <br /> ", 'success');
|
436 |
+
} else {
|
437 |
+
SQ_Classes_Error::setError(__('Error! The backup is not valid.', _SQ_PLUGIN_NAME_) . " <br /> ");
|
438 |
+
}
|
439 |
+
} catch (Exception $e) {
|
440 |
+
SQ_Classes_Error::setError(__('Error! The backup is not valid.', _SQ_PLUGIN_NAME_) . " <br /> ");
|
441 |
+
}
|
442 |
+
} else {
|
443 |
+
SQ_Classes_Error::setError(__('Error! You have to enter a previous saved backup file.', _SQ_PLUGIN_NAME_) . " <br /> ");
|
444 |
+
}
|
445 |
+
break;
|
446 |
+
case 'sq_backup_sql':
|
447 |
+
if (!current_user_can('manage_options')) {
|
448 |
+
return;
|
449 |
+
}
|
450 |
+
|
451 |
+
header('Content-Type: application/octet-stream');
|
452 |
+
header("Content-Transfer-Encoding: Binary");
|
453 |
+
header("Content-Disposition: attachment; filename=squirrly-seo-" . gmdate('Y-m-d') . ".sql");
|
454 |
+
|
455 |
+
if (function_exists('base64_encode')) {
|
456 |
+
echo base64_encode($this->model->createTableBackup());
|
457 |
+
} else {
|
458 |
+
echo $this->model->createTableBackup();
|
459 |
+
}
|
460 |
+
exit();
|
461 |
+
break;
|
462 |
+
case 'sq_restore_sql':
|
463 |
+
if (!current_user_can('manage_options')) {
|
464 |
+
return;
|
465 |
+
}
|
466 |
+
|
467 |
+
|
468 |
+
if (!empty($_FILES['sq_sql']) && $_FILES["sq_sql"]["type"] == "application/octet-stream" && $_FILES['sq_sql']['tmp_name'] <> '') {
|
469 |
+
$fp = fopen($_FILES['sq_sql']['tmp_name'], 'rb');
|
470 |
+
$sql_file = '';
|
471 |
+
while (($line = fgets($fp)) !== false) {
|
472 |
+
$sql_file .= $line;
|
473 |
+
}
|
474 |
+
|
475 |
+
if (function_exists('base64_encode')) {
|
476 |
+
$sql_file = @base64_decode($sql_file);
|
477 |
+
}
|
478 |
+
if ($sql_file <> '' && strpos($sql_file, 'CREATE TABLE IF NOT EXISTS') !== false) {
|
479 |
+
try {
|
480 |
+
$queries = explode(";\n", $sql_file);
|
481 |
+
$this->model->executeSql($queries);
|
482 |
+
SQ_Classes_Error::setError(__('Great! The SEO backup is restored.', _SQ_PLUGIN_NAME_) . " <br /> ", 'success');
|
483 |
+
|
484 |
+
} catch (Exception $e) {
|
485 |
+
SQ_Classes_Error::setError(__('Error! The backup is not valid.', _SQ_PLUGIN_NAME_) . " <br /> ");
|
486 |
+
}
|
487 |
+
} else {
|
488 |
+
SQ_Classes_Error::setError(__('Error! The backup is not valid.', _SQ_PLUGIN_NAME_) . " <br /> ");
|
489 |
+
}
|
490 |
+
} else {
|
491 |
+
SQ_Classes_Error::setError(__('Error! You have to enter a previous saved backup file.', _SQ_PLUGIN_NAME_) . " <br /> ");
|
492 |
+
}
|
493 |
+
break;
|
494 |
+
case 'sq_dataupgrade':
|
495 |
+
//Check if there is an old backup from Squirrly
|
496 |
+
SQ_Classes_Tools::getOptions();
|
497 |
+
SQ_Classes_Tools::checkUpgrade();
|
498 |
+
SQ_Classes_Error::setError(__('Great! Squirrly Data Settings is up to date now.', _SQ_PLUGIN_NAME_) . " <br /> ", 'success');
|
499 |
+
|
500 |
+
break;
|
501 |
+
case 'sq_resetsettings':
|
502 |
+
if (!current_user_can('manage_options')) {
|
503 |
+
return;
|
504 |
+
}
|
505 |
+
|
506 |
+
SQ_Classes_Tools::$options = SQ_Classes_Tools::getOptions('reset');
|
507 |
+
SQ_Classes_Tools::saveOptions();
|
508 |
+
break;
|
509 |
+
}
|
510 |
+
}
|
511 |
+
|
512 |
+
/**
|
513 |
+
* Add the favicon in the rewrite rule
|
514 |
+
* @param type $wp_rewrite
|
515 |
+
*/
|
516 |
+
public function rewrite_rules($wp_rewrite) {
|
517 |
+
$rules = array();
|
518 |
+
if (SQ_Classes_Tools::getOption('sq_use') == 1) {
|
519 |
+
|
520 |
+
//For Favicon
|
521 |
+
if (SQ_Classes_Tools::$options['sq_auto_favicon'] == 1) {
|
522 |
+
$rules['favicon\.ico$'] = 'index.php?sq_get=favicon';
|
523 |
+
$rules['favicon\.icon$'] = 'index.php?sq_get=favicon';
|
524 |
+
$rules['touch-icon\.png$'] = 'index.php?sq_get=touchicon';
|
525 |
+
foreach ($this->model->appleSizes as $size) {
|
526 |
+
$size = (int)$size;
|
527 |
+
$rules['touch-icon' . $size . '\.png$'] = 'index.php?sq_get=touchicon&sq_size=' . $size;
|
528 |
+
}
|
529 |
+
}
|
530 |
+
|
531 |
+
if (SQ_Classes_Tools::$options['sq_auto_feed'] == 1) {
|
532 |
+
$rules['sqfeedcss$'] = 'index.php?sq_get=feedcss';
|
533 |
+
}
|
534 |
+
}
|
535 |
+
return array_merge($rules, $wp_rewrite);
|
536 |
+
}
|
537 |
+
|
538 |
+
}
|
core/{SQ_BlockSupport/SQ_BlockSupport.php → BlockSupport.php}
RENAMED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class
|
4 |
|
5 |
/**
|
6 |
* Called when Post action is triggered
|
@@ -10,18 +10,18 @@ class SQ_BlockSupport extends SQ_BlockController {
|
|
10 |
public function action() {
|
11 |
parent::action();
|
12 |
|
13 |
-
switch (
|
14 |
case 'sq_feedback':
|
15 |
global $current_user;
|
16 |
$return = array();
|
17 |
|
18 |
-
|
19 |
|
20 |
$line = "\n" . "________________________________________" . "\n";
|
21 |
$from = $current_user->user_email;
|
22 |
$subject = __('Plugin Feedback', _SQ_PLUGIN_NAME_);
|
23 |
-
$face =
|
24 |
-
$message =
|
25 |
|
26 |
if ($message <> '' || (int) $face > 0) {
|
27 |
switch ($face) {
|
@@ -66,7 +66,7 @@ class SQ_BlockSupport extends SQ_BlockController {
|
|
66 |
$return['error'] = true;
|
67 |
}
|
68 |
|
69 |
-
|
70 |
echo json_encode($return);
|
71 |
break;
|
72 |
|
@@ -82,8 +82,8 @@ class SQ_BlockSupport extends SQ_BlockController {
|
|
82 |
|
83 |
$line = "\n" . "________________________________________" . "\n";
|
84 |
$from = $current_user->user_email;
|
85 |
-
$subject =
|
86 |
-
$message =
|
87 |
|
88 |
if ($message <> '') {
|
89 |
$message .= $line;
|
1 |
<?php
|
2 |
|
3 |
+
class SQ_Core_BlockSupport extends SQ_Classes_BlockController {
|
4 |
|
5 |
/**
|
6 |
* Called when Post action is triggered
|
10 |
public function action() {
|
11 |
parent::action();
|
12 |
|
13 |
+
switch (SQ_Classes_Tools::getValue('action')) {
|
14 |
case 'sq_feedback':
|
15 |
global $current_user;
|
16 |
$return = array();
|
17 |
|
18 |
+
SQ_Classes_Tools::saveOptions('sq_feedback', 1);
|
19 |
|
20 |
$line = "\n" . "________________________________________" . "\n";
|
21 |
$from = $current_user->user_email;
|
22 |
$subject = __('Plugin Feedback', _SQ_PLUGIN_NAME_);
|
23 |
+
$face = SQ_Classes_Tools::getValue('feedback');
|
24 |
+
$message = SQ_Classes_Tools::getValue('message');
|
25 |
|
26 |
if ($message <> '' || (int) $face > 0) {
|
27 |
switch ($face) {
|
66 |
$return['error'] = true;
|
67 |
}
|
68 |
|
69 |
+
SQ_Classes_Tools::setHeader('json');
|
70 |
echo json_encode($return);
|
71 |
break;
|
72 |
|
82 |
|
83 |
$line = "\n" . "________________________________________" . "\n";
|
84 |
$from = $current_user->user_email;
|
85 |
+
$subject = SQ_Classes_Tools::getValue('subject', __('Plugin Support', _SQ_PLUGIN_NAME_));
|
86 |
+
$message = SQ_Classes_Tools::getValue('message');
|
87 |
|
88 |
if ($message <> '') {
|
89 |
$message .= $line;
|
core/BlockToolbar.php
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class SQ_Core_BlockToolbar extends SQ_Classes_BlockController {
|
3 |
+
|
4 |
+
}
|
core/{SQ_Blocklogin/SQ_Blocklogin.php → Blocklogin.php}
RENAMED
@@ -1,10 +1,10 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class
|
4 |
|
5 |
public function init() {
|
6 |
/* If logged in, then return */
|
7 |
-
if (
|
8 |
return;
|
9 |
parent::init();
|
10 |
}
|
@@ -15,7 +15,7 @@ class SQ_Blocklogin extends SQ_BlockController {
|
|
15 |
*/
|
16 |
public function action() {
|
17 |
parent::action();
|
18 |
-
switch (
|
19 |
//login action
|
20 |
case 'sq_login':
|
21 |
$this->squirrlyLogin();
|
@@ -28,12 +28,12 @@ class SQ_Blocklogin extends SQ_BlockController {
|
|
28 |
|
29 |
//reset the token action
|
30 |
case 'sq_reset':
|
31 |
-
|
32 |
$return = array();
|
33 |
$return['reset'] = 'success';
|
34 |
|
35 |
//Set the header for json reply
|
36 |
-
|
37 |
echo json_encode($return);
|
38 |
//force exit
|
39 |
exit();
|
@@ -54,15 +54,15 @@ class SQ_Blocklogin extends SQ_BlockController {
|
|
54 |
$args = array();
|
55 |
|
56 |
//Check if email is set
|
57 |
-
if (
|
58 |
$args['name'] = '';
|
59 |
-
$args['user'] =
|
60 |
-
$args['email'] =
|
61 |
}
|
62 |
|
63 |
//if email is set
|
64 |
if ($args['email'] <> '') {
|
65 |
-
$responce =
|
66 |
|
67 |
//create an object from json responce
|
68 |
if (is_object(json_decode($responce)))
|
@@ -73,7 +73,7 @@ class SQ_Blocklogin extends SQ_BlockController {
|
|
73 |
|
74 |
//check if token is set and save it
|
75 |
if (isset($return->token)) {
|
76 |
-
|
77 |
} elseif (!empty($return->error)) {
|
78 |
//if an error is throw then ...
|
79 |
switch ($return->error) {
|
@@ -89,7 +89,7 @@ class SQ_Blocklogin extends SQ_BlockController {
|
|
89 |
$return->error = sprintf(__('Could not send your informations to squirrly. Please register %smanually%s.', _SQ_PLUGIN_NAME_), '<a href="' . _SQ_DASH_URL_ . 'login/?action=register" target="_blank">', '</a>');
|
90 |
|
91 |
//Set the header to json
|
92 |
-
|
93 |
echo json_encode($return); //transform object in json and show it
|
94 |
|
95 |
exit();
|
@@ -105,12 +105,12 @@ class SQ_Blocklogin extends SQ_BlockController {
|
|
105 |
$responce = '';
|
106 |
|
107 |
//get the user and password
|
108 |
-
$args['user'] =
|
109 |
-
$args['password'] =
|
110 |
|
111 |
if ($args['user'] <> '' && $args['password'] <> '') {
|
112 |
//get the responce from server on login call
|
113 |
-
$responce =
|
114 |
|
115 |
//create an object from json responce
|
116 |
if (is_object(json_decode($responce)))
|
@@ -121,7 +121,7 @@ class SQ_Blocklogin extends SQ_BlockController {
|
|
121 |
|
122 |
//check if token is set and save it
|
123 |
if (isset($return->token)) {
|
124 |
-
|
125 |
} elseif (!empty($return->error)) {
|
126 |
//if an error is throw then ...
|
127 |
switch ($return->error) {
|
@@ -139,7 +139,7 @@ class SQ_Blocklogin extends SQ_BlockController {
|
|
139 |
$return->error = __('Both fields are required.', _SQ_PLUGIN_NAME_);
|
140 |
|
141 |
//Set the header to json
|
142 |
-
|
143 |
echo json_encode($return);
|
144 |
|
145 |
exit();
|
1 |
<?php
|
2 |
|
3 |
+
class SQ_Core_Blocklogin extends SQ_Classes_BlockController {
|
4 |
|
5 |
public function init() {
|
6 |
/* If logged in, then return */
|
7 |
+
if (SQ_Classes_Tools::getOption('sq_api') <> '')
|
8 |
return;
|
9 |
parent::init();
|
10 |
}
|
15 |
*/
|
16 |
public function action() {
|
17 |
parent::action();
|
18 |
+
switch (SQ_Classes_Tools::getValue('action')) {
|
19 |
//login action
|
20 |
case 'sq_login':
|
21 |
$this->squirrlyLogin();
|
28 |
|
29 |
//reset the token action
|
30 |
case 'sq_reset':
|
31 |
+
SQ_Classes_Tools::saveOptions('sq_api', '');
|
32 |
$return = array();
|
33 |
$return['reset'] = 'success';
|
34 |
|
35 |
//Set the header for json reply
|
36 |
+
SQ_Classes_Tools::setHeader('json');
|
37 |
echo json_encode($return);
|
38 |
//force exit
|
39 |
exit();
|
54 |
$args = array();
|
55 |
|
56 |
//Check if email is set
|
57 |
+
if (SQ_Classes_Tools::getValue('email') <> '') {
|
58 |
$args['name'] = '';
|
59 |
+
$args['user'] = SQ_Classes_Tools::getValue('email');
|
60 |
+
$args['email'] = SQ_Classes_Tools::getValue('email');
|
61 |
}
|
62 |
|
63 |
//if email is set
|
64 |
if ($args['email'] <> '') {
|
65 |
+
$responce = SQ_Classes_Action::apiCall('sq/register', $args);
|
66 |
|
67 |
//create an object from json responce
|
68 |
if (is_object(json_decode($responce)))
|
73 |
|
74 |
//check if token is set and save it
|
75 |
if (isset($return->token)) {
|
76 |
+
SQ_Classes_Tools::saveOptions('sq_api', $return->token);
|
77 |
} elseif (!empty($return->error)) {
|
78 |
//if an error is throw then ...
|
79 |
switch ($return->error) {
|
89 |
$return->error = sprintf(__('Could not send your informations to squirrly. Please register %smanually%s.', _SQ_PLUGIN_NAME_), '<a href="' . _SQ_DASH_URL_ . 'login/?action=register" target="_blank">', '</a>');
|
90 |
|
91 |
//Set the header to json
|
92 |
+
SQ_Classes_Tools::setHeader('json');
|
93 |
echo json_encode($return); //transform object in json and show it
|
94 |
|
95 |
exit();
|
105 |
$responce = '';
|
106 |
|
107 |
//get the user and password
|
108 |
+
$args['user'] = SQ_Classes_Tools::getValue('user', null, true);
|
109 |
+
$args['password'] = SQ_Classes_Tools::getValue('password', null, true);
|
110 |
|
111 |
if ($args['user'] <> '' && $args['password'] <> '') {
|
112 |
//get the responce from server on login call
|
113 |
+
$responce = SQ_Classes_Action::apiCall('sq/login', $args);
|
114 |
|
115 |
//create an object from json responce
|
116 |
if (is_object(json_decode($responce)))
|
121 |
|
122 |
//check if token is set and save it
|
123 |
if (isset($return->token)) {
|
124 |
+
SQ_Classes_Tools::saveOptions('sq_api', $return->token);
|
125 |
} elseif (!empty($return->error)) {
|
126 |
//if an error is throw then ...
|
127 |
switch ($return->error) {
|
139 |
$return->error = __('Both fields are required.', _SQ_PLUGIN_NAME_);
|
140 |
|
141 |
//Set the header to json
|
142 |
+
SQ_Classes_Tools::setHeader('json');
|
143 |
echo json_encode($return);
|
144 |
|
145 |
exit();
|
core/Blockresearch.php
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Core class for SQ_Core_Blocksearch
|
5 |
+
*/
|
6 |
+
class SQ_Core_Blockresearch extends SQ_Classes_BlockController {
|
7 |
+
|
8 |
+
}
|
core/Blocksearch.php
ADDED
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Core class for SQ_Core_Blocksearch
|
5 |
+
*/
|
6 |
+
class SQ_Core_Blocksearch extends SQ_Classes_BlockController {
|
7 |
+
|
8 |
+
public function action() {
|
9 |
+
$start = 0;
|
10 |
+
$nbr = 8;
|
11 |
+
$exclude = array();
|
12 |
+
|
13 |
+
parent::action();
|
14 |
+
switch (SQ_Classes_Tools::getValue('action')) {
|
15 |
+
case 'sq_type_click':
|
16 |
+
SQ_Classes_Tools::saveOptions('sq_img_licence', SQ_Classes_Tools::getValue('licence'));
|
17 |
+
exit();
|
18 |
+
break;
|
19 |
+
case 'sq_search_blog':
|
20 |
+
if (SQ_Classes_Tools::getValue('exclude') && SQ_Classes_Tools::getValue('exclude') <> 'undefined')
|
21 |
+
$exclude = array((int) SQ_Classes_Tools::getValue('exclude'));
|
22 |
+
|
23 |
+
if (SQ_Classes_Tools::getValue('start'))
|
24 |
+
$start = array((int) SQ_Classes_Tools::getValue('start'));
|
25 |
+
|
26 |
+
if (SQ_Classes_Tools::getValue('nrb'))
|
27 |
+
$nrb = (int) SQ_Classes_Tools::getValue('nrb');
|
28 |
+
|
29 |
+
if (SQ_Classes_Tools::getValue('q') <> '')
|
30 |
+
echo SQ_Classes_ObjController::getClass('SQ_Models_Post')->searchPost(SQ_Classes_Tools::getValue('q'), $exclude, (int) $start, (int) $nrb);
|
31 |
+
break;
|
32 |
+
}
|
33 |
+
|
34 |
+
exit();
|
35 |
+
}
|
36 |
+
|
37 |
+
public function hookHead() {
|
38 |
+
parent::hookHead();
|
39 |
+
}
|
40 |
+
|
41 |
+
}
|
core/Blockseo.php
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SQ_Core_Blockseo extends SQ_Classes_BlockController {
|
4 |
+
|
5 |
+
public function action() {
|
6 |
+
|
7 |
+
}
|
8 |
+
|
9 |
+
public function hookHead() {
|
10 |
+
parent::hookHead();
|
11 |
+
|
12 |
+
echo '<script type="text/javascript">
|
13 |
+
var __snippetshort = "' . __('Too short', _SQ_PLUGIN_NAME_) . '";
|
14 |
+
var __snippetlong = "' . __('Too long', _SQ_PLUGIN_NAME_) . '";
|
15 |
+
var __sq_snippet = "' . __('snippet', _SQ_PLUGIN_NAME_) . '";
|
16 |
+
' . "\n" . '</script>';
|
17 |
+
|
18 |
+
}
|
19 |
+
|
20 |
+
}
|
core/Loading.php
ADDED
@@ -0,0 +1,105 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SQ_Core_Loading extends SQ_Classes_BlockController {
|
4 |
+
|
5 |
+
public function hookHead() {
|
6 |
+
parent::hookHead();
|
7 |
+
$this->loadJsVars();
|
8 |
+
}
|
9 |
+
|
10 |
+
public function loadJsVars() {
|
11 |
+
global $sq_postID;
|
12 |
+
|
13 |
+
/* Check the squirrly.js file if exists */
|
14 |
+
$browser = SQ_Classes_Tools::getBrowserInfo();
|
15 |
+
|
16 |
+
if ((isset($browser) && $browser != false && is_array($browser) && $browser['name'] == 'IE' && (int)$browser['version'] < 9 && (int)$browser['version'] > 0)) {
|
17 |
+
echo '<script type="text/javascript">
|
18 |
+
(function($){
|
19 |
+
$("#sq_preloading").removeClass("sq_loading");
|
20 |
+
$("#sq_preloading").addClass("sq_error")
|
21 |
+
$("#sq_preloading").html("' . __('For Squirrly to work properly you have to use a higher version of Internet Explorer. <br /> We recommend you to use Chrome or Mozilla.', _SQ_PLUGIN_NAME_) . '");
|
22 |
+
$("#sq_options").hide();
|
23 |
+
$("#sq_blocklogin").hide();
|
24 |
+
})(jQuery);
|
25 |
+
</script>';
|
26 |
+
} else {
|
27 |
+
echo '<script type="text/javascript">
|
28 |
+
var SQ_DEBUG = ' . (int)SQ_DEBUG . ';
|
29 |
+
(function($){
|
30 |
+
$.sq_config = {
|
31 |
+
sq_use: ' . (int)SQ_Classes_Tools::getOption('sq_use') . ',
|
32 |
+
user_url: "' . home_url() . '",
|
33 |
+
sq_baseurl: "' . _SQ_STATIC_API_URL_ . '",
|
34 |
+
sq_uri: "' . SQ_URI . '",
|
35 |
+
sq_apiurl: "' . _SQ_API_URL_ . '",
|
36 |
+
language: "' . get_bloginfo('language') . '",
|
37 |
+
sq_version: "' . SQ_VERSION_ID . '",
|
38 |
+
sq_wpversion: "' . WP_VERSION_ID . '",
|
39 |
+
sq_phpversion: "' . PHP_VERSION_ID . '",
|
40 |
+
sq_seoversion: "' . (SQ_Classes_Tools::getOption('sq_sla') + 1) . '",
|
41 |
+
keyword_information: ' . (int)SQ_Classes_Tools::getOption('sq_keyword_information') . ',
|
42 |
+
sq_keywordtag: ' . (int)SQ_Classes_Tools::getOption('sq_keywordtag') . ',
|
43 |
+
frontend_css: "' . _SQ_THEME_URL_ . 'css/frontend' . (SQ_DEBUG ? '' : '.min') . '.css",
|
44 |
+
postID: "' . $sq_postID . '",
|
45 |
+
prevNonce: "' . wp_create_nonce('post_preview_' . $sq_postID) . '",
|
46 |
+
token: "' . SQ_Classes_Tools::getOption('sq_api') . '",
|
47 |
+
__infotext: ["' . __('Recent discussions:', _SQ_PLUGIN_NAME_) . '", "' . __('SEO Search Volume:', _SQ_PLUGIN_NAME_) . '", "' . __('Competition:', _SQ_PLUGIN_NAME_) . '", "' . __('Trend:', _SQ_PLUGIN_NAME_) . '"],
|
48 |
+
__keyword: "' . __('Keyword:', _SQ_PLUGIN_NAME_) . '",
|
49 |
+
__date: "' . __('date', _SQ_PLUGIN_NAME_) . '",
|
50 |
+
__readit: "' . __('Read it!', _SQ_PLUGIN_NAME_) . '",
|
51 |
+
__insertit: "' . __('Insert it!', _SQ_PLUGIN_NAME_) . '",
|
52 |
+
__reference: "' . __('Reference', _SQ_PLUGIN_NAME_) . '",
|
53 |
+
__insertasbox: "' . __('Insert as box', _SQ_PLUGIN_NAME_) . '",
|
54 |
+
__addlink: "' . __('Insert Link', _SQ_PLUGIN_NAME_) . '",
|
55 |
+
__notrelevant: "' . __('Not relevant?', _SQ_PLUGIN_NAME_) . '",
|
56 |
+
__insertparagraph: "' . __('Insert in your article', _SQ_PLUGIN_NAME_) . '",
|
57 |
+
__ajaxerror: "' . __(':( An error occurred while processing your request. Please try again', _SQ_PLUGIN_NAME_) . '",
|
58 |
+
__krerror: "' . __('Keyword Research takes too long to get the results. Click to try again', _SQ_PLUGIN_NAME_) . '",
|
59 |
+
__nofound: "' . __('No results found!', _SQ_PLUGIN_NAME_) . '",
|
60 |
+
__morewords: "' . __('Enter one more word to find relevant results', _SQ_PLUGIN_NAME_) . '",
|
61 |
+
__toolong: "' . __('Takes too long to check this keyword ...', _SQ_PLUGIN_NAME_) . '",
|
62 |
+
__doresearch: "' . __('Do a research!', _SQ_PLUGIN_NAME_) . '",
|
63 |
+
__morekeywords: "' . __('Do more research!', _SQ_PLUGIN_NAME_) . '",
|
64 |
+
__sq_photo_copyright: "' . __('[ ATTRIBUTE: Please check: %s to find out how to attribute this image ]', _SQ_PLUGIN_NAME_) . '",
|
65 |
+
__has_attributes: "' . __('Has creative commons attributes', _SQ_PLUGIN_NAME_) . '",
|
66 |
+
__no_attributes: "' . __('No known copyright restrictions', _SQ_PLUGIN_NAME_) . '",
|
67 |
+
__noopt: "' . __('You haven`t used Squirrly SEO to optimize your article. Do you want to optimize for a keyword before publishing?', _SQ_PLUGIN_NAME_) . '",
|
68 |
+
__limit_exceeded: "' . __('Keyword Research limit exceeded', _SQ_PLUGIN_NAME_) . '",
|
69 |
+
__subscription_expired: "' . __('Your Subscription has Expired', _SQ_PLUGIN_NAME_) . '",
|
70 |
+
__add_keywords: "' . __('Add 20 Keyword Researches', _SQ_PLUGIN_NAME_) . '",
|
71 |
+
__no_briefcase: "' . __('There are no keywords saved in briefcase yet', _SQ_PLUGIN_NAME_) . '",
|
72 |
+
__fulloptimized: "' . __('Congratulations! Your article is 100% optimized!', _SQ_PLUGIN_NAME_) . '",
|
73 |
+
__toomanytimes: "' . __('appears too many times. Try to remove %s of them', _SQ_PLUGIN_NAME_) . '",
|
74 |
+
__writemorewords: "' . __('write %s more words', _SQ_PLUGIN_NAME_) . '",
|
75 |
+
__keywordinintroduction: "' . __('Add the keyword in the %s of your article', _SQ_PLUGIN_NAME_) . '",
|
76 |
+
__clicktohighlight: "' . __('Click to keep the highlight on', _SQ_PLUGIN_NAME_) . '",
|
77 |
+
__introduction: "' . __('introduction', _SQ_PLUGIN_NAME_) . '",
|
78 |
+
__morewordsafter: "' . __('Write more words after the %s keyword', _SQ_PLUGIN_NAME_) . '",
|
79 |
+
__orusesynonyms: "' . __('or use synonyms', _SQ_PLUGIN_NAME_) . '",
|
80 |
+
__addmorewords: "' . __('add %s more word(s)', _SQ_PLUGIN_NAME_) . '",
|
81 |
+
__removewords: "' . __('or remove %s word(s)', _SQ_PLUGIN_NAME_) . '",
|
82 |
+
__addmorekeywords: "' . __('add %s more keyword(s)', _SQ_PLUGIN_NAME_) . '",
|
83 |
+
__addminimumwords: "' . __('write %s more words to start calculating', _SQ_PLUGIN_NAME_) . '",
|
84 |
+
};
|
85 |
+
|
86 |
+
|
87 |
+
if (typeof sq_script === "undefined"){
|
88 |
+
var sq_script = document.createElement(\'script\');
|
89 |
+
sq_script.src = "' . _SQ_STATIC_API_URL_ . SQ_URI . '/js/squirrly' . (SQ_DEBUG ? '' : '.min') . '.js?ver=' . SQ_VERSION_ID . '";
|
90 |
+
var site_head = document.getElementsByTagName ("head")[0] || document.documentElement;
|
91 |
+
site_head.insertBefore(sq_script, site_head.firstChild);
|
92 |
+
}
|
93 |
+
|
94 |
+
|
95 |
+
$(document).ready(function() {
|
96 |
+
$("#sq_preloading").html("");
|
97 |
+
});
|
98 |
+
})(jQuery);
|
99 |
+
|
100 |
+
</script>';
|
101 |
+
|
102 |
+
}
|
103 |
+
}
|
104 |
+
|
105 |
+
}
|
core/SQ_BlockAnalytics/SQ_BlockAnalytics.php
DELETED
@@ -1,9 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class SQ_BlockAnalytics extends SQ_BlockController {
|
4 |
-
|
5 |
-
public function hookGetContent() {
|
6 |
-
|
7 |
-
}
|
8 |
-
|
9 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
core/SQ_BlockCustomerService/SQ_BlockCustomerService.php
DELETED
@@ -1,11 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/**
|
4 |
-
* Customer Service Page
|
5 |
-
*/
|
6 |
-
class SQ_BlockCustomerService extends SQ_BlockController {
|
7 |
-
|
8 |
-
function hookGetContent() {
|
9 |
-
SQ_ObjController::getController('SQ_DisplayController', false)->loadMedia('sq_blocksupport');
|
10 |
-
}
|
11 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
core/SQ_BlockHelp/SQ_BlockHelp.php
DELETED
@@ -1,8 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/**
|
4 |
-
* Affiliate settings
|
5 |
-
*/
|
6 |
-
class SQ_BlockHelp extends SQ_BlockController {
|
7 |
-
|
8 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
core/SQ_BlockKeywordResearch/SQ_BlockKeywordResearch.php
DELETED
@@ -1,11 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/**
|
4 |
-
* Keyword Research settings
|
5 |
-
*/
|
6 |
-
class SQ_BlockKeywordResearch extends SQ_BlockController {
|
7 |
-
|
8 |
-
function hookGetContent() {
|
9 |
-
parent::preloadSettings();
|
10 |
-
}
|
11 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
core/SQ_BlockSettings/SQ_BlockSettings.php
DELETED
@@ -1,72 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/**
|
4 |
-
* Account settings
|
5 |
-
*/
|
6 |
-
class SQ_BlockSettings extends SQ_BlockController {
|
7 |
-
|
8 |
-
function hookGetContent() {
|
9 |
-
parent::preloadSettings();
|
10 |
-
SQ_ObjController::getController('SQ_Error', false)->hookNotices();
|
11 |
-
echo '<script type="text/javascript">
|
12 |
-
jQuery(document).ready(function () {
|
13 |
-
jQuery("#sq_settings").find("select[name=sq_google_country]").val("' . SQ_Tools::$options['sq_google_country'] . '");
|
14 |
-
});
|
15 |
-
</script>';
|
16 |
-
}
|
17 |
-
|
18 |
-
/**
|
19 |
-
* Called when Post action is triggered
|
20 |
-
*
|
21 |
-
* @return void
|
22 |
-
*/
|
23 |
-
public function action() {
|
24 |
-
parent::action();
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
switch (SQ_Tools::getValue('action')) {
|
29 |
-
|
30 |
-
case 'sq_settings_update':
|
31 |
-
if (!current_user_can('manage_options')){
|
32 |
-
return;
|
33 |
-
}
|
34 |
-
|
35 |
-
if (SQ_Tools::getIsset('sq_post_types')) {
|
36 |
-
SQ_Tools::$options['sq_post_types'] = array();
|
37 |
-
foreach (SQ_Tools::getValue('sq_post_types') as $key) {
|
38 |
-
array_push(SQ_Tools::$options['sq_post_types'], $key);
|
39 |
-
}
|
40 |
-
|
41 |
-
if (!in_array('product', get_post_types())) {
|
42 |
-
array_push(SQ_Tools::$options['sq_post_types'], 'product');
|
43 |
-
}
|
44 |
-
}
|
45 |
-
|
46 |
-
SQ_Tools::saveOptions('sq_google_country', SQ_Tools::getValue('sq_google_country'));
|
47 |
-
SQ_Tools::saveOptions('sq_google_country_strict', SQ_Tools::getValue('sq_google_country_strict'));
|
48 |
-
SQ_Tools::saveOptions('sq_google_ranksperhour', SQ_Tools::getValue('sq_google_ranksperhour'));
|
49 |
-
|
50 |
-
SQ_Tools::saveOptions('sq_keyword_help', (int) SQ_Tools::getValue('sq_keyword_help'));
|
51 |
-
SQ_Tools::saveOptions('sq_keyword_information', (int) SQ_Tools::getValue('sq_keyword_information'));
|
52 |
-
SQ_Tools::saveOptions('sq_force_savepost', (int) SQ_Tools::getValue('sq_force_savepost'));
|
53 |
-
|
54 |
-
|
55 |
-
SQ_Tools::saveOptions('sq_sla', (int) SQ_Tools::getValue('sq_sla'));
|
56 |
-
SQ_Tools::saveOptions('sq_keywordtag', (int) SQ_Tools::getValue('sq_keywordtag'));
|
57 |
-
SQ_Tools::saveOptions('sq_local_images', (int) SQ_Tools::getValue('sq_local_images'));
|
58 |
-
SQ_Tools::saveOptions('sq_url_fix', (int) SQ_Tools::getValue('sq_url_fix'));
|
59 |
-
|
60 |
-
|
61 |
-
SQ_Tools::saveOptions('sq_google_wt', SQ_ObjController::getModel('SQ_BlockSettingsSeo')->checkGoogleWTCode(SQ_Tools::getValue('sq_google_wt','',true)));
|
62 |
-
SQ_Tools::saveOptions('sq_bing_wt', SQ_ObjController::getModel('SQ_BlockSettingsSeo')->checkBingWTCode(SQ_Tools::getValue('sq_bing_wt','',true)));
|
63 |
-
SQ_Tools::saveOptions('sq_alexa', SQ_ObjController::getModel('SQ_BlockSettingsSeo')->checkBingWTCode(SQ_Tools::getValue('sq_alexa','',true)));
|
64 |
-
|
65 |
-
|
66 |
-
SQ_Action::apiCall('sq/user/settings', array('settings' => json_encode(SQ_Tools::getBriefOptions())), 10);
|
67 |
-
SQ_Tools::emptyCache();
|
68 |
-
break;
|
69 |
-
}
|
70 |
-
}
|
71 |
-
|
72 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
core/SQ_BlockSettingsSeo/SQ_BlockSettingsSeo.php
DELETED
@@ -1,382 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/**
|
4 |
-
* Account settings
|
5 |
-
*/
|
6 |
-
class SQ_BlockSettingsSeo extends SQ_BlockController {
|
7 |
-
|
8 |
-
function hookGetContent() {
|
9 |
-
parent::preloadSettings();
|
10 |
-
/* Force call of error display */
|
11 |
-
SQ_ObjController::getController('SQ_Error', false)->hookNotices();
|
12 |
-
echo '<script type="text/javascript">
|
13 |
-
var __snippetshort = "' . __('Too short', _SQ_PLUGIN_NAME_) . '";
|
14 |
-
var __snippetlong = "' . __('Too long', _SQ_PLUGIN_NAME_) . '";
|
15 |
-
jQuery(document).ready(function () {
|
16 |
-
jQuery("#sq_settings").find("select[name=sq_og_locale]").val("' . SQ_Tools::$options['sq_og_locale'] . '");
|
17 |
-
});
|
18 |
-
</script>';
|
19 |
-
}
|
20 |
-
|
21 |
-
function hookHead() {
|
22 |
-
if (function_exists('wp_enqueue_media')) {
|
23 |
-
wp_enqueue_media();
|
24 |
-
}
|
25 |
-
parent::hookHead();
|
26 |
-
}
|
27 |
-
|
28 |
-
/**
|
29 |
-
* Called when Post action is triggered
|
30 |
-
*
|
31 |
-
* @return void
|
32 |
-
*/
|
33 |
-
public function action() {
|
34 |
-
parent::action();
|
35 |
-
|
36 |
-
switch (SQ_Tools::getValue('action')) {
|
37 |
-
|
38 |
-
case 'sq_settingsseo_update':
|
39 |
-
if (!current_user_can('manage_options')) {
|
40 |
-
return;
|
41 |
-
}
|
42 |
-
|
43 |
-
if (!SQ_Tools::getIsset('sq_use')) {
|
44 |
-
return;
|
45 |
-
}
|
46 |
-
|
47 |
-
SQ_Tools::saveOptions('sq_use', (int)SQ_Tools::getValue('sq_use'));
|
48 |
-
SQ_Tools::saveOptions('sq_auto_title', (int)SQ_Tools::getValue('sq_auto_title'));
|
49 |
-
SQ_Tools::saveOptions('sq_auto_description', (int)SQ_Tools::getValue('sq_auto_description'));
|
50 |
-
SQ_Tools::saveOptions('sq_auto_canonical', (int)SQ_Tools::getValue('sq_auto_canonical'));
|
51 |
-
SQ_Tools::saveOptions('sq_auto_amp', (int)SQ_Tools::getValue('sq_auto_amp'));
|
52 |
-
|
53 |
-
SQ_Tools::saveOptions('sq_auto_meta', (int)SQ_Tools::getValue('sq_auto_meta'));
|
54 |
-
SQ_Tools::saveOptions('sq_auto_favicon', (int)SQ_Tools::getValue('sq_auto_favicon'));
|
55 |
-
|
56 |
-
///////////////////////////////////////////
|
57 |
-
/////////////////////////////SOCIAL OPTION
|
58 |
-
SQ_Tools::saveOptions('sq_auto_facebook', (int)SQ_Tools::getValue('sq_auto_facebook'));
|
59 |
-
SQ_Tools::saveOptions('sq_auto_twitter', (int)SQ_Tools::getValue('sq_auto_twitter'));
|
60 |
-
SQ_Tools::saveOptions('sq_auto_twittersize', SQ_Tools::getValue('sq_auto_twittersize'));
|
61 |
-
SQ_Tools::saveOptions('sq_og_locale', SQ_Tools::getValue('sq_og_locale'));
|
62 |
-
|
63 |
-
SQ_Tools::saveOptions('sq_twitter_account', $this->model->checkTwitterAccount(SQ_Tools::getValue('sq_twitter_account')));
|
64 |
-
SQ_Tools::saveOptions('sq_facebook_account', $this->model->checkFacebookAccount(SQ_Tools::getValue('sq_facebook_account')));
|
65 |
-
SQ_Tools::saveOptions('sq_google_plus', $this->model->checkGoogleAccount(SQ_Tools::getValue('sq_google_plus')));
|
66 |
-
SQ_Tools::saveOptions('sq_linkedin_account', $this->model->checkLinkeinAccount(SQ_Tools::getValue('sq_linkedin_account')));
|
67 |
-
SQ_Tools::saveOptions('sq_pinterest_account', $this->model->checkPinterestAccount(SQ_Tools::getValue('sq_pinterest_account')));
|
68 |
-
SQ_Tools::saveOptions('sq_instagram_account', $this->model->checkInstagramAccount(SQ_Tools::getValue('sq_instagram_account')));
|
69 |
-
|
70 |
-
///////////////////////////////////////////
|
71 |
-
/////////////////////////////FIRST PAGE OPTIMIZATION
|
72 |
-
SQ_Tools::saveOptions('sq_auto_seo', 0);
|
73 |
-
if ($pageId = get_option('page_on_front')) {
|
74 |
-
$meta = array();
|
75 |
-
if (SQ_Tools::getIsset('sq_fp_title'))
|
76 |
-
$meta[] = array('key' => '_sq_fp_title', 'value' => urldecode(SQ_Tools::getValue('sq_fp_title')));
|
77 |
-
|
78 |
-
if (SQ_Tools::getIsset('sq_fp_description'))
|
79 |
-
$meta[] = array('key' => '_sq_fp_description', 'value' => urldecode(SQ_Tools::getValue('sq_fp_description')));
|
80 |
-
|
81 |
-
if (SQ_Tools::getIsset('sq_fp_keywords'))
|
82 |
-
$meta[] = array('key' => '_sq_fp_keywords', 'value' => SQ_Tools::getValue('sq_fp_keywords'));
|
83 |
-
|
84 |
-
if (SQ_Tools::getIsset('sq_fp_ogimage'))
|
85 |
-
$meta[] = array('key' => '_sq_fp_ogimage', 'value' => SQ_Tools::getValue('sq_fp_ogimage'));
|
86 |
-
|
87 |
-
if (!empty($meta))
|
88 |
-
SQ_ObjController::getModel('SQ_Post')->saveAdvMeta($pageId, $meta);
|
89 |
-
}
|
90 |
-
|
91 |
-
SQ_Tools::saveOptions('sq_fp_title', SQ_Tools::getValue('sq_fp_title'));
|
92 |
-
SQ_Tools::saveOptions('sq_fp_description', SQ_Tools::getValue('sq_fp_description'));
|
93 |
-
SQ_Tools::saveOptions('sq_fp_keywords', SQ_Tools::getValue('sq_fp_keywords'));
|
94 |
-
SQ_Tools::saveOptions('sq_fp_ogimage', SQ_Tools::getValue('sq_fp_ogimage'));
|
95 |
-
|
96 |
-
|
97 |
-
///////////////////////////////////////////
|
98 |
-
/////////////////////////////SITEMAP OPTION
|
99 |
-
SQ_Tools::saveOptions('sq_auto_sitemap', (int)SQ_Tools::getValue('sq_auto_sitemap'));
|
100 |
-
SQ_Tools::saveOptions('sq_auto_feed', (int)SQ_Tools::getValue('sq_auto_feed'));
|
101 |
-
SQ_Tools::saveOptions('sq_sitemap_frequency', SQ_Tools::getValue('sq_sitemap_frequency'));
|
102 |
-
SQ_Tools::saveOptions('sq_sitemap_ping', (int)SQ_Tools::getValue('sq_sitemap_ping'));
|
103 |
-
|
104 |
-
foreach (SQ_Tools::$options['sq_sitemap'] as $key => $value) {
|
105 |
-
if ($key == 'sitemap') {
|
106 |
-
continue;
|
107 |
-
}
|
108 |
-
SQ_Tools::$options['sq_sitemap'][$key][1] = 0;
|
109 |
-
if ($key == 'sitemap-product' && !$this->model->isEcommerce()) {
|
110 |
-
SQ_Tools::$options['sq_sitemap'][$key][1] = 2;
|
111 |
-
}
|
112 |
-
}
|
113 |
-
if (SQ_Tools::getIsset('sq_sitemap')) {
|
114 |
-
foreach (SQ_Tools::getValue('sq_sitemap') as $key) {
|
115 |
-
if (isset(SQ_Tools::$options['sq_sitemap'][$key][1])) {
|
116 |
-
SQ_Tools::$options['sq_sitemap'][$key][1] = 1;
|
117 |
-
}
|
118 |
-
}
|
119 |
-
}
|
120 |
-
|
121 |
-
foreach (SQ_Tools::$options['sq_sitemap_show'] as $key => $value) {
|
122 |
-
SQ_Tools::$options['sq_sitemap_show'][$key] = 0;
|
123 |
-
}
|
124 |
-
if (SQ_Tools::getIsset('sq_sitemap_show')) {
|
125 |
-
foreach (SQ_Tools::getValue('sq_sitemap_show') as $key) {
|
126 |
-
if (isset(SQ_Tools::$options['sq_sitemap_show'][$key])) {
|
127 |
-
SQ_Tools::$options['sq_sitemap_show'][$key] = 1;
|
128 |
-
}
|
129 |
-
}
|
130 |
-
}
|
131 |
-
|
132 |
-
///////////////////////////////////////////
|
133 |
-
|
134 |
-
SQ_Tools::saveOptions('sq_google_analytics', $this->model->checkGoogleAnalyticsCode(SQ_Tools::getValue('sq_google_analytics', '', true)));
|
135 |
-
SQ_Tools::saveOptions('sq_facebook_insights', $this->model->checkFavebookInsightsCode(SQ_Tools::getValue('sq_facebook_insights', '', true)));
|
136 |
-
SQ_Tools::saveOptions('sq_facebook_analytics', SQ_Tools::getValue('sq_facebook_analytics', ''));
|
137 |
-
SQ_Tools::saveOptions('sq_pinterest', $this->model->checkPinterestCode(SQ_Tools::getValue('sq_pinterest', '', true)));
|
138 |
-
|
139 |
-
///////////////////////////////////////////JSONLD
|
140 |
-
|
141 |
-
|
142 |
-
SQ_Tools::saveOptions('sq_auto_jsonld', (int)SQ_Tools::getValue('sq_auto_jsonld'));
|
143 |
-
if (SQ_Tools::getIsset('sq_jsonld_type') && isset(SQ_Tools::$options['sq_jsonld'][SQ_Tools::getValue('sq_jsonld_type')])) {
|
144 |
-
|
145 |
-
foreach (SQ_Tools::$options['sq_jsonld'][SQ_Tools::getValue('sq_jsonld_type')] as $key => $value) {
|
146 |
-
if (isset(SQ_Tools::$options['sq_jsonld'][SQ_Tools::getValue('sq_jsonld_type')][$key])) {
|
147 |
-
SQ_Tools::$options['sq_jsonld'][SQ_Tools::getValue('sq_jsonld_type')][$key] = SQ_Tools::getValue('sq_jsonld_' . $key);
|
148 |
-
}
|
149 |
-
}
|
150 |
-
if (isset(SQ_Tools::$options['sq_jsonld'][SQ_Tools::getValue('sq_jsonld_type')]['telephone']) &&
|
151 |
-
SQ_Tools::$options['sq_jsonld'][SQ_Tools::getValue('sq_jsonld_type')]['telephone'] <> ''
|
152 |
-
) {
|
153 |
-
SQ_Tools::$options['sq_jsonld'][SQ_Tools::getValue('sq_jsonld_type')]['telephone'] = '+' . SQ_Tools::$options['sq_jsonld'][SQ_Tools::getValue('sq_jsonld_type')]['telephone'];
|
154 |
-
}
|
155 |
-
}
|
156 |
-
SQ_Tools::saveOptions('sq_jsonld_type', SQ_Tools::getValue('sq_jsonld_type'));
|
157 |
-
|
158 |
-
///////////////////////////////////////////
|
159 |
-
/////////////////////////////FAVICON OPTION
|
160 |
-
|
161 |
-
/* if there is an icon to upload */
|
162 |
-
if (!empty($_FILES['favicon'])) {
|
163 |
-
|
164 |
-
$return = $this->model->addFavicon($_FILES['favicon']);
|
165 |
-
if ($return['favicon'] <> '') {
|
166 |
-
SQ_Tools::saveOptions('favicon', strtolower(basename($return['favicon'])));
|
167 |
-
}
|
168 |
-
if ($return['message'] <> '') {
|
169 |
-
define('SQ_MESSAGE_FAVICON', $return['message']);
|
170 |
-
SQ_Error::setError(SQ_MESSAGE_FAVICON . " <br /> ");
|
171 |
-
}
|
172 |
-
}
|
173 |
-
|
174 |
-
SQ_Action::apiCall('sq/user/settings', array('settings' => json_encode(SQ_Tools::getBriefOptions())), 10);
|
175 |
-
//Update the rewrite rules with the new options
|
176 |
-
add_filter('rewrite_rules_array', array($this, 'rewrite_rules'), 999, 1);
|
177 |
-
//Flush the rewrite with the new favicon and sitemap
|
178 |
-
global $wp_rewrite;
|
179 |
-
$wp_rewrite->flush_rules();
|
180 |
-
|
181 |
-
//empty the cache on settings changed
|
182 |
-
SQ_Tools::emptyCache();
|
183 |
-
break;
|
184 |
-
case 'sq_checkissues':
|
185 |
-
if (!current_user_can('manage_options')) {
|
186 |
-
return;
|
187 |
-
}
|
188 |
-
|
189 |
-
SQ_Tools::saveOptions('sq_checkedissues', 1);
|
190 |
-
SQ_Action::apiCall('sq/user/settings', array('settings' => json_encode(SQ_Tools::getBriefOptions())), 10);
|
191 |
-
|
192 |
-
/* Load the error class */
|
193 |
-
SQ_Tools::checkErrorSettings();
|
194 |
-
|
195 |
-
break;
|
196 |
-
case 'sq_fixautoseo':
|
197 |
-
if (!current_user_can('manage_options')) {
|
198 |
-
return;
|
199 |
-
}
|
200 |
-
|
201 |
-
SQ_Tools::saveOptions('sq_use', 1);
|
202 |
-
SQ_Action::apiCall('sq/user/settings', array('settings' => json_encode(SQ_Tools::getBriefOptions())), 10);
|
203 |
-
|
204 |
-
break;
|
205 |
-
case 'sq_fixprivate':
|
206 |
-
if (!current_user_can('manage_options')) {
|
207 |
-
return;
|
208 |
-
}
|
209 |
-
|
210 |
-
update_option('blog_public', 1);
|
211 |
-
SQ_Action::apiCall('sq/user/settings', array('settings' => json_encode(SQ_Tools::getBriefOptions())), 10);
|
212 |
-
|
213 |
-
break;
|
214 |
-
case 'sq_fixcomments':
|
215 |
-
if (!current_user_can('manage_options')) {
|
216 |
-
return;
|
217 |
-
}
|
218 |
-
|
219 |
-
update_option('comments_notify', 1);
|
220 |
-
SQ_Action::apiCall('sq/user/settings', array('settings' => json_encode(SQ_Tools::getBriefOptions())), 10);
|
221 |
-
|
222 |
-
break;
|
223 |
-
case 'sq_fixpermalink':
|
224 |
-
if (!current_user_can('manage_options')) {
|
225 |
-
return;
|
226 |
-
}
|
227 |
-
|
228 |
-
$GLOBALS['wp_rewrite'] = new WP_Rewrite();
|
229 |
-
global $wp_rewrite;
|
230 |
-
$permalink_structure = ((get_option('permalink_structure') <> '') ? get_option('permalink_structure') : '/') . "%postname%/";
|
231 |
-
$wp_rewrite->set_permalink_structure($permalink_structure);
|
232 |
-
$permalink_structure = get_option('permalink_structure');
|
233 |
-
|
234 |
-
flush_rewrite_rules();
|
235 |
-
break;
|
236 |
-
case 'sq_fix_ogduplicate':
|
237 |
-
if (!current_user_can('manage_options')) {
|
238 |
-
return;
|
239 |
-
}
|
240 |
-
|
241 |
-
SQ_Tools::saveOptions('sq_auto_facebook', 0);
|
242 |
-
SQ_Action::apiCall('sq/user/settings', array('settings' => json_encode(SQ_Tools::getBriefOptions())), 10);
|
243 |
-
|
244 |
-
break;
|
245 |
-
case 'sq_fix_tcduplicate':
|
246 |
-
if (!current_user_can('manage_options')) {
|
247 |
-
return;
|
248 |
-
}
|
249 |
-
|
250 |
-
SQ_Tools::saveOptions('sq_auto_twitter', 0);
|
251 |
-
SQ_Action::apiCall('sq/user/settings', array('settings' => json_encode(SQ_Tools::getBriefOptions())), 10);
|
252 |
-
|
253 |
-
break;
|
254 |
-
case 'sq_fix_titleduplicate':
|
255 |
-
if (!current_user_can('manage_options')) {
|
256 |
-
return;
|
257 |
-
}
|
258 |
-
|
259 |
-
SQ_Tools::saveOptions('sq_auto_title', 0);
|
260 |
-
SQ_Tools::saveOptions('sq_auto_seo', 1);
|
261 |
-
SQ_Action::apiCall('sq/user/settings', array('settings' => json_encode(SQ_Tools::getBriefOptions())), 10);
|
262 |
-
|
263 |
-
break;
|
264 |
-
case 'sq_fix_descduplicate':
|
265 |
-
if (!current_user_can('manage_options')) {
|
266 |
-
return;
|
267 |
-
}
|
268 |
-
|
269 |
-
SQ_Tools::saveOptions('sq_auto_description', 0);
|
270 |
-
SQ_Tools::saveOptions('sq_auto_seo', 1);
|
271 |
-
SQ_Action::apiCall('sq/user/settings', array('settings' => json_encode(SQ_Tools::getBriefOptions())), 10);
|
272 |
-
|
273 |
-
break;
|
274 |
-
case 'sq_active_help' :
|
275 |
-
if (!current_user_can('manage_options')) {
|
276 |
-
return;
|
277 |
-
}
|
278 |
-
|
279 |
-
SQ_Tools::saveOptions('active_help', SQ_Tools::getValue('active_help'));
|
280 |
-
break;
|
281 |
-
case 'sq_warnings_off':
|
282 |
-
if (!current_user_can('manage_options')) {
|
283 |
-
return;
|
284 |
-
}
|
285 |
-
|
286 |
-
SQ_Tools::saveOptions('ignore_warn', 1);
|
287 |
-
break;
|
288 |
-
case 'sq_get_snippet':
|
289 |
-
|
290 |
-
if (SQ_Tools::getValue('url') <> '') {
|
291 |
-
$url = SQ_Tools::getValue('url');
|
292 |
-
} else {
|
293 |
-
$url = get_bloginfo('url');
|
294 |
-
}
|
295 |
-
$snippet = SQ_Tools::getSnippet($url);
|
296 |
-
|
297 |
-
SQ_Tools::setHeader('json');
|
298 |
-
echo json_encode($snippet);
|
299 |
-
exit();
|
300 |
-
case 'sq_backup':
|
301 |
-
if (!current_user_can('manage_options')) {
|
302 |
-
return;
|
303 |
-
}
|
304 |
-
|
305 |
-
SQ_Tools::setHeader('text');
|
306 |
-
header("Content-Disposition: attachment; filename=squirrly.txt");
|
307 |
-
|
308 |
-
if (function_exists('base64_encode')) {
|
309 |
-
echo base64_encode(json_encode(SQ_Tools::$options));
|
310 |
-
} else {
|
311 |
-
echo json_encode(SQ_Tools::$options);
|
312 |
-
}
|
313 |
-
exit();
|
314 |
-
break;
|
315 |
-
case 'sq_restore':
|
316 |
-
if (!current_user_can('manage_options')) {
|
317 |
-
return;
|
318 |
-
}
|
319 |
-
|
320 |
-
if (!empty($_FILES['sq_options']) && $_FILES['sq_options']['tmp_name'] <> '') {
|
321 |
-
$options = file_get_contents($_FILES['sq_options']['tmp_name']);
|
322 |
-
try {
|
323 |
-
if (function_exists('base64_encode') && base64_decode($options) <> '') {
|
324 |
-
$options = base64_decode($options);
|
325 |
-
}
|
326 |
-
$options = json_decode($options, true);
|
327 |
-
if (is_array($options) && isset($options['sq_api'])) {
|
328 |
-
if (SQ_Tools::$options['sq_api'] <> '') {
|
329 |
-
$options['sq_api'] = SQ_Tools::$options['sq_api'];
|
330 |
-
}
|
331 |
-
SQ_Tools::$options = $options;
|
332 |
-
SQ_Tools::saveOptions();
|
333 |
-
SQ_Error::setError(__('Great! The backup is restored.', _SQ_PLUGIN_NAME_) . " <br /> ", 'success');
|
334 |
-
} else {
|
335 |
-
SQ_Error::setError(__('Error! The backup is not valid.', _SQ_PLUGIN_NAME_) . " <br /> ");
|
336 |
-
}
|
337 |
-
} catch (Exception $e) {
|
338 |
-
SQ_Error::setError(__('Error! The backup is not valid.', _SQ_PLUGIN_NAME_) . " <br /> ");
|
339 |
-
}
|
340 |
-
} else {
|
341 |
-
SQ_Error::setError(__('Error! You have to enter a previous saved backup file.', _SQ_PLUGIN_NAME_) . " <br /> ");
|
342 |
-
}
|
343 |
-
break;
|
344 |
-
}
|
345 |
-
}
|
346 |
-
|
347 |
-
/**
|
348 |
-
* Add the favicon in the rewrite rule
|
349 |
-
* @param type $wp_rewrite
|
350 |
-
*/
|
351 |
-
public function rewrite_rules($wp_rewrite) {
|
352 |
-
$rules = array();
|
353 |
-
if (SQ_Tools::$options['sq_use'] == 1) {
|
354 |
-
|
355 |
-
//For Favicon
|
356 |
-
if (SQ_Tools::$options['sq_auto_favicon'] == 1) {
|
357 |
-
$rules['favicon\.ico$'] = 'index.php?sq_get=favicon';
|
358 |
-
$rules['favicon\.icon$'] = 'index.php?sq_get=favicon';
|
359 |
-
$rules['touch-icon\.png$'] = 'index.php?sq_get=touchicon';
|
360 |
-
foreach ($this->model->appleSizes as $size) {
|
361 |
-
$size = (int)$size;
|
362 |
-
$rules['touch-icon' . $size . '\.png$'] = 'index.php?sq_get=touchicon&sq_size=' . $size;
|
363 |
-
}
|
364 |
-
}
|
365 |
-
|
366 |
-
//For Sitemap
|
367 |
-
if (SQ_Tools::$options['sq_auto_sitemap'] == 1) {
|
368 |
-
foreach (SQ_Tools::$options['sq_sitemap'] as $name => $sitemap) {
|
369 |
-
if ($sitemap[1] == 1 || $sitemap[1] == 2) { // is show sitemap
|
370 |
-
$rules[preg_quote($sitemap[0])] = 'index.php?sq_feed=' . $name;
|
371 |
-
}
|
372 |
-
}
|
373 |
-
}
|
374 |
-
|
375 |
-
if (SQ_Tools::$options['sq_auto_feed'] == 1) {
|
376 |
-
$rules['sqfeedcss$'] = 'index.php?sq_get=feedcss';
|
377 |
-
}
|
378 |
-
}
|
379 |
-
return array_merge($rules, $wp_rewrite);
|
380 |
-
}
|
381 |
-
|
382 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
core/SQ_Blockresearch/SQ_Blockresearch.php
DELETED
@@ -1,17 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/**
|
4 |
-
* Core class for SQ_Blocksearch
|
5 |
-
*/
|
6 |
-
class SQ_Blockresearch extends SQ_BlockController {
|
7 |
-
|
8 |
-
public function hookHead() {
|
9 |
-
parent::hookHead();
|
10 |
-
|
11 |
-
|
12 |
-
echo '<script type="text/javascript">
|
13 |
-
var __infotext = ["' . __('Recent discussions:', _SQ_PLUGIN_NAME_) . '", "' . __('Exact search:', _SQ_PLUGIN_NAME_) . '", "' . __('Competition:', _SQ_PLUGIN_NAME_) . '", "' . __('Trend:', _SQ_PLUGIN_NAME_) . '"];
|
14 |
-
</script>';
|
15 |
-
}
|
16 |
-
|
17 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
core/SQ_Blocksearch/SQ_Blocksearch.php
DELETED
@@ -1,41 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/**
|
4 |
-
* Core class for SQ_Blocksearch
|
5 |
-
*/
|
6 |
-
class SQ_Blocksearch extends SQ_BlockController {
|
7 |
-
|
8 |
-
public function action() {
|
9 |
-
$start = 0;
|
10 |
-
$nbr = 8;
|
11 |
-
$exclude = array();
|
12 |
-
|
13 |
-
parent::action();
|
14 |
-
switch (SQ_Tools::getValue('action')) {
|
15 |
-
case 'sq_type_click':
|
16 |
-
SQ_Tools::saveOptions('sq_img_licence', SQ_Tools::getValue('licence'));
|
17 |
-
exit();
|
18 |
-
break;
|
19 |
-
case 'sq_search_blog':
|
20 |
-
if (SQ_Tools::getValue('exclude') && SQ_Tools::getValue('exclude') <> 'undefined')
|
21 |
-
$exclude = array((int) SQ_Tools::getValue('exclude'));
|
22 |
-
|
23 |
-
if (SQ_Tools::getValue('start'))
|
24 |
-
$start = array((int) SQ_Tools::getValue('start'));
|
25 |
-
|
26 |
-
if (SQ_Tools::getValue('nrb'))
|
27 |
-
$nrb = (int) SQ_Tools::getValue('nrb');
|
28 |
-
|
29 |
-
if (SQ_Tools::getValue('q') <> '')
|
30 |
-
echo SQ_ObjController::getController('SQ_Post')->model->searchPost(SQ_Tools::getValue('q'), $exclude, (int) $start, (int) $nrb);
|
31 |
-
break;
|
32 |
-
}
|
33 |
-
|
34 |
-
exit();
|
35 |
-
}
|
36 |
-
|
37 |
-
public function hookHead() {
|
38 |
-
parent::hookHead();
|
39 |
-
}
|
40 |
-
|
41 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
core/SQ_Blockseo/SQ_Blockseo.php
DELETED
@@ -1,40 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class SQ_Blockseo extends SQ_BlockController {
|
4 |
-
|
5 |
-
public function action() {
|
6 |
-
|
7 |
-
}
|
8 |
-
|
9 |
-
public function hookHead() {
|
10 |
-
parent::hookHead();
|
11 |
-
$metas = array();
|
12 |
-
$metas = $this->model->getAdvSeo();
|
13 |
-
|
14 |
-
echo '<script type="text/javascript">
|
15 |
-
var __snippetsavechanges = "' . __('Save changes', _SQ_PLUGIN_NAME_) . '";
|
16 |
-
var __snippetsavecancel = "' . __('Cancel', _SQ_PLUGIN_NAME_) . '";
|
17 |
-
var __snippetreset = "' . __('Reset', _SQ_PLUGIN_NAME_) . '";
|
18 |
-
|
19 |
-
var __snippetcustomize = "' . __('Edit Meta / Open Graph', _SQ_PLUGIN_NAME_) . '";
|
20 |
-
var __snippetkeyword = "' . __('manage keywords', _SQ_PLUGIN_NAME_) . '";
|
21 |
-
var __snippetshort = "' . __('Too short', _SQ_PLUGIN_NAME_) . '";
|
22 |
-
var __snippetlong = "' . __('Too long', _SQ_PLUGIN_NAME_) . '";
|
23 |
-
|
24 |
-
var __snippetname = "' . __('Squirrly Snippet', _SQ_PLUGIN_NAME_) . '";
|
25 |
-
var __snippetrefresh = "' . __('Update', _SQ_PLUGIN_NAME_) . '";
|
26 |
-
var __sq_snippet = "' . __('snippet', _SQ_PLUGIN_NAME_) . '";
|
27 |
-
|
28 |
-
var __snippetclickrefresh = "' . __('Click the Update button (to the right) to see the snippet from your website.', _SQ_PLUGIN_NAME_) . '";
|
29 |
-
var __snippetentertitle = "' . __('Enter a title above for the snippet to get data.', _SQ_PLUGIN_NAME_) . '";' . "\n";
|
30 |
-
|
31 |
-
if (is_array($metas)) {
|
32 |
-
foreach ($metas as $key => $meta) {
|
33 |
-
echo 'var _' . $key . ' = "' . str_replace('"', '\"', $meta) . '";' . "\n";
|
34 |
-
}
|
35 |
-
}
|
36 |
-
|
37 |
-
echo '</script>';
|
38 |
-
}
|
39 |
-
|
40 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
core/SQ_Loading/SQ_Loading.php
DELETED
@@ -1,74 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class SQ_Loading extends SQ_BlockController {
|
4 |
-
|
5 |
-
public function hookHead() {
|
6 |
-
parent::hookHead();
|
7 |
-
$this->loadJsVars();
|
8 |
-
}
|
9 |
-
|
10 |
-
public function loadJsVars(){
|
11 |
-
global $sq_postID;
|
12 |
-
|
13 |
-
/* Check the squirrly.js file if exists */
|
14 |
-
$browser = SQ_Tools::getBrowserInfo();
|
15 |
-
$keyword = '';
|
16 |
-
|
17 |
-
if ((isset($browser) && $browser != false && is_array($browser) && $browser['name'] == 'IE' && (int) $browser['version'] < 9 && (int) $browser['version'] > 0)) {
|
18 |
-
echo '<script type="text/javascript">
|
19 |
-
jQuery("#sq_preloading").removeClass("sq_loading");
|
20 |
-
jQuery("#sq_preloading").addClass("sq_error")
|
21 |
-
jQuery("#sq_preloading").html("' . __('For Squirrly to work properly you have to use a higher version of Internet Explorer. <br /> We recommend you to use Chrome or Mozilla.', _SQ_PLUGIN_NAME_) . '");
|
22 |
-
jQuery("#sq_options").hide();
|
23 |
-
jQuery("#sq_blocklogin").hide();
|
24 |
-
</script>';
|
25 |
-
} else {
|
26 |
-
if (isset($sq_postID)) {
|
27 |
-
$keyword = SQ_ObjController::getModel('SQ_Post')->getKeywordsFromPost($sq_postID);
|
28 |
-
}
|
29 |
-
echo '<script type="text/javascript">
|
30 |
-
var sq_use = "' . SQ_Tools::$options['sq_use'] . '";
|
31 |
-
var sq_baseurl = "' . _SQ_STATIC_API_URL_ . '";
|
32 |
-
var sq_uri = "' . SQ_URI . '"; var sq_language = "' . get_bloginfo('language') . '";
|
33 |
-
var sq_version = "' . SQ_VERSION_ID . '"; var sq_wpversion = "' . WP_VERSION_ID . '"; var sq_phpversion = "' . PHP_VERSION_ID . '"; var sq_seoversion = "' . (SQ_Tools::$options['sq_sla'] + 1) . '";
|
34 |
-
var __postID = "' . $sq_postID . '";
|
35 |
-
var __prevNonce = "' . wp_create_nonce('post_preview_' . $sq_postID) . '";
|
36 |
-
var __token = "' . SQ_Tools::$options['sq_api'] . '";
|
37 |
-
var sq_keyword_information = "' . ((isset(SQ_Tools::$options['sq_keyword_information'])) ? SQ_Tools::$options['sq_keyword_information'] : '0') . '";
|
38 |
-
var __noopt = "' . __('You haven`t used Squirrly SEO to optimize your article. Do you want to optimize for a keyword before publishing?', _SQ_PLUGIN_NAME_) . '";
|
39 |
-
var sq_keywordtag = "' . SQ_Tools::$options['sq_keywordtag'] . '";
|
40 |
-
var sq_frontend_css = "' . _SQ_THEME_URL_ . 'css/sq_frontend.css";
|
41 |
-
var __date = "' . __('date', _SQ_PLUGIN_NAME_) . '";
|
42 |
-
var __readit = "' . __('Read it!', _SQ_PLUGIN_NAME_) . '";
|
43 |
-
var __insertit = "' . __('Insert it!', _SQ_PLUGIN_NAME_) . '";
|
44 |
-
var __reference = "' . __('Reference', _SQ_PLUGIN_NAME_) . '";
|
45 |
-
var __insertasbox = "' . __('Insert as box', _SQ_PLUGIN_NAME_) . '";
|
46 |
-
var __notrelevant = "' . __('Not relevant?', _SQ_PLUGIN_NAME_) . '";
|
47 |
-
var __insertparagraph = "' . __('Insert in your article', _SQ_PLUGIN_NAME_) . '";
|
48 |
-
var __tinymceerror = "' . __('For Squirrly to work, you have to have tinymce editor installed!', _SQ_PLUGIN_NAME_) . '";
|
49 |
-
var __ajaxerror = "' . __(':( I lost my squirrel. Please reload the page.', _SQ_PLUGIN_NAME_) . '";
|
50 |
-
var __nofound = "' . __('No results found!', _SQ_PLUGIN_NAME_) . '";
|
51 |
-
var __tinymceinactive = "' . __('Switch to Visual editor!', _SQ_PLUGIN_NAME_) . '";
|
52 |
-
var __morewords = "' . __('Enter one more word to find relevant results', _SQ_PLUGIN_NAME_) . '";
|
53 |
-
var __toolong = "' . __('Takes too long to check this keyword ...', _SQ_PLUGIN_NAME_) . '";
|
54 |
-
var __doresearch = "' . __('Do a research!', _SQ_PLUGIN_NAME_) . '";
|
55 |
-
var __morekeywords = "' . __('Do more research!', _SQ_PLUGIN_NAME_) . '";
|
56 |
-
var __sq_photo_copyright = "' . __('[ ATTRIBUTE: Please check: %s to find out how to attribute this image ]', _SQ_PLUGIN_NAME_) . '";
|
57 |
-
var __has_attributes = "' . __('Has creative commons attributes', _SQ_PLUGIN_NAME_) . '";
|
58 |
-
var __no_attributes = "' . __('No known copyright restrictions', _SQ_PLUGIN_NAME_) . '";
|
59 |
-
|
60 |
-
' . (($keyword <> '') ? 'var sq_keyword_from_post = "' . $keyword . '";' : '') . '
|
61 |
-
if (typeof sq_script === "undefined"){
|
62 |
-
var sq_script = document.createElement(\'script\');
|
63 |
-
sq_script.src = "' . _SQ_STATIC_API_URL_ . SQ_URI . '/js/squirrly.js?ver=' . SQ_VERSION_ID . '2";
|
64 |
-
var site_head = document.getElementsByTagName ("head")[0] || document.documentElement;
|
65 |
-
site_head.insertBefore(sq_script, site_head.firstChild);
|
66 |
-
}
|
67 |
-
jQuery(document).ready(function() {
|
68 |
-
jQuery("#sq_preloading").html("");
|
69 |
-
});
|
70 |
-
</script>';
|
71 |
-
}
|
72 |
-
}
|
73 |
-
|
74 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
core/config.xml
CHANGED
@@ -1,18 +1,26 @@
|
|
1 |
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
<blocks>
|
3 |
<block>
|
4 |
-
<name>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
<description>Post Page</description>
|
6 |
<actions>
|
7 |
-
<action>sq_save_meta</action>
|
8 |
<action>sq_save_ogimage</action>
|
9 |
<action>sq_get_keyword</action>
|
10 |
</actions>
|
11 |
<active>1</active>
|
12 |
-
<
|
13 |
</block>
|
14 |
<block>
|
15 |
-
<name>
|
16 |
<description>Posts List Page</description>
|
17 |
<actions>
|
18 |
<action>sq_posts_rank</action>
|
@@ -20,16 +28,18 @@
|
|
20 |
<action>sq_recheck</action>
|
21 |
</actions>
|
22 |
<active>1</active>
|
23 |
-
<
|
24 |
</block>
|
25 |
<block>
|
26 |
-
<name>
|
27 |
<description>SEO Setting page</description>
|
28 |
<actions>
|
29 |
<action>sq_settingsseo_update</action>
|
|
|
30 |
<action>sq_get_snippet</action>
|
31 |
<action>sq_checkissues</action>
|
32 |
|
|
|
33 |
<action>sq_active_help</action>
|
34 |
<action>sq_fixautoseo</action>
|
35 |
<action>sq_fixpermalink</action>
|
@@ -40,39 +50,62 @@
|
|
40 |
<action>sq_fix_titleduplicate</action>
|
41 |
<action>sq_fix_descduplicate</action>
|
42 |
<action>sq_backup</action>
|
|
|
43 |
<action>sq_restore</action>
|
|
|
|
|
|
|
44 |
<action>sq_warnings_off</action>
|
|
|
45 |
</actions>
|
46 |
<active>1</active>
|
47 |
-
<
|
48 |
</block>
|
49 |
<block>
|
50 |
-
<name>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
<description>Setting page</description>
|
52 |
<actions>
|
53 |
<action>sq_settings_update</action>
|
54 |
</actions>
|
55 |
<active>1</active>
|
56 |
-
<
|
57 |
</block>
|
58 |
<block>
|
59 |
-
<name>
|
60 |
<description>The support</description>
|
61 |
<controllers>
|
62 |
-
<controller>
|
63 |
</controllers>
|
64 |
<actions>
|
65 |
<action>sq_feedback</action>
|
66 |
<action>sq_support</action>
|
67 |
</actions>
|
68 |
<active>1</active>
|
69 |
-
<
|
70 |
</block>
|
71 |
<block>
|
72 |
-
<name>
|
73 |
<description>Connect to Squirrly</description>
|
74 |
<controllers>
|
75 |
-
<controller>
|
76 |
</controllers>
|
77 |
<actions>
|
78 |
<action>sq_login</action>
|
@@ -80,58 +113,66 @@
|
|
80 |
<action>sq_reset</action>
|
81 |
</actions>
|
82 |
<active>1</active>
|
83 |
-
<
|
84 |
</block>
|
85 |
<block>
|
86 |
-
<name>
|
87 |
<description>Inspiration box</description>
|
88 |
<controllers>
|
89 |
-
<controller>
|
90 |
</controllers>
|
91 |
<actions>
|
92 |
<action>sq_search_blog</action>
|
93 |
<action>sq_type_click</action>
|
94 |
</actions>
|
95 |
<active>1</active>
|
96 |
-
<
|
97 |
</block>
|
98 |
-
|
99 |
<block>
|
100 |
-
<name>
|
101 |
<description>SEO Live assistant</description>
|
102 |
<controllers>
|
103 |
-
<controller>
|
104 |
</controllers>
|
105 |
<active>1</active>
|
106 |
-
<
|
107 |
</block>
|
108 |
-
|
109 |
<block>
|
110 |
-
<name>
|
111 |
<description>Research block</description>
|
112 |
<controllers>
|
113 |
-
<controller>
|
114 |
</controllers>
|
115 |
<active>1</active>
|
116 |
-
<
|
117 |
</block>
|
118 |
-
|
119 |
<block>
|
120 |
-
<name>
|
121 |
<description>Affiliate Page</description>
|
122 |
<actions>
|
123 |
<action>sq_settings_affiliate</action>
|
124 |
</actions>
|
125 |
<active>1</active>
|
126 |
-
<
|
127 |
</block>
|
128 |
<block>
|
129 |
-
<name>
|
130 |
<description>Loading JS</description>
|
131 |
<controllers>
|
132 |
-
<controller>
|
133 |
</controllers>
|
134 |
<active>1</active>
|
135 |
-
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
136 |
</block>
|
137 |
</blocks>
|
1 |
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
<blocks>
|
3 |
<block>
|
4 |
+
<name>SQ_Controllers_Menu</name>
|
5 |
+
<description>Loading the Menu in Admin and Frontend</description>
|
6 |
+
<actions>
|
7 |
+
<action>sq_getfrontmenu</action>
|
8 |
+
</actions>
|
9 |
+
<active>1</active>
|
10 |
+
<admin>1</admin>
|
11 |
+
</block>
|
12 |
+
<block>
|
13 |
+
<name>SQ_Controllers_Post</name>
|
14 |
<description>Post Page</description>
|
15 |
<actions>
|
|
|
16 |
<action>sq_save_ogimage</action>
|
17 |
<action>sq_get_keyword</action>
|
18 |
</actions>
|
19 |
<active>1</active>
|
20 |
+
<admin>1</admin>
|
21 |
</block>
|
22 |
<block>
|
23 |
+
<name>SQ_Controllers_PostsList</name>
|
24 |
<description>Posts List Page</description>
|
25 |
<actions>
|
26 |
<action>sq_posts_rank</action>
|
28 |
<action>sq_recheck</action>
|
29 |
</actions>
|
30 |
<active>1</active>
|
31 |
+
<admin>1</admin>
|
32 |
</block>
|
33 |
<block>
|
34 |
+
<name>SQ_Core_BlockSettingsSeo</name>
|
35 |
<description>SEO Setting page</description>
|
36 |
<actions>
|
37 |
<action>sq_settingsseo_update</action>
|
38 |
+
<action>sq_settingsseo_option</action>
|
39 |
<action>sq_get_snippet</action>
|
40 |
<action>sq_checkissues</action>
|
41 |
|
42 |
+
<action>sq_setstickysla</action>
|
43 |
<action>sq_active_help</action>
|
44 |
<action>sq_fixautoseo</action>
|
45 |
<action>sq_fixpermalink</action>
|
50 |
<action>sq_fix_titleduplicate</action>
|
51 |
<action>sq_fix_descduplicate</action>
|
52 |
<action>sq_backup</action>
|
53 |
+
<action>sq_backup_sql</action>
|
54 |
<action>sq_restore</action>
|
55 |
+
<action>sq_restore_sql</action>
|
56 |
+
<action>sq_dataupgrade</action>
|
57 |
+
<action>sq_resetsettings</action>
|
58 |
<action>sq_warnings_off</action>
|
59 |
+
<action>sq_copyright_agreement</action>
|
60 |
</actions>
|
61 |
<active>1</active>
|
62 |
+
<admin>1</admin>
|
63 |
</block>
|
64 |
<block>
|
65 |
+
<name>SQ_Controllers_FrontMenu</name>
|
66 |
+
<description>Front Menu page</description>
|
67 |
+
<actions>
|
68 |
+
<action>sq_saveseo</action>
|
69 |
+
</actions>
|
70 |
+
<active>1</active>
|
71 |
+
<admin>1</admin>
|
72 |
+
</block>
|
73 |
+
<block>
|
74 |
+
<name>SQ_Core_BlockPatterns</name>
|
75 |
+
<description>Setting page</description>
|
76 |
+
<actions>
|
77 |
+
<action>sq_savepatters</action>
|
78 |
+
</actions>
|
79 |
+
<active>1</active>
|
80 |
+
<admin>1</admin>
|
81 |
+
</block>
|
82 |
+
<block>
|
83 |
+
<name>SQ_Core_BlockSettings</name>
|
84 |
<description>Setting page</description>
|
85 |
<actions>
|
86 |
<action>sq_settings_update</action>
|
87 |
</actions>
|
88 |
<active>1</active>
|
89 |
+
<admin>1</admin>
|
90 |
</block>
|
91 |
<block>
|
92 |
+
<name>SQ_Core_BlockSupport</name>
|
93 |
<description>The support</description>
|
94 |
<controllers>
|
95 |
+
<controller>SQ_Controllers_Post</controller>
|
96 |
</controllers>
|
97 |
<actions>
|
98 |
<action>sq_feedback</action>
|
99 |
<action>sq_support</action>
|
100 |
</actions>
|
101 |
<active>1</active>
|
102 |
+
<admin>1</admin>
|
103 |
</block>
|
104 |
<block>
|
105 |
+
<name>SQ_Core_Blocklogin</name>
|
106 |
<description>Connect to Squirrly</description>
|
107 |
<controllers>
|
108 |
+
<controller>SQ_Controllers_Post</controller>
|
109 |
</controllers>
|
110 |
<actions>
|
111 |
<action>sq_login</action>
|
113 |
<action>sq_reset</action>
|
114 |
</actions>
|
115 |
<active>1</active>
|
116 |
+
<admin>1</admin>
|
117 |
</block>
|
118 |
<block>
|
119 |
+
<name>SQ_Core_Blocksearch</name>
|
120 |
<description>Inspiration box</description>
|
121 |
<controllers>
|
122 |
+
<controller>SQ_Controllers_Post</controller>
|
123 |
</controllers>
|
124 |
<actions>
|
125 |
<action>sq_search_blog</action>
|
126 |
<action>sq_type_click</action>
|
127 |
</actions>
|
128 |
<active>1</active>
|
129 |
+
<admin>1</admin>
|
130 |
</block>
|
|
|
131 |
<block>
|
132 |
+
<name>SQ_Core_Blockseo</name>
|
133 |
<description>SEO Live assistant</description>
|
134 |
<controllers>
|
135 |
+
<controller>SQ_Controllers_Post</controller>
|
136 |
</controllers>
|
137 |
<active>1</active>
|
138 |
+
<admin>1</admin>
|
139 |
</block>
|
|
|
140 |
<block>
|
141 |
+
<name>SQ_Core_Blockresearch</name>
|
142 |
<description>Research block</description>
|
143 |
<controllers>
|
144 |
+
<controller>SQ_Controllers_Post</controller>
|
145 |
</controllers>
|
146 |
<active>1</active>
|
147 |
+
<admin>1</admin>
|
148 |
</block>
|
|
|
149 |
<block>
|
150 |
+
<name>SQ_Core_BlockAffiliate</name>
|
151 |
<description>Affiliate Page</description>
|
152 |
<actions>
|
153 |
<action>sq_settings_affiliate</action>
|
154 |
</actions>
|
155 |
<active>1</active>
|
156 |
+
<admin>1</admin>
|
157 |
</block>
|
158 |
<block>
|
159 |
+
<name>SQ_Core_Loading</name>
|
160 |
<description>Loading JS</description>
|
161 |
<controllers>
|
162 |
+
<controller>SQ_Controllers_Post</controller>
|
163 |
</controllers>
|
164 |
<active>1</active>
|
165 |
+
<admin>1</admin>
|
166 |
+
</block>
|
167 |
+
|
168 |
+
<block>
|
169 |
+
<name>SQ_Core_BlockImport</name>
|
170 |
+
<description>Import from other plugins</description>
|
171 |
+
<actions>
|
172 |
+
<action>sq_importseo</action>
|
173 |
+
<action>sq_importsettings</action>
|
174 |
+
</actions>
|
175 |
+
<active>1</active>
|
176 |
+
<admin>1</admin>
|
177 |
</block>
|
178 |
</blocks>
|
languages/squirrly-seo-de_DE.mo
CHANGED
Binary file
|
languages/squirrly-seo-de_DE.po
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
msgid ""
|
2 |
msgstr ""
|
3 |
-
"Project-Id-Version: Squirrly SEO Plugin
|
4 |
"Report-Msgid-Bugs-To: \n"
|
5 |
-
"POT-Creation-Date:
|
6 |
-
"PO-Revision-Date:
|
7 |
"Last-Translator: Squirrly <contact@squirrly.co>\n"
|
8 |
"Language-Team: \n"
|
9 |
"Language: de_DE\n"
|
@@ -11,16 +11,16 @@ msgstr ""
|
|
11 |
"Content-Type: text/plain; charset=UTF-8\n"
|
12 |
"Content-Transfer-Encoding: 8bit\n"
|
13 |
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
14 |
-
"X-Poedit-SourceCharset:
|
15 |
"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
|
16 |
"_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n"
|
17 |
"X-Poedit-Basepath: ..\n"
|
18 |
"X-Textdomain-Support: yes\n"
|
19 |
-
"X-Generator: Poedit 1.8.
|
20 |
"X-Poedit-SearchPath-0: .\n"
|
21 |
|
22 |
# @ squirrly-seo
|
23 |
-
#: classes/
|
24 |
msgid ""
|
25 |
"Function get_class does not exists! Is required for Squirrly to work "
|
26 |
"properly."
|
@@ -29,7 +29,7 @@ msgstr ""
|
|
29 |
"richtig zu arbeiten."
|
30 |
|
31 |
# @ squirrly-seo
|
32 |
-
#: classes/
|
33 |
msgid ""
|
34 |
"Function file_exists does not exists! Is required for Squirrly to work "
|
35 |
"properly."
|
@@ -38,250 +38,499 @@ msgstr ""
|
|
38 |
"richtig zu arbeiten."
|
39 |
|
40 |
# @ squirrly-seo
|
41 |
-
#: classes/
|
42 |
msgid "The home directory is not set!"
|
43 |
msgstr "Das Home-Verzeichnis wurde nicht gesetzt!"
|
44 |
|
45 |
# @ squirrly-seo
|
46 |
-
#: classes/
|
47 |
msgid "The PHP version has to be greater then 4.0"
|
48 |
msgstr "Die PHP-Version muß größer als 4.0 sein"
|
49 |
|
50 |
# @ squirrly-seo
|
51 |
-
#: classes/
|
52 |
msgid "Turn off warnings!"
|
53 |
msgstr "Warnungen ausschalten!"
|
54 |
|
55 |
-
#: classes/
|
56 |
msgid "Don't bother me!"
|
57 |
msgstr ""
|
58 |
|
59 |
-
#: classes/
|
60 |
msgid "Getting started"
|
61 |
msgstr ""
|
62 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
63 |
# @ squirrly-seo
|
64 |
-
#: classes/
|
65 |
msgid "Fix it for me!"
|
66 |
msgstr "Beheben Sie es für mich!"
|
67 |
|
68 |
-
#: classes/
|
69 |
msgid "Activate the Squirrly SEO for your blog (recommended)"
|
70 |
msgstr ""
|
71 |
|
72 |
-
#: classes/
|
73 |
msgid ""
|
74 |
"You have META Title Duplicates. Disable the Squirrly Title Optimization or "
|
75 |
"disable the other SEO Plugins"
|
76 |
msgstr ""
|
77 |
|
78 |
-
#: classes/
|
79 |
msgid ""
|
80 |
"You have META Description Duplicates. Disable the Squirrly Description "
|
81 |
"Optimization or disable the other SEO Plugins"
|
82 |
msgstr ""
|
83 |
|
84 |
-
#: classes/
|
85 |
msgid ""
|
86 |
"You have Open Graph META Duplicates. Disable the Squirrly SEO Open Graph or "
|
87 |
"disable the other SEO Plugins"
|
88 |
msgstr ""
|
89 |
|
90 |
-
#: classes/
|
91 |
msgid ""
|
92 |
"You have Twitter Card META Duplicates. Disable the Squirrly SEO Twitter Card "
|
93 |
"or disable the other SEO Plugins"
|
94 |
msgstr ""
|
95 |
|
96 |
# @ squirrly-seo
|
97 |
-
#: classes/
|
98 |
msgid "You're blocking google from indexing your site!"
|
99 |
msgstr "Sie blockieren Google zum Indizieren Ihrer Website!"
|
100 |
|
101 |
-
#: classes/
|
102 |
msgid ""
|
103 |
"It is highly recommended that you include the %postname% variable in the "
|
104 |
"permalink structure. <br />Go to Settings > Permalinks and add /%postname%/ "
|
105 |
"in Custom Structure"
|
106 |
msgstr ""
|
107 |
|
108 |
-
#: classes/
|
|
|
|
|
|
|
|
|
|
|
|
|
109 |
msgid "Great! We didn't find any issue in your site."
|
110 |
msgstr ""
|
111 |
|
112 |
-
#:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
113 |
msgid "See Your Rank on Google"
|
114 |
msgstr ""
|
115 |
|
116 |
-
#: controllers/
|
|
|
|
|
|
|
|
|
117 |
msgid ""
|
118 |
"Check out the Squirrly Analytics section. <a href=\"admin.php?page=sq_posts"
|
119 |
"\" title=\"Squirrly Analytics\">Click here</a>"
|
120 |
msgstr ""
|
121 |
|
122 |
-
#: controllers/
|
123 |
-
msgid "
|
124 |
msgstr ""
|
125 |
|
126 |
-
#: controllers/
|
127 |
msgid "First Step"
|
128 |
msgstr ""
|
129 |
|
130 |
-
#: controllers/
|
131 |
msgid "Dashboard"
|
132 |
msgstr ""
|
133 |
|
134 |
-
#: controllers/
|
135 |
-
msgid "
|
136 |
msgstr ""
|
137 |
|
138 |
-
#: controllers/
|
139 |
msgid "Performance <br />Analytics"
|
140 |
msgstr ""
|
141 |
|
142 |
-
#: controllers/
|
143 |
-
msgid "
|
144 |
msgstr ""
|
145 |
|
146 |
-
#: controllers/
|
147 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
148 |
msgstr ""
|
149 |
|
150 |
-
#: controllers/
|
151 |
-
msgid "
|
152 |
msgstr ""
|
153 |
|
154 |
-
#: controllers/
|
155 |
-
msgid "
|
156 |
msgstr ""
|
157 |
|
158 |
-
#: controllers/
|
159 |
-
msgid "
|
160 |
msgstr ""
|
161 |
|
162 |
-
#: controllers/
|
163 |
msgid "Account Info"
|
164 |
msgstr ""
|
165 |
|
166 |
-
#: controllers/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
167 |
msgid "Become an Affiliate with "
|
168 |
msgstr ""
|
169 |
|
170 |
-
#: controllers/
|
171 |
-
msgid "Affiliate
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
172 |
msgstr ""
|
173 |
|
174 |
-
#: controllers/
|
175 |
msgid "Squirrly"
|
176 |
msgstr ""
|
177 |
|
178 |
-
#: controllers/
|
179 |
msgid "Custom description: "
|
180 |
msgstr ""
|
181 |
|
182 |
-
#: controllers/
|
183 |
msgid "Custom title: "
|
184 |
msgstr ""
|
185 |
|
186 |
-
#: controllers/
|
187 |
msgid "SEO Analytics, by Squirrly"
|
188 |
msgstr ""
|
189 |
|
190 |
-
#: controllers/
|
191 |
msgid "Update"
|
192 |
msgstr ""
|
193 |
|
194 |
-
#: controllers/
|
195 |
msgid "Not Public"
|
196 |
msgstr ""
|
197 |
|
198 |
-
#: controllers/
|
199 |
msgid "Could not process"
|
200 |
msgstr ""
|
201 |
|
202 |
-
#: controllers/
|
203 |
-
|
204 |
-
msgid "
|
205 |
-
msgstr ""
|
206 |
-
|
207 |
-
#: controllers/SQ_PostsList.php:321 models/SQ_BlockPostsAnalytics.php:401
|
208 |
-
msgid "> 100"
|
209 |
msgstr ""
|
210 |
|
211 |
-
#: controllers/
|
212 |
-
msgid "URL Indexed"
|
213 |
msgstr ""
|
214 |
|
215 |
-
#: controllers/
|
|
|
216 |
#, php-format
|
217 |
msgid "%s"
|
218 |
msgstr ""
|
219 |
|
220 |
-
#: core/
|
221 |
#, php-format
|
222 |
msgid "Error: %s"
|
223 |
msgstr ""
|
224 |
|
225 |
-
#: core/
|
226 |
msgid "An error occured. Mabe a network error :("
|
227 |
msgstr ""
|
228 |
|
229 |
-
#: core/
|
230 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
231 |
msgid "Too short"
|
232 |
msgstr ""
|
233 |
|
234 |
-
#: core/
|
235 |
-
#: core/SQ_Blockseo/SQ_Blockseo.php:22
|
236 |
msgid "Too long"
|
237 |
msgstr ""
|
238 |
|
239 |
-
#: core/
|
|
|
|
|
|
|
|
|
240 |
msgid "Great! The backup is restored."
|
241 |
msgstr ""
|
242 |
|
243 |
-
#: core/
|
244 |
-
#: core/
|
245 |
msgid "Error! The backup is not valid."
|
246 |
msgstr ""
|
247 |
|
248 |
-
#: core/
|
249 |
msgid "Error! You have to enter a previous saved backup file."
|
250 |
msgstr ""
|
251 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
252 |
# @ squirrly-seo
|
253 |
-
#: core/
|
254 |
msgid "Plugin Feedback"
|
255 |
msgstr "Plugin Feedback"
|
256 |
|
257 |
# @ squirrly-seo
|
258 |
-
#: core/
|
259 |
msgid "Thank you for your feedback"
|
260 |
msgstr "Vielen Dank für Ihre Feedback"
|
261 |
|
262 |
# @ squirrly-seo
|
263 |
-
#: core/
|
264 |
-
#: core/SQ_BlockSupport/SQ_BlockSupport.php:99
|
265 |
msgid "Could not send the email..."
|
266 |
msgstr "Konnte E-Mail nicht senden ..."
|
267 |
|
268 |
# @ squirrly-seo
|
269 |
-
#: core/
|
270 |
-
#: core/SQ_BlockSupport/SQ_BlockSupport.php:103
|
271 |
msgid "No message."
|
272 |
msgstr "Keine Nachricht."
|
273 |
|
274 |
# @ squirrly-seo
|
275 |
-
#: core/
|
276 |
msgid "Plugin Support"
|
277 |
msgstr "Plugin Support"
|
278 |
|
279 |
-
#: core/
|
280 |
msgid "Message sent. Thank you!"
|
281 |
msgstr ""
|
282 |
|
283 |
# @ squirrly-seo
|
284 |
-
#: core/
|
285 |
#, php-format
|
286 |
msgid ""
|
287 |
"We found your email, so it means you already have a Squirrly.co account. "
|
@@ -292,7 +541,7 @@ msgstr ""
|
|
292 |
"Sie sich mit Ihrer Squirrly-ID ein. Falls Sie Ihr Passwort vergessen haben, "
|
293 |
"klicken Sie %shier%s"
|
294 |
|
295 |
-
#: core/
|
296 |
msgid ""
|
297 |
"Error: Couldn't connect to host :( . Please contact your site's webhost (or "
|
298 |
"webmaster) and request them to add http://api.squirrly.co/ to their IP "
|
@@ -300,7 +549,7 @@ msgid ""
|
|
300 |
msgstr ""
|
301 |
|
302 |
# @ squirrly-seo
|
303 |
-
#: core/
|
304 |
#, php-format
|
305 |
msgid ""
|
306 |
"Could not send your informations to squirrly. Please register %smanually%s."
|
@@ -309,348 +558,401 @@ msgstr ""
|
|
309 |
"%smanually%s."
|
310 |
|
311 |
# @ squirrly-seo
|
312 |
-
#: core/
|
313 |
msgid "Wrong email or password!"
|
314 |
msgstr "Benutzername oder Passwort falsch!"
|
315 |
|
316 |
# @ squirrly-seo
|
317 |
-
#: core/
|
318 |
msgid "You can use this account only for the URL you registered first!"
|
319 |
msgstr ""
|
320 |
"Dieses Konto können Sie nur für die URL benutzen, die Sie zuerst registriert "
|
321 |
"haben!"
|
322 |
|
323 |
# @ squirrly-seo
|
324 |
-
#: core/
|
325 |
msgid "An error occured."
|
326 |
msgstr "Ein Fehler ist aufgetreten."
|
327 |
|
328 |
# @ squirrly-seo
|
329 |
-
#: core/
|
330 |
msgid "Both fields are required."
|
331 |
msgstr "Beide Felder sind Pflichtfelder."
|
332 |
|
333 |
-
#: core/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
334 |
msgid "Recent discussions:"
|
335 |
msgstr "Bisherige Diskussionen:"
|
336 |
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
msgstr "Exakte Suche:"
|
341 |
|
342 |
# @ squirrly-seo
|
343 |
-
#: core/
|
344 |
msgid "Competition:"
|
345 |
msgstr "Wettbewerb:"
|
346 |
|
347 |
# @ squirrly-seo
|
348 |
-
#: core/
|
349 |
msgid "Trend:"
|
350 |
msgstr "Trend:"
|
351 |
|
352 |
# @ squirrly-seo
|
353 |
-
#: core/
|
|
|
|
|
|
|
|
|
|
|
354 |
msgid "date"
|
355 |
msgstr "Datum"
|
356 |
|
357 |
# @ squirrly-seo
|
358 |
-
#: core/
|
359 |
msgid "Read it!"
|
360 |
msgstr "Lesen!"
|
361 |
|
362 |
# @ squirrly-seo
|
363 |
-
#: core/
|
364 |
msgid "Insert it!"
|
365 |
msgstr "Einfügen!"
|
366 |
|
367 |
# @ squirrly-seo
|
368 |
-
#: core/
|
369 |
msgid "Reference"
|
370 |
msgstr "Referenz"
|
371 |
|
372 |
# @ squirrly-seo
|
373 |
-
#: core/
|
374 |
msgid "Insert as box"
|
375 |
msgstr "Als Box einfügen"
|
376 |
|
|
|
|
|
|
|
|
|
377 |
# @ squirrly-seo
|
378 |
-
#: core/
|
379 |
msgid "Not relevant?"
|
380 |
msgstr "Nicht relevant?"
|
381 |
|
382 |
# @ squirrly-seo
|
383 |
-
#: core/
|
384 |
msgid "Insert in your article"
|
385 |
msgstr "In Artikel einfügen"
|
386 |
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
msgstr "Damit Squirrly arbeitet, muss tinymce installiert sein!"
|
391 |
-
|
392 |
-
# @ squirrly-seo
|
393 |
-
#: core/SQ_Blocksearch/SQ_Blocksearch.php:50
|
394 |
-
msgid ":( I lost my squirrel. Please reload the page."
|
395 |
-
msgstr ":( Ich verlor meine Eichhörnchen. Laden Sie die Seite erneut."
|
396 |
|
397 |
# @ squirrly-seo
|
398 |
-
#: core/
|
399 |
msgid "No results found!"
|
400 |
msgstr "Keine Ergebnisse gefunden!"
|
401 |
|
402 |
-
|
403 |
-
#: core/SQ_Blocksearch/SQ_Blocksearch.php:50
|
404 |
-
msgid "Switch to Visual editor!"
|
405 |
-
msgstr "Zum Visual Editor wechseln !"
|
406 |
-
|
407 |
-
#: core/SQ_Blocksearch/SQ_Blocksearch.php:50
|
408 |
msgid "Enter one more word to find relevant results"
|
409 |
msgstr ""
|
410 |
|
411 |
# @ squirrly-seo
|
412 |
-
#: core/
|
413 |
msgid "Takes too long to check this keyword ..."
|
414 |
msgstr "Dauert zu lange, um dieses Schlüsselwort zu überprüfen ..."
|
415 |
|
416 |
# @ squirrly-seo
|
417 |
-
#: core/
|
418 |
msgid "Do a research!"
|
419 |
msgstr "Erweiterte Suche!"
|
420 |
|
421 |
# @ squirrly-seo
|
422 |
-
#: core/
|
423 |
msgid "Do more research!"
|
424 |
msgstr "Erweiterte Suche!"
|
425 |
|
426 |
-
#: core/
|
427 |
#, php-format
|
428 |
msgid "[ ATTRIBUTE: Please check: %s to find out how to attribute this image ]"
|
429 |
msgstr ""
|
430 |
|
431 |
-
#: core/
|
432 |
msgid "Has creative commons attributes"
|
433 |
msgstr ""
|
434 |
|
435 |
-
#: core/
|
436 |
msgid "No known copyright restrictions"
|
437 |
msgstr ""
|
438 |
|
439 |
-
#: core/
|
440 |
-
msgid "
|
|
|
|
|
441 |
msgstr ""
|
|
|
|
|
442 |
|
443 |
-
#: core/
|
444 |
-
msgid "
|
445 |
msgstr ""
|
446 |
|
447 |
-
#: core/
|
448 |
-
msgid "
|
449 |
msgstr ""
|
450 |
|
451 |
-
#: core/
|
452 |
-
msgid "
|
453 |
msgstr ""
|
454 |
|
455 |
-
#: core/
|
456 |
-
msgid "
|
457 |
msgstr ""
|
458 |
|
459 |
-
#: core/
|
460 |
-
|
461 |
-
msgid "
|
462 |
msgstr ""
|
463 |
|
464 |
-
#: core/
|
465 |
-
|
|
|
466 |
msgstr ""
|
467 |
|
468 |
-
#: core/
|
469 |
-
|
470 |
-
"
|
471 |
msgstr ""
|
472 |
|
473 |
-
#: core/
|
474 |
-
|
|
|
475 |
msgstr ""
|
476 |
|
477 |
-
|
478 |
-
|
479 |
-
msgid ""
|
480 |
-
"For Squirrly to work properly you have to use a higher version of Internet "
|
481 |
-
"Explorer. <br /> We recommend you to use Chrome or Mozilla."
|
482 |
msgstr ""
|
483 |
-
"Damit Squirrly ordnungsgemäß funktioniert, müssen Sie eine höhere Version "
|
484 |
-
"von Internet Explorer verwenden. <br /> Wir empfehlen, Chrome oder Mozilla."
|
485 |
|
486 |
-
#: core/
|
487 |
-
msgid ""
|
488 |
-
|
489 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
490 |
msgstr ""
|
491 |
-
"You haven`t used Squirrly SEO to optimize your article. Do you want to "
|
492 |
-
"optimize for a keyword before publishing?"
|
493 |
|
494 |
-
#:
|
|
|
|
|
|
|
|
|
|
|
495 |
msgctxt "column name"
|
496 |
msgid "Title"
|
497 |
msgstr ""
|
498 |
|
499 |
-
#: models/
|
500 |
msgid "Type"
|
501 |
msgstr ""
|
502 |
|
503 |
-
#: models/
|
504 |
msgid "Author"
|
505 |
msgstr ""
|
506 |
|
507 |
-
#: models/
|
508 |
msgid "Keywords"
|
509 |
msgstr ""
|
510 |
|
511 |
-
#: models/
|
512 |
#, php-format
|
513 |
msgid "Google.%s Position"
|
514 |
msgstr ""
|
515 |
|
516 |
-
#: models/
|
517 |
msgid "Date"
|
518 |
msgstr ""
|
519 |
|
520 |
-
#: models/
|
521 |
msgid "Reset Filters"
|
522 |
msgstr ""
|
523 |
|
524 |
-
#: models/
|
|
|
|
|
|
|
|
|
525 |
#, php-format
|
526 |
msgid "Edit “%s”"
|
527 |
msgstr ""
|
528 |
|
529 |
-
#: models/
|
530 |
msgid "Edit this item"
|
531 |
msgstr ""
|
532 |
|
533 |
-
#: models/
|
534 |
msgid "Edit"
|
535 |
msgstr ""
|
536 |
|
537 |
-
#: models/
|
538 |
#, php-format
|
539 |
msgid "Preview “%s”"
|
540 |
msgstr ""
|
541 |
|
542 |
-
#: models/
|
543 |
msgid "Preview"
|
544 |
msgstr ""
|
545 |
|
546 |
-
#: models/
|
547 |
#, php-format
|
548 |
msgid "View “%s”"
|
549 |
msgstr ""
|
550 |
|
551 |
-
#: models/
|
552 |
msgid "View"
|
553 |
msgstr ""
|
554 |
|
555 |
-
#: models/
|
556 |
msgid "No Tags"
|
557 |
msgstr ""
|
558 |
|
559 |
-
#: models/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
560 |
msgid "Force recheck"
|
561 |
msgstr ""
|
562 |
|
563 |
-
#: models/
|
564 |
msgid "Not yet verified"
|
565 |
msgstr ""
|
566 |
|
567 |
-
#: models/
|
568 |
msgid "Check now"
|
569 |
msgstr ""
|
570 |
|
571 |
-
#: models/
|
|
|
|
|
|
|
|
|
|
|
572 |
msgid "Unpublished"
|
573 |
msgstr ""
|
574 |
|
575 |
-
#: models/
|
576 |
#, php-format
|
577 |
msgid "%s ago"
|
578 |
msgstr ""
|
579 |
|
580 |
-
#: models/
|
581 |
msgid "Y/m/d"
|
582 |
msgstr ""
|
583 |
|
584 |
-
#: models/
|
585 |
msgid "Published"
|
586 |
msgstr ""
|
587 |
|
588 |
-
#: models/
|
589 |
msgid "Missed schedule"
|
590 |
msgstr ""
|
591 |
|
592 |
-
#: models/
|
593 |
msgid "Scheduled"
|
594 |
msgstr ""
|
595 |
|
596 |
-
#: models/
|
597 |
msgid "Last Modified"
|
598 |
msgstr ""
|
599 |
|
600 |
# @ squirrly-seo
|
601 |
-
#: models/
|
602 |
msgid "The code for Google Webmaster Tool is incorrect."
|
603 |
msgstr "Der Code für Google Webmaster Tool ist falsch."
|
604 |
|
605 |
# @ squirrly-seo
|
606 |
-
#: models/
|
607 |
msgid "The code for Google Analytics is incorrect."
|
608 |
msgstr "Der Code für Google Analytics ist falsch."
|
609 |
|
610 |
# @ squirrly-seo
|
611 |
-
#: models/
|
612 |
msgid "The code for Facebook is incorrect."
|
613 |
msgstr "Der Code für Facebook ist falsch."
|
614 |
|
615 |
-
#: models/
|
616 |
msgid "The code for Pinterest is incorrect."
|
617 |
msgstr ""
|
618 |
|
619 |
# @ squirrly-seo
|
620 |
-
#: models/
|
621 |
msgid "The code for Bing is incorrect."
|
622 |
msgstr "Der Code für Bing ist falsch."
|
623 |
|
624 |
-
#: models/
|
625 |
-
msgid "The twitter account is incorrect"
|
626 |
-
msgstr ""
|
627 |
-
|
628 |
-
#: models/SQ_BlockSettingsSeo.php:271
|
629 |
msgid "File type error: Only ICO, JPEG, JPG, GIF or PNG files are allowed."
|
630 |
msgstr ""
|
631 |
|
632 |
# @ squirrly-seo
|
633 |
-
#: models/
|
634 |
msgid "GD error: The GD library must be installed on your server."
|
635 |
msgstr "GD Fehler: Die GD-Bibliothek muss auf dem Server installiert werden."
|
636 |
|
637 |
# @ squirrly-seo
|
638 |
-
#: models/
|
639 |
msgid "Delete error: Could not delete the old favicon."
|
640 |
msgstr "Lösch Fehler: Konnte das alte Favicon nicht löschen."
|
641 |
|
642 |
# @ squirrly-seo
|
643 |
-
#: models/
|
644 |
msgid "Upload error: Could not upload the favicon."
|
645 |
msgstr "Upload Fehler: Konnte das Favicon nicht hochladen."
|
646 |
|
647 |
# @ squirrly-seo
|
648 |
-
#: models/
|
649 |
msgid "Permission error: Could not change the favicon permissions."
|
650 |
msgstr "Permission Fehler: Konnte Favicon-Berechtigungen nicht ändern."
|
651 |
|
652 |
# @ squirrly-seo
|
653 |
-
#: models/
|
654 |
msgid ""
|
655 |
"ICO Error: Could not create the ICO from file. Try with another file type."
|
656 |
msgstr ""
|
@@ -658,1275 +960,1850 @@ msgstr ""
|
|
658 |
"einem anderen Dateityp."
|
659 |
|
660 |
# @ squirrly-seo
|
661 |
-
#: models/
|
662 |
msgid "The favicon has been updated."
|
663 |
msgstr "Das Favicon wurde aktualisiert."
|
664 |
|
665 |
-
#: models/SQ_Frontend.php:496 models/SQ_Frontend.php:506
|
666 |
-
#: models/SQ_Frontend.php:511 models/SQ_Frontend.php:533
|
667 |
-
#: models/SQ_Frontend.php:730 models/SQ_Frontend.php:744
|
668 |
-
#: models/SQ_Frontend.php:753 models/SQ_Frontend.php:779
|
669 |
-
msgid "Page"
|
670 |
-
msgstr ""
|
671 |
-
|
672 |
-
#: models/SQ_Frontend.php:503
|
673 |
-
msgid "About"
|
674 |
-
msgstr ""
|
675 |
-
|
676 |
# @ default
|
677 |
-
#: models/
|
678 |
msgid "Squirrly could not find any results for: "
|
679 |
msgstr "Squirly hat keine Suchergebnisse gefunden für:"
|
680 |
|
681 |
-
#: models/
|
682 |
msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini."
|
683 |
msgstr ""
|
684 |
|
685 |
-
#: models/
|
686 |
msgid ""
|
687 |
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in "
|
688 |
"the HTML form."
|
689 |
msgstr ""
|
690 |
|
691 |
-
#: models/
|
692 |
msgid "The uploaded file was only partially uploaded."
|
693 |
msgstr ""
|
694 |
|
695 |
-
#: models/
|
696 |
msgid "No file was uploaded."
|
697 |
msgstr ""
|
698 |
|
699 |
-
#: models/
|
700 |
msgid "Missing a temporary folder."
|
701 |
msgstr ""
|
702 |
|
703 |
-
#: models/
|
704 |
msgid "Failed to write file to disk."
|
705 |
msgstr ""
|
706 |
|
707 |
-
#: models/
|
708 |
msgid "File upload stopped by extension."
|
709 |
msgstr ""
|
710 |
|
711 |
-
#: models/
|
712 |
msgid "Invalid form submission."
|
713 |
msgstr ""
|
714 |
|
715 |
-
#: models/
|
716 |
msgid "File is empty. Please upload something more substantial."
|
717 |
msgstr ""
|
718 |
|
719 |
-
#: models/
|
720 |
msgid ""
|
721 |
"File is empty. Please upload something more substantial. This error could "
|
722 |
"also be caused by uploads being disabled in your php.ini or by post_max_size "
|
723 |
"being defined as smaller than upload_max_filesize in php.ini."
|
724 |
msgstr ""
|
725 |
|
726 |
-
#: models/
|
727 |
msgid "Specified file failed upload test."
|
728 |
msgstr ""
|
729 |
|
730 |
-
#: models/
|
731 |
msgid "Sorry, this file type is not permitted for security reasons."
|
732 |
msgstr ""
|
733 |
|
734 |
-
#: models/
|
735 |
#, php-format
|
736 |
msgid "The uploaded file could not be moved to %s."
|
737 |
msgstr ""
|
738 |
|
739 |
-
#: models/
|
740 |
msgid "Optimized:"
|
741 |
msgstr ""
|
742 |
|
743 |
-
#: models/
|
744 |
msgid "See Analytics"
|
745 |
msgstr ""
|
746 |
|
747 |
-
#: models/
|
748 |
msgid "Optimize it with Squirrly to see the Analytics"
|
749 |
msgstr ""
|
750 |
|
751 |
-
#: models/
|
752 |
msgid "This post's current position in Google"
|
753 |
msgstr ""
|
754 |
|
755 |
-
#: models/
|
756 |
msgid "The total traffic for the last 30 days, for the current post"
|
757 |
msgstr ""
|
758 |
|
759 |
-
#: models/
|
760 |
msgid "The total number of shares on social media channels for this post"
|
761 |
msgstr ""
|
762 |
|
763 |
-
#: models/
|
764 |
msgid "The total authority for this post"
|
765 |
msgstr ""
|
766 |
|
767 |
-
#: models/
|
768 |
msgid "The total number of inbound links to this post"
|
769 |
msgstr ""
|
770 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
771 |
# @ squirrly-seo
|
772 |
-
#: squirrly.php:
|
773 |
msgid ""
|
774 |
"For Squirrly to work, the PHP version has to be equal or greater then 5.1"
|
775 |
msgstr ""
|
776 |
"Damit Squirrly funktioniert, muss die PHP-Version gleich oder größer als 5.1 "
|
777 |
"sein"
|
778 |
|
779 |
-
#:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
780 |
msgid "Squirrly account information"
|
781 |
msgstr ""
|
782 |
|
783 |
-
#:
|
784 |
msgid "Go to dashboard"
|
785 |
msgstr ""
|
786 |
|
787 |
-
#:
|
788 |
-
|
789 |
-
|
|
|
|
|
|
|
790 |
msgstr ""
|
791 |
|
792 |
-
#:
|
793 |
#, php-format
|
794 |
msgid "%sHow I Started Making Money With the Squirrly Affiliate Program%s"
|
795 |
msgstr ""
|
796 |
|
797 |
-
#:
|
798 |
msgid "Affiliate Benefits"
|
799 |
msgstr ""
|
800 |
|
801 |
-
#:
|
802 |
#, php-format
|
803 |
-
msgid "-
|
804 |
msgstr ""
|
805 |
|
806 |
-
#:
|
807 |
msgid "- No cost"
|
808 |
msgstr ""
|
809 |
|
810 |
-
#:
|
811 |
msgid "- Monthly payments in your Paypal account"
|
812 |
msgstr ""
|
813 |
|
814 |
-
#:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
815 |
msgid ""
|
816 |
"To redirect users to your site, just change \"squirrly.co\" with your domain."
|
817 |
msgstr ""
|
818 |
|
819 |
-
#:
|
820 |
msgid "Generate affiliate link"
|
821 |
msgstr ""
|
822 |
|
823 |
-
#:
|
824 |
msgid ""
|
825 |
"Your affiliate account is set and ready to go. Above you have the affiliate "
|
826 |
"link. "
|
827 |
msgstr ""
|
828 |
|
829 |
-
#:
|
830 |
#, php-format
|
831 |
msgid "Check your affiliate page: %sAffiliate page%s"
|
832 |
msgstr ""
|
833 |
|
834 |
-
#:
|
835 |
msgid ""
|
836 |
"After you connect to Squirrly you can begin to use your free Squirrly "
|
837 |
"affiliate link immediately!"
|
838 |
msgstr ""
|
839 |
|
840 |
-
#:
|
841 |
msgid "Squirrly banners you can use"
|
842 |
msgstr ""
|
843 |
|
844 |
-
#:
|
845 |
msgid "<< START HERE >>"
|
846 |
msgstr ""
|
847 |
|
848 |
-
#:
|
849 |
msgid "Moz Inbound Links"
|
850 |
msgstr ""
|
851 |
|
852 |
-
#:
|
853 |
msgid "Ahrefs Inbound Links"
|
854 |
msgstr ""
|
855 |
|
856 |
-
#:
|
857 |
msgid "Moz Authority"
|
858 |
msgstr ""
|
859 |
|
860 |
-
#:
|
861 |
msgid "Moz Rank"
|
862 |
msgstr ""
|
863 |
|
864 |
-
#:
|
865 |
msgid "Google Page Rank"
|
866 |
msgstr ""
|
867 |
|
868 |
-
#:
|
869 |
msgid "Ahrefs Rank"
|
870 |
msgstr ""
|
871 |
|
872 |
-
#:
|
873 |
msgid "Facebook shares"
|
874 |
msgstr ""
|
875 |
|
876 |
-
#:
|
877 |
msgid "Facebook likes"
|
878 |
msgstr ""
|
879 |
|
880 |
-
#:
|
881 |
msgid "Twitter shares"
|
882 |
msgstr ""
|
883 |
|
884 |
-
#:
|
885 |
msgid "Google+ shares"
|
886 |
msgstr ""
|
887 |
|
888 |
-
#:
|
889 |
msgid "LinkedIn Shares"
|
890 |
msgstr ""
|
891 |
|
892 |
-
#:
|
893 |
msgid "StumbleUpon shares"
|
894 |
msgstr ""
|
895 |
|
896 |
-
#:
|
897 |
msgid "Reddit shares"
|
898 |
msgstr ""
|
899 |
|
900 |
-
#:
|
901 |
msgid "Nicely done! Now you can focus on the other tasks"
|
902 |
msgstr ""
|
903 |
|
904 |
-
#:
|
905 |
msgid ""
|
906 |
"I know you can improve this. Please follow the documentation for a quicker "
|
907 |
"progress"
|
908 |
msgstr ""
|
909 |
|
910 |
-
#:
|
911 |
msgid "Visits"
|
912 |
msgstr ""
|
913 |
|
914 |
-
#:
|
915 |
msgid "Current: "
|
916 |
msgstr ""
|
917 |
|
918 |
-
#:
|
919 |
msgid "Lowest: "
|
920 |
msgstr ""
|
921 |
|
922 |
-
#:
|
923 |
msgid "Highest: "
|
924 |
msgstr ""
|
925 |
|
926 |
-
#:
|
927 |
msgid "last 30 days"
|
928 |
msgstr ""
|
929 |
|
930 |
-
#:
|
931 |
-
msgid "
|
932 |
msgstr ""
|
933 |
|
934 |
-
#:
|
935 |
-
msgid "
|
936 |
msgstr ""
|
937 |
|
938 |
-
#:
|
939 |
-
|
|
|
|
|
|
|
|
|
940 |
msgstr ""
|
941 |
|
942 |
-
#:
|
943 |
-
|
|
|
|
|
|
|
944 |
msgstr ""
|
945 |
|
946 |
-
#:
|
947 |
-
|
|
|
|
|
|
|
948 |
msgstr ""
|
949 |
|
950 |
-
#:
|
951 |
-
|
952 |
-
"
|
953 |
-
"that we can track them, and display you the analytics"
|
954 |
-
msgstr ""
|
955 |
-
|
956 |
-
#: themes/default/SQ_BlockPostsAnalytics.php:5
|
957 |
-
msgid ""
|
958 |
-
"If you recheck the google rank, let 10-20 seconds between requests to "
|
959 |
-
"prevent google to block your IP for an hour."
|
960 |
-
msgstr ""
|
961 |
-
|
962 |
-
# @ squirrly-seo
|
963 |
-
#: themes/default/SQ_BlockSettings.php:7
|
964 |
-
#: themes/default/SQ_BlockSettings.php:300
|
965 |
-
msgid "Save settings"
|
966 |
-
msgstr "Einstellungen speichern"
|
967 |
-
|
968 |
-
#: themes/default/SQ_BlockSettings.php:17
|
969 |
-
msgid "Post/Page Edit"
|
970 |
msgstr ""
|
971 |
|
972 |
-
#:
|
973 |
#, php-format
|
974 |
-
msgid "%
|
975 |
msgstr ""
|
976 |
|
977 |
-
#:
|
978 |
#, php-format
|
979 |
-
msgid "%
|
980 |
msgstr ""
|
981 |
|
982 |
-
#:
|
983 |
-
|
984 |
-
msgid "%sThere is a New SEO Live Assistant from Squirrly%s"
|
985 |
msgstr ""
|
986 |
|
987 |
-
#:
|
988 |
-
|
989 |
-
msgid "%sHow to create Human friendly content with the WordPress SEO plugin?%s"
|
990 |
msgstr ""
|
991 |
|
992 |
-
#:
|
993 |
-
msgid "
|
994 |
msgstr ""
|
995 |
|
996 |
-
#:
|
997 |
-
|
998 |
-
|
|
|
999 |
msgstr ""
|
1000 |
|
1001 |
-
#:
|
1002 |
-
|
1003 |
-
msgid "Pages"
|
1004 |
msgstr ""
|
1005 |
|
1006 |
-
#:
|
1007 |
-
|
1008 |
-
msgid "Products"
|
1009 |
msgstr ""
|
1010 |
|
1011 |
-
|
1012 |
-
|
1013 |
-
|
1014 |
-
#: themes/default/SQ_BlockSettings.php:84
|
1015 |
-
#: themes/default/SQ_BlockSettings.php:95
|
1016 |
-
#: themes/default/SQ_BlockSettings.php:106
|
1017 |
-
#: themes/default/SQ_BlockSettings.php:118
|
1018 |
-
#: themes/default/SQ_BlockSettings.php:261
|
1019 |
-
#: themes/default/SQ_BlockSettingsSeo.php:28
|
1020 |
-
#: themes/default/SQ_BlockSettingsSeo.php:47
|
1021 |
-
#: themes/default/SQ_BlockSettingsSeo.php:65
|
1022 |
-
#: themes/default/SQ_BlockSettingsSeo.php:82
|
1023 |
-
#: themes/default/SQ_BlockSettingsSeo.php:99
|
1024 |
-
#: themes/default/SQ_BlockSettingsSeo.php:116
|
1025 |
-
#: themes/default/SQ_BlockSettingsSeo.php:133
|
1026 |
-
#: themes/default/SQ_BlockSettingsSeo.php:161
|
1027 |
-
#: themes/default/SQ_BlockSettingsSeo.php:177
|
1028 |
-
#: themes/default/SQ_BlockSettingsSeo.php:411
|
1029 |
-
#: themes/default/SQ_BlockSettingsSeo.php:433
|
1030 |
-
#: themes/default/SQ_BlockSettingsSeo.php:442
|
1031 |
-
#: themes/default/SQ_BlockSettingsSeo.php:514
|
1032 |
-
msgid "Yes"
|
1033 |
-
msgstr "Ja"
|
1034 |
|
1035 |
-
|
1036 |
-
|
1037 |
-
|
1038 |
-
|
1039 |
-
|
1040 |
-
|
1041 |
-
|
1042 |
-
#: themes/default/SQ_BlockSettings.php:263
|
1043 |
-
#: themes/default/SQ_BlockSettingsSeo.php:30
|
1044 |
-
#: themes/default/SQ_BlockSettingsSeo.php:49
|
1045 |
-
#: themes/default/SQ_BlockSettingsSeo.php:67
|
1046 |
-
#: themes/default/SQ_BlockSettingsSeo.php:84
|
1047 |
-
#: themes/default/SQ_BlockSettingsSeo.php:101
|
1048 |
-
#: themes/default/SQ_BlockSettingsSeo.php:118
|
1049 |
-
#: themes/default/SQ_BlockSettingsSeo.php:135
|
1050 |
-
#: themes/default/SQ_BlockSettingsSeo.php:163
|
1051 |
-
#: themes/default/SQ_BlockSettingsSeo.php:179
|
1052 |
-
#: themes/default/SQ_BlockSettingsSeo.php:413
|
1053 |
-
#: themes/default/SQ_BlockSettingsSeo.php:435
|
1054 |
-
#: themes/default/SQ_BlockSettingsSeo.php:444
|
1055 |
-
#: themes/default/SQ_BlockSettingsSeo.php:516
|
1056 |
-
msgid "No"
|
1057 |
-
msgstr "Nein"
|
1058 |
|
1059 |
-
#:
|
1060 |
msgid ""
|
1061 |
-
"
|
1062 |
-
"
|
1063 |
msgstr ""
|
1064 |
|
1065 |
-
#:
|
1066 |
msgid ""
|
1067 |
-
"
|
|
|
1068 |
msgstr ""
|
1069 |
|
1070 |
-
#:
|
1071 |
-
msgid "
|
|
|
|
|
1072 |
msgstr ""
|
1073 |
|
1074 |
-
#:
|
1075 |
-
msgid "
|
1076 |
msgstr ""
|
1077 |
|
1078 |
-
#:
|
1079 |
msgid ""
|
1080 |
-
"
|
1081 |
-
"
|
1082 |
msgstr ""
|
1083 |
|
1084 |
-
#:
|
1085 |
-
msgid ""
|
1086 |
-
"Correct my <strong>feed links</strong> and <strong>images</strong> (convert "
|
1087 |
-
"from relative to absolute)."
|
1088 |
msgstr ""
|
1089 |
|
1090 |
-
#:
|
1091 |
-
msgid "
|
1092 |
msgstr ""
|
1093 |
|
1094 |
-
#:
|
1095 |
-
|
1096 |
-
msgid "%sCountry targeting%s"
|
1097 |
msgstr ""
|
1098 |
|
1099 |
-
#:
|
1100 |
msgid ""
|
1101 |
-
"
|
|
|
1102 |
msgstr ""
|
1103 |
|
1104 |
-
#:
|
1105 |
-
msgid "
|
1106 |
msgstr ""
|
1107 |
|
1108 |
-
#:
|
1109 |
-
msgid "
|
1110 |
msgstr ""
|
1111 |
|
1112 |
-
#:
|
1113 |
-
|
|
|
|
|
|
|
1114 |
msgstr ""
|
1115 |
|
1116 |
-
#:
|
1117 |
-
|
|
|
|
|
|
|
1118 |
msgstr ""
|
1119 |
|
1120 |
-
#:
|
1121 |
-
|
|
|
|
|
|
|
1122 |
msgstr ""
|
1123 |
|
1124 |
-
#:
|
1125 |
-
|
|
|
1126 |
msgstr ""
|
1127 |
|
1128 |
-
#:
|
1129 |
-
|
|
|
1130 |
msgstr ""
|
1131 |
|
1132 |
-
#:
|
1133 |
-
|
|
|
1134 |
msgstr ""
|
1135 |
|
1136 |
-
#:
|
1137 |
-
|
|
|
1138 |
msgstr ""
|
1139 |
|
1140 |
-
|
1141 |
-
|
1142 |
-
|
|
|
1143 |
|
1144 |
-
|
1145 |
-
|
1146 |
-
|
|
|
1147 |
|
1148 |
-
#:
|
1149 |
-
msgid "
|
1150 |
msgstr ""
|
1151 |
|
1152 |
-
#:
|
1153 |
-
msgid "
|
1154 |
msgstr ""
|
1155 |
|
1156 |
-
#:
|
1157 |
-
|
|
|
1158 |
msgstr ""
|
1159 |
|
1160 |
-
#:
|
1161 |
-
msgid "
|
1162 |
msgstr ""
|
1163 |
|
1164 |
-
#:
|
1165 |
-
msgid "
|
1166 |
msgstr ""
|
1167 |
|
1168 |
-
#:
|
1169 |
-
|
|
|
|
|
|
|
1170 |
msgstr ""
|
1171 |
|
1172 |
-
#:
|
1173 |
-
msgid "
|
1174 |
msgstr ""
|
1175 |
|
1176 |
-
#:
|
1177 |
-
msgid "
|
1178 |
msgstr ""
|
1179 |
|
1180 |
-
#:
|
1181 |
-
msgid "
|
1182 |
msgstr ""
|
1183 |
|
1184 |
-
#:
|
1185 |
-
msgid "
|
1186 |
msgstr ""
|
1187 |
|
1188 |
-
#:
|
1189 |
-
msgid "
|
1190 |
msgstr ""
|
1191 |
|
1192 |
-
#:
|
1193 |
-
msgid "
|
1194 |
msgstr ""
|
1195 |
|
1196 |
-
#:
|
1197 |
-
msgid "
|
|
|
|
|
1198 |
msgstr ""
|
1199 |
|
1200 |
-
#:
|
1201 |
-
msgid "
|
1202 |
msgstr ""
|
1203 |
|
1204 |
-
#:
|
1205 |
-
msgid "
|
1206 |
msgstr ""
|
1207 |
|
1208 |
-
#:
|
1209 |
-
msgid "
|
1210 |
msgstr ""
|
1211 |
|
1212 |
-
#:
|
1213 |
-
msgid "
|
1214 |
msgstr ""
|
1215 |
|
1216 |
-
#:
|
1217 |
-
msgid "
|
|
|
|
|
|
|
1218 |
msgstr ""
|
1219 |
|
1220 |
-
#:
|
1221 |
-
msgid "
|
1222 |
msgstr ""
|
1223 |
|
1224 |
-
#:
|
1225 |
-
msgid "
|
|
|
|
|
|
|
1226 |
msgstr ""
|
1227 |
|
1228 |
-
#:
|
1229 |
-
msgid "
|
1230 |
msgstr ""
|
1231 |
|
1232 |
-
#:
|
1233 |
-
msgid "
|
1234 |
msgstr ""
|
1235 |
|
1236 |
-
#:
|
1237 |
-
msgid "
|
1238 |
msgstr ""
|
1239 |
|
1240 |
-
#:
|
1241 |
-
msgid "
|
1242 |
msgstr ""
|
1243 |
|
1244 |
-
#:
|
1245 |
-
msgid "
|
1246 |
msgstr ""
|
1247 |
|
1248 |
-
#:
|
1249 |
-
msgid "
|
1250 |
msgstr ""
|
1251 |
|
1252 |
-
#:
|
1253 |
-
msgid "
|
1254 |
msgstr ""
|
1255 |
|
1256 |
-
#:
|
1257 |
-
msgid "
|
1258 |
msgstr ""
|
1259 |
|
1260 |
-
#:
|
1261 |
-
msgid "
|
1262 |
msgstr ""
|
1263 |
|
1264 |
-
#:
|
1265 |
-
msgid "
|
1266 |
msgstr ""
|
1267 |
|
1268 |
-
#:
|
1269 |
-
msgid "
|
1270 |
msgstr ""
|
1271 |
|
1272 |
-
#:
|
1273 |
-
msgid "
|
|
|
1274 |
msgstr ""
|
1275 |
|
1276 |
-
|
1277 |
-
|
1278 |
-
|
|
|
1279 |
|
1280 |
-
#:
|
1281 |
-
msgid "
|
1282 |
msgstr ""
|
1283 |
|
1284 |
-
#:
|
1285 |
-
|
|
|
|
|
|
|
|
|
1286 |
msgstr ""
|
1287 |
|
1288 |
-
#:
|
1289 |
-
msgid "
|
|
|
1290 |
msgstr ""
|
1291 |
|
1292 |
-
#:
|
1293 |
-
msgid "
|
1294 |
msgstr ""
|
1295 |
|
1296 |
-
#:
|
1297 |
-
msgid "
|
|
|
|
|
1298 |
msgstr ""
|
1299 |
|
1300 |
-
#:
|
1301 |
-
msgid "
|
|
|
|
|
|
|
|
|
1302 |
msgstr ""
|
1303 |
|
1304 |
-
#:
|
1305 |
-
msgid "
|
|
|
|
|
1306 |
msgstr ""
|
1307 |
|
1308 |
-
#:
|
1309 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
1310 |
msgstr ""
|
1311 |
|
1312 |
-
#:
|
1313 |
-
msgid "
|
1314 |
msgstr ""
|
1315 |
|
1316 |
-
#:
|
1317 |
-
msgid "
|
1318 |
msgstr ""
|
1319 |
|
1320 |
-
#:
|
1321 |
-
msgid "
|
1322 |
msgstr ""
|
1323 |
|
1324 |
-
#:
|
1325 |
-
msgid "
|
1326 |
msgstr ""
|
1327 |
|
1328 |
-
#:
|
1329 |
-
msgid "
|
1330 |
msgstr ""
|
1331 |
|
1332 |
-
#:
|
1333 |
-
|
|
|
1334 |
msgstr ""
|
1335 |
|
1336 |
-
#:
|
1337 |
-
msgid "
|
1338 |
msgstr ""
|
1339 |
|
1340 |
-
#:
|
1341 |
-
msgid "
|
1342 |
msgstr ""
|
1343 |
|
1344 |
-
#:
|
1345 |
-
msgid "
|
1346 |
msgstr ""
|
1347 |
|
1348 |
-
#:
|
1349 |
-
msgid "
|
1350 |
msgstr ""
|
1351 |
|
1352 |
-
#:
|
1353 |
-
msgid "
|
1354 |
msgstr ""
|
1355 |
|
1356 |
-
|
1357 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1358 |
msgstr ""
|
1359 |
|
1360 |
-
#:
|
1361 |
-
msgid "
|
1362 |
msgstr ""
|
1363 |
|
1364 |
-
#:
|
1365 |
-
|
|
|
1366 |
msgstr ""
|
1367 |
|
1368 |
-
#:
|
1369 |
-
|
|
|
|
|
|
|
|
|
1370 |
msgstr ""
|
1371 |
|
1372 |
-
#:
|
1373 |
-
|
|
|
|
|
|
|
1374 |
msgstr ""
|
1375 |
|
1376 |
-
#:
|
1377 |
-
|
|
|
|
|
|
|
1378 |
msgstr ""
|
1379 |
|
1380 |
-
#:
|
1381 |
-
|
|
|
|
|
|
|
|
|
1382 |
msgstr ""
|
1383 |
|
1384 |
-
#:
|
1385 |
-
msgid "
|
1386 |
msgstr ""
|
1387 |
|
1388 |
-
#:
|
1389 |
-
msgid "
|
|
|
|
|
1390 |
msgstr ""
|
1391 |
|
1392 |
-
|
1393 |
-
|
|
|
|
|
|
|
|
|
|
|
1394 |
msgstr ""
|
1395 |
|
1396 |
-
#:
|
1397 |
-
|
|
|
1398 |
msgstr ""
|
1399 |
|
1400 |
-
#:
|
1401 |
-
|
|
|
1402 |
msgstr ""
|
1403 |
|
1404 |
-
#:
|
1405 |
-
|
|
|
1406 |
msgstr ""
|
1407 |
|
1408 |
-
#:
|
1409 |
-
|
|
|
1410 |
msgstr ""
|
1411 |
|
1412 |
-
#:
|
1413 |
-
msgid "
|
1414 |
msgstr ""
|
1415 |
|
1416 |
-
#:
|
1417 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
1418 |
msgstr ""
|
1419 |
|
1420 |
-
#:
|
1421 |
-
msgid "
|
1422 |
msgstr ""
|
1423 |
|
1424 |
-
#:
|
1425 |
-
msgid "
|
1426 |
msgstr ""
|
1427 |
|
1428 |
-
#:
|
1429 |
-
msgid "
|
1430 |
msgstr ""
|
1431 |
|
1432 |
-
#:
|
1433 |
-
msgid "
|
1434 |
msgstr ""
|
1435 |
|
1436 |
-
#:
|
1437 |
-
msgid "
|
1438 |
msgstr ""
|
1439 |
|
1440 |
-
#:
|
1441 |
-
msgid "
|
1442 |
msgstr ""
|
1443 |
|
1444 |
-
#:
|
1445 |
-
msgid "
|
|
|
|
|
1446 |
msgstr ""
|
1447 |
|
1448 |
-
#:
|
1449 |
-
msgid "
|
|
|
1450 |
msgstr ""
|
1451 |
|
1452 |
-
#:
|
1453 |
-
msgid "
|
|
|
|
|
1454 |
msgstr ""
|
1455 |
|
1456 |
-
#:
|
1457 |
-
msgid "
|
1458 |
msgstr ""
|
1459 |
|
1460 |
-
#:
|
1461 |
-
msgid "
|
|
|
|
|
1462 |
msgstr ""
|
1463 |
|
1464 |
-
#:
|
1465 |
-
msgid "
|
|
|
|
|
1466 |
msgstr ""
|
1467 |
|
1468 |
-
#:
|
1469 |
-
msgid "
|
1470 |
msgstr ""
|
1471 |
|
1472 |
-
#:
|
1473 |
-
|
|
|
1474 |
msgstr ""
|
1475 |
|
1476 |
-
#:
|
1477 |
-
|
|
|
1478 |
msgstr ""
|
1479 |
|
1480 |
-
#:
|
1481 |
-
msgid "
|
|
|
1482 |
msgstr ""
|
1483 |
|
1484 |
-
#:
|
1485 |
-
msgid "
|
1486 |
msgstr ""
|
1487 |
|
1488 |
-
#:
|
1489 |
-
msgid "
|
1490 |
msgstr ""
|
1491 |
|
1492 |
-
#:
|
1493 |
-
msgid "
|
1494 |
msgstr ""
|
1495 |
|
1496 |
-
#:
|
1497 |
-
msgid "
|
1498 |
msgstr ""
|
1499 |
|
1500 |
-
#:
|
1501 |
-
msgid "
|
1502 |
msgstr ""
|
1503 |
|
1504 |
-
#:
|
1505 |
-
msgid "
|
1506 |
msgstr ""
|
1507 |
|
1508 |
-
#:
|
1509 |
-
msgid "
|
1510 |
msgstr ""
|
1511 |
|
1512 |
-
#:
|
1513 |
-
msgid "
|
1514 |
msgstr ""
|
1515 |
|
1516 |
-
#:
|
1517 |
-
msgid "
|
1518 |
msgstr ""
|
1519 |
|
1520 |
-
#:
|
1521 |
-
|
1522 |
-
msgid ""
|
1523 |
-
"Select how many pages to be checked by google rank every hour. %s5 pages "
|
1524 |
-
"(recommended)%s"
|
1525 |
msgstr ""
|
1526 |
|
1527 |
-
#:
|
1528 |
-
msgid "
|
1529 |
msgstr ""
|
1530 |
|
1531 |
-
#:
|
1532 |
-
msgid ""
|
1533 |
-
"Restricts search results to results originating in the above particular "
|
1534 |
-
"country."
|
1535 |
msgstr ""
|
1536 |
|
1537 |
-
#:
|
1538 |
-
msgid "
|
1539 |
msgstr ""
|
1540 |
|
1541 |
-
#:
|
1542 |
-
|
1543 |
-
msgid "%sHow to set the Google Webmaster Tool%s"
|
1544 |
msgstr ""
|
1545 |
|
1546 |
-
#:
|
1547 |
-
|
1548 |
-
msgid "%sBest practices to help Google find, crawl, and index your site%s"
|
1549 |
msgstr ""
|
1550 |
|
1551 |
-
#:
|
1552 |
-
|
1553 |
-
msgid "%sBing Webmaster Tools Help & How-To Center%s"
|
1554 |
msgstr ""
|
1555 |
|
1556 |
-
#:
|
1557 |
-
|
1558 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1559 |
msgstr ""
|
1560 |
|
1561 |
-
#:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1562 |
#, php-format
|
1563 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1564 |
msgstr ""
|
1565 |
|
1566 |
-
#:
|
|
|
|
|
|
|
|
|
1567 |
#, php-format
|
1568 |
-
msgid "
|
1569 |
msgstr ""
|
1570 |
|
1571 |
-
#:
|
1572 |
-
|
1573 |
-
msgid "
|
1574 |
msgstr ""
|
1575 |
|
1576 |
-
#:
|
1577 |
-
|
1578 |
-
msgid "Restore Settings"
|
1579 |
msgstr ""
|
1580 |
|
1581 |
-
#:
|
1582 |
-
|
1583 |
-
|
1584 |
-
|
1585 |
msgstr ""
|
1586 |
|
1587 |
-
#:
|
1588 |
-
|
1589 |
-
#: themes/default/SQ_Blocklogin.php:60
|
1590 |
-
msgid "Restore Backup"
|
1591 |
msgstr ""
|
1592 |
|
1593 |
-
#:
|
1594 |
-
|
1595 |
-
msgid "Save SEO"
|
1596 |
msgstr ""
|
1597 |
|
1598 |
-
#:
|
1599 |
-
#: themes/default/SQ_BlockSettingsSeo.php:144
|
1600 |
msgid "Check for SEO issues in your site"
|
1601 |
msgstr ""
|
1602 |
|
1603 |
-
#:
|
1604 |
-
msgid "Let Squirrly SEO
|
1605 |
msgstr ""
|
1606 |
|
1607 |
-
#:
|
1608 |
#, php-format
|
1609 |
-
msgid "%sIs Squirrly SEO better
|
1610 |
msgstr ""
|
1611 |
|
1612 |
-
#:
|
1613 |
msgid ""
|
1614 |
"Activate the built-in SEO settings from Squirrly by switching Yes below. "
|
1615 |
"<strong>Works well with Multisites and Ecommerce.</strong>"
|
1616 |
msgstr ""
|
1617 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1618 |
# @ squirrly-seo
|
1619 |
-
#:
|
1620 |
msgid "What does Squirrly automatically do for SEO?"
|
1621 |
msgstr "Was tut Squirrly automatisch für SEO?"
|
1622 |
|
1623 |
-
#:
|
1624 |
#, php-format
|
1625 |
msgid ""
|
1626 |
"adds <strong>%scanonical link%s</strong>, <strong>%srel=\"prev\" and rel="
|
1627 |
"\"next\"%s</strong> metas in Header"
|
1628 |
msgstr ""
|
1629 |
|
1630 |
-
#:
|
1631 |
-
msgid ""
|
1632 |
-
"adds the required METAs (<strong>dublincore, google hreflang</strong>, etc.)"
|
1633 |
msgstr ""
|
1634 |
|
1635 |
-
#:
|
1636 |
#, php-format
|
1637 |
msgid "adds the <strong>%sXML Sitemap%s</strong> for search engines: %s"
|
1638 |
msgstr ""
|
1639 |
|
1640 |
-
#:
|
1641 |
-
|
|
|
1642 |
msgstr ""
|
1643 |
|
1644 |
-
#:
|
1645 |
#, php-format
|
1646 |
msgid ""
|
1647 |
-
"adds the <strong>%sfavicon.ico%s</strong> and the <strong>%sicons for
|
1648 |
-
"and
|
1649 |
msgstr ""
|
1650 |
|
1651 |
-
#:
|
1652 |
#, php-format
|
1653 |
msgid "adds the <strong>%sJson-LD%s</strong> metas for Semantic SEO"
|
1654 |
msgstr ""
|
1655 |
|
1656 |
-
#:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1657 |
msgid ""
|
1658 |
"Note! By switching the <strong>Json-LD</strong>, <strong>XML Sitemap</"
|
1659 |
"strong> and <strong>Favicon</strong> on, you open new options below"
|
1660 |
msgstr ""
|
1661 |
|
1662 |
-
#:
|
1663 |
-
msgid "First
|
1664 |
msgstr ""
|
1665 |
|
1666 |
-
#:
|
1667 |
#, php-format
|
1668 |
msgid "%sThe best SEO approach to Meta information%s"
|
1669 |
msgstr ""
|
1670 |
|
1671 |
-
#:
|
1672 |
-
msgid "
|
1673 |
msgstr ""
|
1674 |
|
1675 |
-
#:
|
1676 |
-
|
1677 |
-
"
|
1678 |
-
"
|
|
|
|
|
|
|
|
|
1679 |
msgstr ""
|
1680 |
|
1681 |
-
#:
|
1682 |
msgid "SEO for all post/pages"
|
1683 |
msgstr ""
|
1684 |
|
1685 |
-
#:
|
1686 |
#, php-format
|
1687 |
msgid ""
|
1688 |
"To customize the Title and Description for all the Posts and Pages in your "
|
1689 |
-
"site use the %
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1690 |
msgstr ""
|
1691 |
|
1692 |
# @ squirrly-seo
|
1693 |
-
#:
|
1694 |
msgid "Title:"
|
1695 |
msgstr "Titel:"
|
1696 |
|
1697 |
-
#:
|
1698 |
msgid "Tips: Length 10-75 chars"
|
1699 |
msgstr ""
|
1700 |
|
1701 |
# @ squirrly-seo
|
1702 |
-
#:
|
1703 |
msgid "Description:"
|
1704 |
msgstr "Beschreibung:"
|
1705 |
|
1706 |
-
#:
|
1707 |
msgid "Tips: Length 70-165 chars"
|
1708 |
msgstr ""
|
1709 |
|
1710 |
# @ squirrly-seo
|
1711 |
-
#:
|
1712 |
msgid "Keywords:"
|
1713 |
msgstr "Schlüsselwörter:"
|
1714 |
|
1715 |
-
|
1716 |
-
|
1717 |
-
|
1718 |
-
|
|
|
|
|
|
|
1719 |
|
1720 |
-
#:
|
|
|
|
|
|
|
|
|
1721 |
msgid "First Page Preview (Title, Description, Keywords)"
|
1722 |
msgstr ""
|
1723 |
|
1724 |
-
#:
|
|
|
|
|
|
|
|
|
1725 |
msgid ""
|
1726 |
-
"If you don't see any changes in
|
1727 |
-
"
|
1728 |
msgstr ""
|
1729 |
|
1730 |
-
#:
|
1731 |
#, php-format
|
1732 |
msgid ""
|
1733 |
-
"
|
1734 |
-
"
|
1735 |
-
"Page"
|
1736 |
msgstr ""
|
1737 |
|
1738 |
-
#:
|
1739 |
msgid "Social Media Options"
|
1740 |
msgstr ""
|
1741 |
|
1742 |
-
#:
|
1743 |
msgid "Select the language you're using on Social Media"
|
1744 |
msgstr ""
|
1745 |
|
1746 |
-
#:
|
1747 |
#, php-format
|
1748 |
msgid "%sHow to pop out in Social Media with your links%s"
|
1749 |
msgstr ""
|
1750 |
|
1751 |
-
#:
|
1752 |
#, php-format
|
1753 |
msgid "%sGet busy with Facebook’s new Search Engine functions%s"
|
1754 |
msgstr ""
|
1755 |
|
1756 |
-
#:
|
1757 |
#, php-format
|
1758 |
msgid ""
|
1759 |
"%sHow I Added Twitter Cards in My WordPress for Better Inbound Marketing%s"
|
1760 |
msgstr ""
|
1761 |
|
1762 |
-
#:
|
1763 |
-
msgid "
|
1764 |
msgstr ""
|
1765 |
|
1766 |
-
#:
|
|
|
|
|
|
|
|
|
|
|
1767 |
msgid ""
|
1768 |
-
"Add the
|
|
|
1769 |
msgstr ""
|
1770 |
|
1771 |
-
#:
|
1772 |
-
msgid "
|
1773 |
msgstr ""
|
1774 |
|
1775 |
-
#:
|
1776 |
#, php-format
|
1777 |
-
msgid ""
|
1778 |
-
"Use <strong>Twitter %ssummary_large_image%s</strong> for your tweeter card. "
|
1779 |
msgstr ""
|
1780 |
|
1781 |
-
#:
|
1782 |
msgid "You need to add your <strong>Twitter account</strong> below"
|
1783 |
msgstr ""
|
1784 |
|
1785 |
-
#:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1786 |
msgid "Social Media Accounts"
|
1787 |
msgstr ""
|
1788 |
|
1789 |
-
#:
|
1790 |
#, php-format
|
1791 |
msgid "%sLink your Google+ profile to the content you create%s"
|
1792 |
msgstr ""
|
1793 |
|
1794 |
-
#:
|
1795 |
#, php-format
|
1796 |
msgid ""
|
1797 |
"%sTwitter account is mandatory for <strong>Twitter Card Validation</strong>%s"
|
1798 |
msgstr ""
|
1799 |
|
1800 |
-
#:
|
1801 |
#, php-format
|
1802 |
msgid ""
|
1803 |
"%sAdd all your social accounts for <strong>JSON-LD Semantic SEO</strong>%s"
|
1804 |
msgstr ""
|
1805 |
|
1806 |
-
#:
|
1807 |
-
#: themes/default/SQ_BlockSettingsSeo.php:597
|
1808 |
#, php-format
|
1809 |
msgid "%sSpecify your social profiles to Google%s"
|
1810 |
msgstr ""
|
1811 |
|
1812 |
-
#:
|
1813 |
msgid "Your Twitter Account:"
|
1814 |
msgstr ""
|
1815 |
|
1816 |
-
#:
|
1817 |
msgid "Google Plus Profile:"
|
1818 |
msgstr ""
|
1819 |
|
1820 |
-
#:
|
1821 |
msgid "Facebook Profile:"
|
1822 |
msgstr ""
|
1823 |
|
1824 |
-
#:
|
1825 |
msgid "Linkedin Profile:"
|
1826 |
msgstr ""
|
1827 |
|
1828 |
-
#:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1829 |
msgid "XML Sitemap for Google"
|
1830 |
msgstr ""
|
1831 |
|
1832 |
-
#:
|
1833 |
msgid ""
|
1834 |
-
"Squirrly Sitemap is the fastest way to tell Google about
|
1835 |
-
"<strong>Supports Multisites, Google News, Images, Videos, Custom Post
|
1836 |
-
"Custom Taxonomies and Ecommerce products</strong>"
|
1837 |
msgstr ""
|
1838 |
|
1839 |
-
#:
|
1840 |
#, php-format
|
1841 |
msgid "%sHow to submit your sitemap.xml in Google Webmaster Tool%s"
|
1842 |
msgstr ""
|
1843 |
|
1844 |
-
#:
|
1845 |
#, php-format
|
1846 |
msgid ""
|
1847 |
"%s10 Vital To Dos to Feed Your SEO Content Machine After You Post Articles%s"
|
1848 |
msgstr ""
|
1849 |
|
1850 |
-
#:
|
|
|
|
|
|
|
|
|
|
|
|
|
1851 |
msgid "XML Sitemap Options"
|
1852 |
msgstr ""
|
1853 |
|
1854 |
-
#:
|
1855 |
msgid "Ping your sitemap to Google and Bing when a new post is published"
|
1856 |
msgstr ""
|
1857 |
|
1858 |
-
#:
|
1859 |
msgid "Build Sitemaps for"
|
1860 |
msgstr ""
|
1861 |
|
1862 |
-
#:
|
1863 |
msgid "Google News"
|
1864 |
msgstr ""
|
1865 |
|
1866 |
-
#:
|
1867 |
msgid "Categories"
|
1868 |
msgstr ""
|
1869 |
|
1870 |
-
#:
|
1871 |
msgid "Tags"
|
1872 |
msgstr ""
|
1873 |
|
1874 |
-
#:
|
1875 |
msgid "Archive"
|
1876 |
msgstr ""
|
1877 |
|
1878 |
-
#:
|
1879 |
msgid "Custom Taxonomies"
|
1880 |
msgstr ""
|
1881 |
|
1882 |
-
#:
|
1883 |
msgid "Custom Posts"
|
1884 |
msgstr ""
|
1885 |
|
1886 |
-
#:
|
|
|
|
|
|
|
|
|
|
|
|
|
1887 |
msgid "Include in Sitemaps"
|
1888 |
msgstr ""
|
1889 |
|
1890 |
-
#:
|
1891 |
msgid "<strong>Images</strong> from posts/pages"
|
1892 |
msgstr ""
|
1893 |
|
1894 |
-
#:
|
1895 |
msgid "<strong>Videos</strong> (embeded and local media)"
|
1896 |
msgstr ""
|
1897 |
|
1898 |
-
#:
|
1899 |
msgid "How often do you update your site?"
|
1900 |
msgstr ""
|
1901 |
|
1902 |
-
#:
|
1903 |
msgid "every day"
|
1904 |
msgstr ""
|
1905 |
|
1906 |
-
#:
|
1907 |
msgid "1-3 times per week"
|
1908 |
msgstr ""
|
1909 |
|
1910 |
-
#:
|
1911 |
msgid "1-3 times per month"
|
1912 |
msgstr ""
|
1913 |
|
1914 |
-
#:
|
1915 |
msgid "1-3 times per year"
|
1916 |
msgstr ""
|
1917 |
|
|
|
|
|
|
|
|
|
1918 |
# @ squirrly-seo
|
1919 |
-
#:
|
1920 |
msgid "Change the Website Icon"
|
1921 |
msgstr "Ändern Sie das Website-Symbol"
|
1922 |
|
1923 |
-
#:
|
1924 |
msgid ""
|
1925 |
"Now, even tablet & smartphone browsers make use of your icons. This makes "
|
1926 |
"having a good favicon even more important."
|
1927 |
msgstr ""
|
1928 |
|
1929 |
-
#:
|
1930 |
#, php-format
|
1931 |
msgid ""
|
1932 |
"You can use %shttp://convertico.com/%s to convert your photo to icon and "
|
@@ -1934,17 +2811,17 @@ msgid ""
|
|
1934 |
msgstr ""
|
1935 |
|
1936 |
# @ squirrly-seo
|
1937 |
-
#:
|
1938 |
msgid "Upload file:"
|
1939 |
msgstr "Datei hochladen:"
|
1940 |
|
1941 |
# @ squirrly-seo
|
1942 |
-
#:
|
1943 |
msgid "Upload"
|
1944 |
msgstr "Hochladen"
|
1945 |
|
1946 |
# @ squirrly-seo
|
1947 |
-
#:
|
1948 |
msgid ""
|
1949 |
"If you don't see the new icon in your browser, empty the browser cache and "
|
1950 |
"refresh the page."
|
@@ -1953,462 +2830,856 @@ msgstr ""
|
|
1953 |
"Cache und aktualisieren Sie die Seite."
|
1954 |
|
1955 |
# @ squirrly-seo
|
1956 |
-
#:
|
1957 |
msgid "File types: JPG, JPEG, GIF and PNG."
|
1958 |
msgstr "Dateitypen: JPG, JPEG, GIF und PNG."
|
1959 |
|
1960 |
-
#:
|
1961 |
msgid ""
|
1962 |
"Does not physically create the favicon.ico file. The best option for "
|
1963 |
"Multisites."
|
1964 |
msgstr ""
|
1965 |
|
1966 |
-
#:
|
1967 |
msgid "JSON-LD for Semantic SEO"
|
1968 |
msgstr ""
|
1969 |
|
1970 |
-
#:
|
1971 |
msgid ""
|
1972 |
"Squirrly will automatically add the JSON-LD Structured Data in your site."
|
1973 |
msgstr ""
|
1974 |
|
1975 |
-
#:
|
1976 |
#, php-format
|
1977 |
msgid "%sJSON-LD's Big Day at Google%s"
|
1978 |
msgstr ""
|
1979 |
|
1980 |
-
#:
|
1981 |
#, php-format
|
1982 |
msgid "%sGoogle Testing Tool%s"
|
1983 |
msgstr ""
|
1984 |
|
1985 |
-
#:
|
|
|
|
|
|
|
|
|
1986 |
msgid "Your site type:"
|
1987 |
msgstr ""
|
1988 |
|
1989 |
-
#:
|
1990 |
msgid "Organization"
|
1991 |
msgstr ""
|
1992 |
|
1993 |
-
#:
|
1994 |
msgid "Personal"
|
1995 |
msgstr ""
|
1996 |
|
1997 |
-
#:
|
1998 |
msgid "Your Organization Name:"
|
1999 |
msgstr ""
|
2000 |
|
2001 |
-
#:
|
2002 |
msgid "Your Name:"
|
2003 |
msgstr ""
|
2004 |
|
2005 |
-
#:
|
2006 |
msgid "Job Title:"
|
2007 |
msgstr ""
|
2008 |
|
2009 |
-
#:
|
2010 |
msgid "Logo Url:"
|
2011 |
msgstr ""
|
2012 |
|
2013 |
-
#:
|
2014 |
msgid "Image Url:"
|
2015 |
msgstr ""
|
2016 |
|
2017 |
-
#:
|
2018 |
msgid "Select Image"
|
2019 |
msgstr ""
|
2020 |
|
2021 |
-
#:
|
2022 |
msgid "Contact Phone:"
|
2023 |
msgstr ""
|
2024 |
|
2025 |
-
#:
|
2026 |
msgid "Contact Type:"
|
2027 |
msgstr ""
|
2028 |
|
2029 |
-
#:
|
2030 |
msgid "Customer Service"
|
2031 |
msgstr ""
|
2032 |
|
2033 |
-
#:
|
2034 |
msgid "Technical Support"
|
2035 |
msgstr ""
|
2036 |
|
2037 |
-
#:
|
2038 |
msgid "Billing Support"
|
2039 |
msgstr ""
|
2040 |
|
2041 |
-
#:
|
2042 |
msgid "Bill Payment"
|
2043 |
msgstr ""
|
2044 |
|
2045 |
-
#:
|
2046 |
msgid "Sales"
|
2047 |
msgstr ""
|
2048 |
|
2049 |
-
#:
|
2050 |
msgid "Reservations"
|
2051 |
msgstr ""
|
2052 |
|
2053 |
-
#:
|
2054 |
msgid "Credit Card Support"
|
2055 |
msgstr ""
|
2056 |
|
2057 |
-
#:
|
2058 |
msgid "Emergency"
|
2059 |
msgstr ""
|
2060 |
|
2061 |
-
#:
|
2062 |
msgid "Baggage Tracking"
|
2063 |
msgstr ""
|
2064 |
|
2065 |
-
#:
|
2066 |
msgid "Roadside Assistance"
|
2067 |
msgstr ""
|
2068 |
|
2069 |
-
#:
|
2070 |
msgid "Package Tracking"
|
2071 |
msgstr ""
|
2072 |
|
2073 |
-
#:
|
2074 |
msgid "Short Description:"
|
2075 |
msgstr ""
|
2076 |
|
2077 |
-
#:
|
2078 |
-
msgid "Add your social accounts for Json-LD"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2079 |
msgstr ""
|
2080 |
|
2081 |
-
#:
|
2082 |
-
|
|
|
2083 |
msgstr ""
|
2084 |
|
2085 |
-
#:
|
2086 |
-
|
|
|
2087 |
msgstr ""
|
2088 |
|
2089 |
-
#:
|
2090 |
#, php-format
|
2091 |
-
msgid "%
|
2092 |
msgstr ""
|
2093 |
|
2094 |
-
#:
|
2095 |
#, php-format
|
2096 |
-
msgid "%
|
2097 |
msgstr ""
|
2098 |
|
2099 |
-
#:
|
2100 |
#, php-format
|
2101 |
-
msgid "Google
|
2102 |
msgstr ""
|
2103 |
|
2104 |
-
#:
|
2105 |
#, php-format
|
2106 |
-
msgid "
|
2107 |
msgstr ""
|
2108 |
|
2109 |
-
#:
|
2110 |
-
|
|
|
2111 |
msgstr ""
|
2112 |
|
2113 |
-
#:
|
2114 |
-
|
|
|
2115 |
msgstr ""
|
2116 |
|
2117 |
# @ squirrly-seo
|
2118 |
-
#:
|
2119 |
msgid "Go to Profile"
|
2120 |
msgstr "Zum Profil"
|
2121 |
|
2122 |
# @ squirrly-seo
|
2123 |
-
#:
|
2124 |
msgid "Profile"
|
2125 |
msgstr "Profil"
|
2126 |
|
2127 |
-
|
2128 |
-
|
2129 |
-
|
2130 |
-
msgstr "Support"
|
2131 |
|
2132 |
-
|
2133 |
-
|
2134 |
-
msgid "
|
2135 |
-
msgstr "
|
2136 |
|
2137 |
-
|
2138 |
-
|
2139 |
-
msgid "
|
2140 |
-
msgstr "
|
2141 |
|
2142 |
-
|
2143 |
-
|
2144 |
-
msgid "
|
2145 |
-
msgstr "
|
2146 |
|
2147 |
-
|
2148 |
-
|
2149 |
-
msgid "
|
2150 |
-
msgstr "
|
2151 |
|
2152 |
# @ squirrly-seo
|
2153 |
-
#:
|
2154 |
msgid "How was your Squirrly experience today?"
|
2155 |
msgstr "Wie war Ihre Squirrly Erfahrung heute?"
|
2156 |
|
2157 |
# @ squirrly-seo
|
2158 |
-
#:
|
2159 |
msgid "How was Squirrly today?"
|
2160 |
msgstr "Wie war Squirrly heute?"
|
2161 |
|
2162 |
-
#:
|
2163 |
msgid "Angry"
|
2164 |
msgstr ""
|
2165 |
|
2166 |
-
#:
|
|
|
|
|
|
|
|
|
2167 |
msgid "Sad"
|
2168 |
msgstr ""
|
2169 |
|
2170 |
-
#:
|
|
|
|
|
|
|
|
|
2171 |
msgid "Happy"
|
2172 |
msgstr ""
|
2173 |
|
2174 |
-
#:
|
|
|
|
|
|
|
|
|
2175 |
msgid "Excited"
|
2176 |
msgstr ""
|
2177 |
|
2178 |
-
#:
|
|
|
|
|
|
|
|
|
2179 |
msgid "Love it"
|
2180 |
msgstr ""
|
2181 |
|
2182 |
# @ squirrly-seo
|
2183 |
-
#:
|
2184 |
msgid "Please tell us why?"
|
2185 |
msgstr "Bitte sagen Sie uns, warum?"
|
2186 |
|
2187 |
# @ squirrly-seo
|
2188 |
-
#:
|
2189 |
msgid "Send feedback"
|
2190 |
msgstr "Feedback senden"
|
2191 |
|
|
|
|
|
|
|
|
|
|
|
2192 |
# @ squirrly-seo
|
2193 |
-
#:
|
2194 |
msgid "Thank you! You can send us a happy face tomorow too."
|
2195 |
msgstr "Danke! Sie können uns auch morgen ein fröhliches Gesicht senden."
|
2196 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2197 |
# @ squirrly-seo
|
2198 |
-
#:
|
2199 |
msgid "Squirrly.co Login"
|
2200 |
msgstr "Squirrly.co Login"
|
2201 |
|
2202 |
# @ squirrly-seo
|
2203 |
-
#:
|
2204 |
msgid "Email:"
|
2205 |
msgstr "Ihre E-Mail Adresse:"
|
2206 |
|
2207 |
# @ squirrly-seo
|
2208 |
-
#:
|
2209 |
msgid "Password:"
|
2210 |
msgstr "Passwort:"
|
2211 |
|
2212 |
# @ squirrly-seo
|
2213 |
-
#:
|
2214 |
msgid "Login"
|
2215 |
msgstr "Login"
|
2216 |
|
2217 |
# @ squirrly-seo
|
2218 |
-
#:
|
2219 |
msgid "Register"
|
2220 |
msgstr "Registrieren"
|
2221 |
|
2222 |
# @ squirrly-seo
|
2223 |
-
#:
|
2224 |
msgid "Register to Squirrly.co"
|
2225 |
msgstr "Bei Squirrly.co registrieren"
|
2226 |
|
2227 |
# @ squirrly-seo
|
2228 |
-
#:
|
2229 |
msgid "Lost password?"
|
2230 |
msgstr "Passwort vergessen?"
|
2231 |
|
2232 |
# @ squirrly-seo
|
2233 |
-
#:
|
2234 |
msgid "Lost password"
|
2235 |
msgstr "Passwort vergessen"
|
2236 |
|
2237 |
# @ squirrly-seo
|
2238 |
-
#:
|
2239 |
msgid "Enter your email"
|
2240 |
msgstr "In Artikel einfügen"
|
2241 |
|
2242 |
-
#:
|
2243 |
msgid "Your Email:"
|
2244 |
msgstr ""
|
2245 |
|
2246 |
-
#:
|
|
|
|
|
|
|
|
|
|
|
2247 |
msgid "Sign Up"
|
2248 |
msgstr "Anmelden"
|
2249 |
|
2250 |
-
#:
|
2251 |
msgid "I already have an account"
|
2252 |
msgstr ""
|
2253 |
|
2254 |
-
#:
|
2255 |
msgid "This email connects you to Squirrly.co"
|
2256 |
msgstr "This email connects you to Squirrly.co"
|
2257 |
|
2258 |
# @ squirrly-seo
|
2259 |
-
#:
|
2260 |
msgid "The email address is invalid!"
|
2261 |
msgstr "Die E-Mail-Adresse ist ungültig!"
|
2262 |
|
2263 |
# @ squirrly-seo
|
2264 |
-
#:
|
2265 |
msgid "Click on Sign Up button and try again ..."
|
2266 |
msgstr "Klicken Sie auf das Bild und versuchen Sie es erneut ..."
|
2267 |
|
2268 |
# @ squirrly-seo
|
2269 |
-
#:
|
2270 |
msgid "An error occured while logging in!"
|
2271 |
msgstr "Bei der Anmeldung ist ein Fehler aufgetreten!"
|
2272 |
|
2273 |
# @ squirrly-seo
|
2274 |
-
#:
|
2275 |
msgid "Connecting ..."
|
2276 |
msgstr "Verbinden ..."
|
2277 |
|
2278 |
-
#:
|
2279 |
-
msgid "Restore Squirrly Settings"
|
2280 |
-
msgstr ""
|
2281 |
-
|
2282 |
-
#: themes/default/SQ_Blocklogin.php:64
|
2283 |
msgid "Congratulations! You are ready to use all the features from Squirrly"
|
2284 |
msgstr ""
|
2285 |
|
2286 |
-
|
2287 |
-
#: themes/default/SQ_Blockresearch.php:2
|
2288 |
-
msgid "Squirrly Keyword Research"
|
2289 |
-
msgstr "Squirrly Erweiterte Suche!"
|
2290 |
-
|
2291 |
-
# @ squirrly-seo
|
2292 |
-
#: themes/default/SQ_Blockresearch.php:3
|
2293 |
-
msgid "Clear"
|
2294 |
-
msgstr "Löschen"
|
2295 |
-
|
2296 |
-
# @ squirrly-seo
|
2297 |
-
#: themes/default/SQ_Blockresearch.php:39
|
2298 |
-
msgid "Keyword:"
|
2299 |
-
msgstr "Schlüsselwort:"
|
2300 |
-
|
2301 |
-
# @ squirrly-seo
|
2302 |
-
#: themes/default/SQ_Blockresearch.php:41 themes/default/SQ_Blocksearch.php:26
|
2303 |
-
msgid "Use this keyword"
|
2304 |
-
msgstr "Dieses Schlüsselwort verwenden"
|
2305 |
-
|
2306 |
-
# @ squirrly-seo
|
2307 |
-
#: themes/default/SQ_Blockresearch.php:50
|
2308 |
-
msgid "+ Add keyword"
|
2309 |
-
msgstr "Fügen Sie ein anderes Schlüsselwort ein"
|
2310 |
-
|
2311 |
-
# @ squirrly-seo
|
2312 |
-
#: themes/default/SQ_Blockresearch.php:51
|
2313 |
-
msgid "Do the research"
|
2314 |
-
msgstr "Recherchieren"
|
2315 |
-
|
2316 |
-
# @ squirrly-seo
|
2317 |
-
#: themes/default/SQ_Blockresearch.php:54
|
2318 |
-
msgid "Enter even more keywords."
|
2319 |
-
msgstr "Geben Sie noch mehrere Schlüsselwörter ein."
|
2320 |
-
|
2321 |
-
# @ squirrly-seo
|
2322 |
-
#: themes/default/SQ_Blockresearch.php:55
|
2323 |
-
msgid "Let some keywords for the next time as well!"
|
2324 |
-
msgstr "Lassen Sie ein paar Schlüsselwörter auch für das nächste Mal!"
|
2325 |
-
|
2326 |
-
#: themes/default/SQ_Blocksearch.php:1
|
2327 |
msgid "Waiting for your editor to load .. "
|
2328 |
msgstr ""
|
2329 |
|
2330 |
-
#:
|
2331 |
msgid ""
|
2332 |
"Javascript is disabled! You need to activate the javascript in order to use "
|
2333 |
"Squirrly SEO."
|
2334 |
msgstr ""
|
2335 |
|
2336 |
-
#:
|
2337 |
msgid "Optimize for Keyword"
|
2338 |
msgstr "Schlüsselwort optimieren"
|
2339 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2340 |
# @ squirrly-seo
|
2341 |
-
#:
|
2342 |
msgid "Enter a keyword"
|
2343 |
msgstr "Ein Schlüsselwort eingeben"
|
2344 |
|
2345 |
# @ squirrly-seo
|
2346 |
-
#:
|
2347 |
msgid "for Squirrly Live SEO optimization"
|
2348 |
msgstr "Live-SEO-Optimierung für Squirrly"
|
2349 |
|
2350 |
# @ squirrly-seo
|
2351 |
-
#:
|
2352 |
msgid "Do a research"
|
2353 |
msgstr "Recherchieren"
|
2354 |
|
2355 |
# @ squirrly-seo
|
2356 |
-
#:
|
|
|
|
|
|
|
|
|
|
|
2357 |
msgid "Enter a keyword above!"
|
2358 |
msgstr "Geben Sie oben ein Schlüsselwort ein!"
|
2359 |
|
2360 |
# @ squirrly-seo
|
2361 |
-
#:
|
2362 |
msgid "I have more then one keyword!"
|
2363 |
msgstr "Ich habe mehr als ein Schlüsselwort!"
|
2364 |
|
2365 |
# @ squirrly-seo
|
2366 |
-
#:
|
2367 |
msgid "Images"
|
2368 |
msgstr "Bilder"
|
2369 |
|
2370 |
# @ squirrly-seo
|
2371 |
-
#:
|
2372 |
msgid "Twitter"
|
2373 |
msgstr "Twitter"
|
2374 |
|
2375 |
# @ squirrly-seo
|
2376 |
-
#:
|
2377 |
msgid "Wiki"
|
2378 |
msgstr "Wiki"
|
2379 |
|
2380 |
# @ squirrly-seo
|
2381 |
-
#:
|
2382 |
-
msgid "News"
|
2383 |
-
msgstr "News"
|
2384 |
-
|
2385 |
-
# @ squirrly-seo
|
2386 |
-
#: themes/default/SQ_Blocksearch.php:41
|
2387 |
msgid "Blogs"
|
2388 |
msgstr "Blogs"
|
2389 |
|
2390 |
# @ squirrly-seo
|
2391 |
-
#:
|
2392 |
msgid "My articles"
|
2393 |
msgstr "Meine Artikel"
|
2394 |
|
2395 |
# @ squirrly-seo
|
2396 |
-
#:
|
2397 |
msgid "Show only Copyright Free images"
|
2398 |
msgstr "Nur urheberrechtfreie Bilder zeigen"
|
2399 |
|
2400 |
-
#:
|
2401 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2402 |
msgstr ""
|
2403 |
|
2404 |
-
#:
|
2405 |
-
msgid "
|
2406 |
msgstr ""
|
2407 |
|
2408 |
-
#:
|
2409 |
-
|
|
|
2410 |
msgstr ""
|
2411 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2412 |
# @ squirrly-seo
|
2413 |
#~ msgid "Notice: "
|
2414 |
#~ msgstr "Hinweis: "
|
1 |
msgid ""
|
2 |
msgstr ""
|
3 |
+
"Project-Id-Version: Squirrly SEO Plugin \n"
|
4 |
"Report-Msgid-Bugs-To: \n"
|
5 |
+
"POT-Creation-Date: 2017-10-24 10:08+0300\n"
|
6 |
+
"PO-Revision-Date: 2017-10-24 10:08+0300\n"
|
7 |
"Last-Translator: Squirrly <contact@squirrly.co>\n"
|
8 |
"Language-Team: \n"
|
9 |
"Language: de_DE\n"
|
11 |
"Content-Type: text/plain; charset=UTF-8\n"
|
12 |
"Content-Transfer-Encoding: 8bit\n"
|
13 |
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
14 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
15 |
"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
|
16 |
"_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n"
|
17 |
"X-Poedit-Basepath: ..\n"
|
18 |
"X-Textdomain-Support: yes\n"
|
19 |
+
"X-Generator: Poedit 1.8.2\n"
|
20 |
"X-Poedit-SearchPath-0: .\n"
|
21 |
|
22 |
# @ squirrly-seo
|
23 |
+
#: classes/Error.php:16
|
24 |
msgid ""
|
25 |
"Function get_class does not exists! Is required for Squirrly to work "
|
26 |
"properly."
|
29 |
"richtig zu arbeiten."
|
30 |
|
31 |
# @ squirrly-seo
|
32 |
+
#: classes/Error.php:19
|
33 |
msgid ""
|
34 |
"Function file_exists does not exists! Is required for Squirrly to work "
|
35 |
"properly."
|
38 |
"richtig zu arbeiten."
|
39 |
|
40 |
# @ squirrly-seo
|
41 |
+
#: classes/Error.php:23
|
42 |
msgid "The home directory is not set!"
|
43 |
msgstr "Das Home-Verzeichnis wurde nicht gesetzt!"
|
44 |
|
45 |
# @ squirrly-seo
|
46 |
+
#: classes/Error.php:27
|
47 |
msgid "The PHP version has to be greater then 4.0"
|
48 |
msgstr "Die PHP-Version muß größer als 4.0 sein"
|
49 |
|
50 |
# @ squirrly-seo
|
51 |
+
#: classes/Error.php:65
|
52 |
msgid "Turn off warnings!"
|
53 |
msgstr "Warnungen ausschalten!"
|
54 |
|
55 |
+
#: classes/Error.php:73
|
56 |
msgid "Don't bother me!"
|
57 |
msgstr ""
|
58 |
|
59 |
+
#: classes/Tools.php:59
|
60 |
msgid "Getting started"
|
61 |
msgstr ""
|
62 |
|
63 |
+
#: classes/Tools.php:238
|
64 |
+
msgid "Format"
|
65 |
+
msgstr ""
|
66 |
+
|
67 |
+
#: classes/Tools.php:246 classes/Tools.php:262
|
68 |
+
msgid "Category"
|
69 |
+
msgstr ""
|
70 |
+
|
71 |
+
#: classes/Tools.php:254 classes/Tools.php:270
|
72 |
+
msgid "Tag"
|
73 |
+
msgstr ""
|
74 |
+
|
75 |
+
#: classes/Tools.php:278
|
76 |
+
msgid "Shipping Option"
|
77 |
+
msgstr ""
|
78 |
+
|
79 |
+
#: classes/Tools.php:286
|
80 |
+
msgid "Author at"
|
81 |
+
msgstr ""
|
82 |
+
|
83 |
+
#: classes/Tools.php:318
|
84 |
+
msgid "You searched for"
|
85 |
+
msgstr ""
|
86 |
+
|
87 |
+
#: classes/Tools.php:334
|
88 |
+
msgid "Page not found"
|
89 |
+
msgstr ""
|
90 |
+
|
91 |
# @ squirrly-seo
|
92 |
+
#: classes/Tools.php:855
|
93 |
msgid "Fix it for me!"
|
94 |
msgstr "Beheben Sie es für mich!"
|
95 |
|
96 |
+
#: classes/Tools.php:861
|
97 |
msgid "Activate the Squirrly SEO for your blog (recommended)"
|
98 |
msgstr ""
|
99 |
|
100 |
+
#: classes/Tools.php:872
|
101 |
msgid ""
|
102 |
"You have META Title Duplicates. Disable the Squirrly Title Optimization or "
|
103 |
"disable the other SEO Plugins"
|
104 |
msgstr ""
|
105 |
|
106 |
+
#: classes/Tools.php:880
|
107 |
msgid ""
|
108 |
"You have META Description Duplicates. Disable the Squirrly Description "
|
109 |
"Optimization or disable the other SEO Plugins"
|
110 |
msgstr ""
|
111 |
|
112 |
+
#: classes/Tools.php:888
|
113 |
msgid ""
|
114 |
"You have Open Graph META Duplicates. Disable the Squirrly SEO Open Graph or "
|
115 |
"disable the other SEO Plugins"
|
116 |
msgstr ""
|
117 |
|
118 |
+
#: classes/Tools.php:896
|
119 |
msgid ""
|
120 |
"You have Twitter Card META Duplicates. Disable the Squirrly SEO Twitter Card "
|
121 |
"or disable the other SEO Plugins"
|
122 |
msgstr ""
|
123 |
|
124 |
# @ squirrly-seo
|
125 |
+
#: classes/Tools.php:905
|
126 |
msgid "You're blocking google from indexing your site!"
|
127 |
msgstr "Sie blockieren Google zum Indizieren Ihrer Website!"
|
128 |
|
129 |
+
#: classes/Tools.php:912
|
130 |
msgid ""
|
131 |
"It is highly recommended that you include the %postname% variable in the "
|
132 |
"permalink structure. <br />Go to Settings > Permalinks and add /%postname%/ "
|
133 |
"in Custom Structure"
|
134 |
msgstr ""
|
135 |
|
136 |
+
#: classes/Tools.php:919
|
137 |
+
msgid ""
|
138 |
+
"It is highly recommended to change or remove the default Wordpress Tagline. "
|
139 |
+
"<br />Go to Settings > General > Tagline"
|
140 |
+
msgstr ""
|
141 |
+
|
142 |
+
#: classes/Tools.php:925
|
143 |
msgid "Great! We didn't find any issue in your site."
|
144 |
msgstr ""
|
145 |
|
146 |
+
#: classes/Tools.php:1070
|
147 |
+
msgid "Just another WordPress site"
|
148 |
+
msgstr ""
|
149 |
+
|
150 |
+
#: config/config.php:43
|
151 |
+
msgid "Displays the date of the post/page once it's published"
|
152 |
+
msgstr ""
|
153 |
+
|
154 |
+
#: config/config.php:44
|
155 |
+
msgid "Adds the title of the post/page once it’s published"
|
156 |
+
msgstr ""
|
157 |
+
|
158 |
+
#: config/config.php:45
|
159 |
+
msgid "Displays the number of the current page (i.e. 1 of 6)"
|
160 |
+
msgstr ""
|
161 |
+
|
162 |
+
#: config/config.php:46
|
163 |
+
msgid "Adds the title of a page's parent page"
|
164 |
+
msgstr ""
|
165 |
+
|
166 |
+
#: config/config.php:47
|
167 |
+
msgid "Adds the site's name to the post description"
|
168 |
+
msgstr ""
|
169 |
+
|
170 |
+
#: config/config.php:48
|
171 |
+
msgid "Adds the tagline/description of your site"
|
172 |
+
msgstr ""
|
173 |
+
|
174 |
+
#: config/config.php:49
|
175 |
+
msgid ""
|
176 |
+
"Will display an excerpt from the post/page (if not customized, the excerpt "
|
177 |
+
"will be auto-generated)"
|
178 |
+
msgstr ""
|
179 |
+
|
180 |
+
#: config/config.php:50
|
181 |
+
msgid "Will display an excerpt from the post/page (no auto-generation)"
|
182 |
+
msgstr ""
|
183 |
+
|
184 |
+
#: config/config.php:51
|
185 |
+
msgid "Adds the current tag(s) to the post description"
|
186 |
+
msgstr ""
|
187 |
+
|
188 |
+
#: config/config.php:52
|
189 |
+
msgid "Adds the post category (several categories will be comma-separated)"
|
190 |
+
msgstr ""
|
191 |
+
|
192 |
+
#: config/config.php:53
|
193 |
+
msgid "Adds the primary category of the post/page"
|
194 |
+
msgstr ""
|
195 |
+
|
196 |
+
#: config/config.php:54
|
197 |
+
msgid "Adds the category description to the post description"
|
198 |
+
msgstr ""
|
199 |
+
|
200 |
+
#: config/config.php:55
|
201 |
+
msgid "Adds the tag description"
|
202 |
+
msgstr ""
|
203 |
+
|
204 |
+
#: config/config.php:56
|
205 |
+
msgid "Adds the term description"
|
206 |
+
msgstr ""
|
207 |
+
|
208 |
+
#: config/config.php:57
|
209 |
+
msgid "Adds the term name"
|
210 |
+
msgstr ""
|
211 |
+
|
212 |
+
#: config/config.php:58
|
213 |
+
msgid "Displays the search phrase (if it appears in the post)"
|
214 |
+
msgstr ""
|
215 |
+
|
216 |
+
#: config/config.php:59
|
217 |
+
msgid "Places a separator between the elements of the post description"
|
218 |
+
msgstr ""
|
219 |
+
|
220 |
+
#: config/config.php:60
|
221 |
+
msgid "Replaces the publication date of a post/page with the modified one"
|
222 |
+
msgstr ""
|
223 |
+
|
224 |
+
#: config/config.php:61
|
225 |
+
msgid "Displays the author's nicename"
|
226 |
+
msgstr ""
|
227 |
+
|
228 |
+
#: config/config.php:62
|
229 |
+
msgid "Adds the author's biographical info to the post description"
|
230 |
+
msgstr ""
|
231 |
+
|
232 |
+
#: config/config.php:63
|
233 |
+
msgid "Displays the current date of a post/page"
|
234 |
+
msgstr ""
|
235 |
+
|
236 |
+
#: config/config.php:64
|
237 |
+
msgid "Adds the post's keyword to the post description"
|
238 |
+
msgstr ""
|
239 |
+
|
240 |
+
#: controllers/Api.php:40
|
241 |
+
msgid "Connection expired. Please try again"
|
242 |
+
msgstr ""
|
243 |
+
|
244 |
+
#: controllers/Api.php:54 controllers/Api.php:57 controllers/Api.php:60
|
245 |
+
msgid "Author not found"
|
246 |
+
msgstr ""
|
247 |
+
|
248 |
+
#: controllers/FrontMenu.php:32
|
249 |
+
msgid "You don't have enough pemission to edit this article"
|
250 |
+
msgstr ""
|
251 |
+
|
252 |
+
#: controllers/Menu.php:44 controllers/Menu.php:55
|
253 |
+
#, php-format
|
254 |
+
msgid ""
|
255 |
+
"Good news, %s is integrated in Squirrly SEO now and you don't have to run 2 "
|
256 |
+
"plugins anymore"
|
257 |
+
msgstr ""
|
258 |
+
|
259 |
+
#: controllers/Menu.php:99
|
260 |
msgid "See Your Rank on Google"
|
261 |
msgstr ""
|
262 |
|
263 |
+
#: controllers/Menu.php:151
|
264 |
+
msgid "Custom SEO"
|
265 |
+
msgstr ""
|
266 |
+
|
267 |
+
#: controllers/Menu.php:194
|
268 |
msgid ""
|
269 |
"Check out the Squirrly Analytics section. <a href=\"admin.php?page=sq_posts"
|
270 |
"\" title=\"Squirrly Analytics\">Click here</a>"
|
271 |
msgstr ""
|
272 |
|
273 |
+
#: controllers/Menu.php:213
|
274 |
+
msgid " Dashboard"
|
275 |
msgstr ""
|
276 |
|
277 |
+
#: controllers/Menu.php:214
|
278 |
msgid "First Step"
|
279 |
msgstr ""
|
280 |
|
281 |
+
#: controllers/Menu.php:214
|
282 |
msgid "Dashboard"
|
283 |
msgstr ""
|
284 |
|
285 |
+
#: controllers/Menu.php:223
|
286 |
+
msgid " Performance Analytics"
|
287 |
msgstr ""
|
288 |
|
289 |
+
#: controllers/Menu.php:224
|
290 |
msgid "Performance <br />Analytics"
|
291 |
msgstr ""
|
292 |
|
293 |
+
#: controllers/Menu.php:232
|
294 |
+
msgid " Keyword Research"
|
295 |
msgstr ""
|
296 |
|
297 |
+
#: controllers/Menu.php:233
|
298 |
+
msgid "Keyword Research"
|
299 |
+
msgstr ""
|
300 |
+
|
301 |
+
#: controllers/Menu.php:240
|
302 |
+
msgid " Live Assistant"
|
303 |
+
msgstr ""
|
304 |
+
|
305 |
+
#: controllers/Menu.php:241
|
306 |
+
msgid "Live Assistant"
|
307 |
+
msgstr ""
|
308 |
+
|
309 |
+
#: controllers/Menu.php:247
|
310 |
+
msgid " Copywriting"
|
311 |
+
msgstr ""
|
312 |
+
|
313 |
+
#: controllers/Menu.php:248
|
314 |
+
msgid "Copywriting"
|
315 |
+
msgstr ""
|
316 |
+
|
317 |
+
#: controllers/Menu.php:256
|
318 |
+
msgid " SEO Audit"
|
319 |
+
msgstr ""
|
320 |
+
|
321 |
+
#: controllers/Menu.php:257
|
322 |
+
msgid "Site Audit"
|
323 |
+
msgstr ""
|
324 |
+
|
325 |
+
#: controllers/Menu.php:265
|
326 |
+
msgid " SEO Settings"
|
327 |
+
msgstr ""
|
328 |
+
|
329 |
+
#: controllers/Menu.php:266 view/BlockToolbar.php:4
|
330 |
+
msgid "SEO Settings"
|
331 |
+
msgstr ""
|
332 |
+
|
333 |
+
#: controllers/Menu.php:274
|
334 |
+
msgid " Advanced Settings"
|
335 |
+
msgstr ""
|
336 |
+
|
337 |
+
#: controllers/Menu.php:275 view/BlockSettings.php:22
|
338 |
+
msgid "Advanced Settings"
|
339 |
msgstr ""
|
340 |
|
341 |
+
#: controllers/Menu.php:282
|
342 |
+
msgid " SEO Patterns"
|
343 |
msgstr ""
|
344 |
|
345 |
+
#: controllers/Menu.php:283 view/BlockToolbar.php:14
|
346 |
+
msgid "Patterns"
|
347 |
msgstr ""
|
348 |
|
349 |
+
#: controllers/Menu.php:290
|
350 |
+
msgid " Account Info"
|
351 |
msgstr ""
|
352 |
|
353 |
+
#: controllers/Menu.php:291
|
354 |
msgid "Account Info"
|
355 |
msgstr ""
|
356 |
|
357 |
+
#: controllers/Menu.php:298
|
358 |
+
msgid " Support"
|
359 |
+
msgstr ""
|
360 |
+
|
361 |
+
# @ squirrly-seo
|
362 |
+
#: controllers/Menu.php:299 view/BlockSupport.php:18
|
363 |
+
msgid "Support"
|
364 |
+
msgstr "Support"
|
365 |
+
|
366 |
+
#: controllers/Menu.php:306
|
367 |
msgid "Become an Affiliate with "
|
368 |
msgstr ""
|
369 |
|
370 |
+
#: controllers/Menu.php:307
|
371 |
+
msgid "Become an Affiliate"
|
372 |
+
msgstr ""
|
373 |
+
|
374 |
+
#: controllers/Menu.php:315
|
375 |
+
msgid "Import SEO "
|
376 |
+
msgstr ""
|
377 |
+
|
378 |
+
#: controllers/Menu.php:316 view/BlockImport.php:77
|
379 |
+
msgid "Import SEO"
|
380 |
+
msgstr ""
|
381 |
+
|
382 |
+
#: controllers/Menu.php:343
|
383 |
+
#, php-format
|
384 |
+
msgid "Go back and complete the Squirrly Tasks for today %sContinue%s"
|
385 |
+
msgstr ""
|
386 |
+
|
387 |
+
#: controllers/Menu.php:355
|
388 |
+
msgid "SEO Snippet"
|
389 |
msgstr ""
|
390 |
|
391 |
+
#: controllers/PostsList.php:102
|
392 |
msgid "Squirrly"
|
393 |
msgstr ""
|
394 |
|
395 |
+
#: controllers/PostsList.php:129
|
396 |
msgid "Custom description: "
|
397 |
msgstr ""
|
398 |
|
399 |
+
#: controllers/PostsList.php:129
|
400 |
msgid "Custom title: "
|
401 |
msgstr ""
|
402 |
|
403 |
+
#: controllers/PostsList.php:167
|
404 |
msgid "SEO Analytics, by Squirrly"
|
405 |
msgstr ""
|
406 |
|
407 |
+
#: controllers/PostsList.php:168 view/Blockseo.php:10
|
408 |
msgid "Update"
|
409 |
msgstr ""
|
410 |
|
411 |
+
#: controllers/PostsList.php:172
|
412 |
msgid "Not Public"
|
413 |
msgstr ""
|
414 |
|
415 |
+
#: controllers/PostsList.php:173
|
416 |
msgid "Could not process"
|
417 |
msgstr ""
|
418 |
|
419 |
+
#: controllers/PostsList.php:328 controllers/PostsList.php:346
|
420 |
+
#, php-format
|
421 |
+
msgid "Not in top 100 for: %s"
|
|
|
|
|
|
|
|
|
422 |
msgstr ""
|
423 |
|
424 |
+
#: controllers/PostsList.php:330 controllers/PostsList.php:348
|
425 |
+
msgid "The URL is Indexed"
|
426 |
msgstr ""
|
427 |
|
428 |
+
#: controllers/PostsList.php:332 controllers/PostsList.php:350
|
429 |
+
#: models/BlockPostsAnalytics.php:438
|
430 |
#, php-format
|
431 |
msgid "%s"
|
432 |
msgstr ""
|
433 |
|
434 |
+
#: core/BlockAffiliate.php:38
|
435 |
#, php-format
|
436 |
msgid "Error: %s"
|
437 |
msgstr ""
|
438 |
|
439 |
+
#: core/BlockAffiliate.php:41
|
440 |
msgid "An error occured. Mabe a network error :("
|
441 |
msgstr ""
|
442 |
|
443 |
+
#: core/BlockImport.php:32
|
444 |
+
msgid "All the Plugin settings were imported successfuly!"
|
445 |
+
msgstr ""
|
446 |
+
|
447 |
+
#: core/BlockImport.php:34
|
448 |
+
msgid "No settings found for this plugin/theme."
|
449 |
+
msgstr ""
|
450 |
+
|
451 |
+
#: core/BlockImport.php:56
|
452 |
+
#, php-format
|
453 |
+
msgid ""
|
454 |
+
"%s SEO records were imported successfuly! You can now deactivate the %s "
|
455 |
+
"plugin"
|
456 |
+
msgstr ""
|
457 |
+
|
458 |
+
#: core/BlockImport.php:58
|
459 |
+
#, php-format
|
460 |
+
msgid ""
|
461 |
+
"There are no SEO records with this plugin. You can now deactivate the %s "
|
462 |
+
"plugin"
|
463 |
+
msgstr ""
|
464 |
+
|
465 |
+
#: core/BlockSettingsSeo.php:26
|
466 |
+
#, php-format
|
467 |
+
msgid "You can now import into Squirrly SEO all the SEO Settings from %s"
|
468 |
+
msgstr ""
|
469 |
+
|
470 |
+
#: core/BlockSettingsSeo.php:35 core/Blockseo.php:13
|
471 |
msgid "Too short"
|
472 |
msgstr ""
|
473 |
|
474 |
+
#: core/BlockSettingsSeo.php:36 core/Blockseo.php:14
|
|
|
475 |
msgid "Too long"
|
476 |
msgstr ""
|
477 |
|
478 |
+
#: core/BlockSettingsSeo.php:63
|
479 |
+
msgid "You don't have enough pemission to activate this feature"
|
480 |
+
msgstr ""
|
481 |
+
|
482 |
+
#: core/BlockSettingsSeo.php:435
|
483 |
msgid "Great! The backup is restored."
|
484 |
msgstr ""
|
485 |
|
486 |
+
#: core/BlockSettingsSeo.php:437 core/BlockSettingsSeo.php:440
|
487 |
+
#: core/BlockSettingsSeo.php:485 core/BlockSettingsSeo.php:488
|
488 |
msgid "Error! The backup is not valid."
|
489 |
msgstr ""
|
490 |
|
491 |
+
#: core/BlockSettingsSeo.php:443 core/BlockSettingsSeo.php:491
|
492 |
msgid "Error! You have to enter a previous saved backup file."
|
493 |
msgstr ""
|
494 |
|
495 |
+
#: core/BlockSettingsSeo.php:482
|
496 |
+
msgid "Great! The SEO backup is restored."
|
497 |
+
msgstr ""
|
498 |
+
|
499 |
+
#: core/BlockSettingsSeo.php:498
|
500 |
+
msgid "Great! Squirrly Data Settings is up to date now."
|
501 |
+
msgstr ""
|
502 |
+
|
503 |
# @ squirrly-seo
|
504 |
+
#: core/BlockSupport.php:22
|
505 |
msgid "Plugin Feedback"
|
506 |
msgstr "Plugin Feedback"
|
507 |
|
508 |
# @ squirrly-seo
|
509 |
+
#: core/BlockSupport.php:58
|
510 |
msgid "Thank you for your feedback"
|
511 |
msgstr "Vielen Dank für Ihre Feedback"
|
512 |
|
513 |
# @ squirrly-seo
|
514 |
+
#: core/BlockSupport.php:61 core/BlockSupport.php:99
|
|
|
515 |
msgid "Could not send the email..."
|
516 |
msgstr "Konnte E-Mail nicht senden ..."
|
517 |
|
518 |
# @ squirrly-seo
|
519 |
+
#: core/BlockSupport.php:65 core/BlockSupport.php:103
|
|
|
520 |
msgid "No message."
|
521 |
msgstr "Keine Nachricht."
|
522 |
|
523 |
# @ squirrly-seo
|
524 |
+
#: core/BlockSupport.php:85
|
525 |
msgid "Plugin Support"
|
526 |
msgstr "Plugin Support"
|
527 |
|
528 |
+
#: core/BlockSupport.php:96
|
529 |
msgid "Message sent. Thank you!"
|
530 |
msgstr ""
|
531 |
|
532 |
# @ squirrly-seo
|
533 |
+
#: core/Blocklogin.php:81
|
534 |
#, php-format
|
535 |
msgid ""
|
536 |
"We found your email, so it means you already have a Squirrly.co account. "
|
541 |
"Sie sich mit Ihrer Squirrly-ID ein. Falls Sie Ihr Passwort vergessen haben, "
|
542 |
"klicken Sie %shier%s"
|
543 |
|
544 |
+
#: core/Blocklogin.php:86
|
545 |
msgid ""
|
546 |
"Error: Couldn't connect to host :( . Please contact your site's webhost (or "
|
547 |
"webmaster) and request them to add http://api.squirrly.co/ to their IP "
|
549 |
msgstr ""
|
550 |
|
551 |
# @ squirrly-seo
|
552 |
+
#: core/Blocklogin.php:89
|
553 |
#, php-format
|
554 |
msgid ""
|
555 |
"Could not send your informations to squirrly. Please register %smanually%s."
|
558 |
"%smanually%s."
|
559 |
|
560 |
# @ squirrly-seo
|
561 |
+
#: core/Blocklogin.php:129
|
562 |
msgid "Wrong email or password!"
|
563 |
msgstr "Benutzername oder Passwort falsch!"
|
564 |
|
565 |
# @ squirrly-seo
|
566 |
+
#: core/Blocklogin.php:132
|
567 |
msgid "You can use this account only for the URL you registered first!"
|
568 |
msgstr ""
|
569 |
"Dieses Konto können Sie nur für die URL benutzen, die Sie zuerst registriert "
|
570 |
"haben!"
|
571 |
|
572 |
# @ squirrly-seo
|
573 |
+
#: core/Blocklogin.php:137
|
574 |
msgid "An error occured."
|
575 |
msgstr "Ein Fehler ist aufgetreten."
|
576 |
|
577 |
# @ squirrly-seo
|
578 |
+
#: core/Blocklogin.php:139
|
579 |
msgid "Both fields are required."
|
580 |
msgstr "Beide Felder sind Pflichtfelder."
|
581 |
|
582 |
+
#: core/Blockseo.php:15
|
583 |
+
msgid "snippet"
|
584 |
+
msgstr ""
|
585 |
+
|
586 |
+
# @ squirrly-seo
|
587 |
+
#: core/Loading.php:21
|
588 |
+
msgid ""
|
589 |
+
"For Squirrly to work properly you have to use a higher version of Internet "
|
590 |
+
"Explorer. <br /> We recommend you to use Chrome or Mozilla."
|
591 |
+
msgstr ""
|
592 |
+
"Damit Squirrly ordnungsgemäß funktioniert, müssen Sie eine höhere Version "
|
593 |
+
"von Internet Explorer verwenden. <br /> Wir empfehlen, Chrome oder Mozilla."
|
594 |
+
|
595 |
+
#: core/Loading.php:47
|
596 |
msgid "Recent discussions:"
|
597 |
msgstr "Bisherige Diskussionen:"
|
598 |
|
599 |
+
#: core/Loading.php:47
|
600 |
+
msgid "SEO Search Volume:"
|
601 |
+
msgstr ""
|
|
|
602 |
|
603 |
# @ squirrly-seo
|
604 |
+
#: core/Loading.php:47
|
605 |
msgid "Competition:"
|
606 |
msgstr "Wettbewerb:"
|
607 |
|
608 |
# @ squirrly-seo
|
609 |
+
#: core/Loading.php:47
|
610 |
msgid "Trend:"
|
611 |
msgstr "Trend:"
|
612 |
|
613 |
# @ squirrly-seo
|
614 |
+
#: core/Loading.php:48
|
615 |
+
msgid "Keyword:"
|
616 |
+
msgstr "Schlüsselwort:"
|
617 |
+
|
618 |
+
# @ squirrly-seo
|
619 |
+
#: core/Loading.php:49
|
620 |
msgid "date"
|
621 |
msgstr "Datum"
|
622 |
|
623 |
# @ squirrly-seo
|
624 |
+
#: core/Loading.php:50
|
625 |
msgid "Read it!"
|
626 |
msgstr "Lesen!"
|
627 |
|
628 |
# @ squirrly-seo
|
629 |
+
#: core/Loading.php:51
|
630 |
msgid "Insert it!"
|
631 |
msgstr "Einfügen!"
|
632 |
|
633 |
# @ squirrly-seo
|
634 |
+
#: core/Loading.php:52
|
635 |
msgid "Reference"
|
636 |
msgstr "Referenz"
|
637 |
|
638 |
# @ squirrly-seo
|
639 |
+
#: core/Loading.php:53
|
640 |
msgid "Insert as box"
|
641 |
msgstr "Als Box einfügen"
|
642 |
|
643 |
+
#: core/Loading.php:54
|
644 |
+
msgid "Insert Link"
|
645 |
+
msgstr ""
|
646 |
+
|
647 |
# @ squirrly-seo
|
648 |
+
#: core/Loading.php:55
|
649 |
msgid "Not relevant?"
|
650 |
msgstr "Nicht relevant?"
|
651 |
|
652 |
# @ squirrly-seo
|
653 |
+
#: core/Loading.php:56
|
654 |
msgid "Insert in your article"
|
655 |
msgstr "In Artikel einfügen"
|
656 |
|
657 |
+
#: core/Loading.php:57
|
658 |
+
msgid ":( An error occurred while processing your request. Please try again"
|
659 |
+
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
660 |
|
661 |
# @ squirrly-seo
|
662 |
+
#: core/Loading.php:58
|
663 |
msgid "No results found!"
|
664 |
msgstr "Keine Ergebnisse gefunden!"
|
665 |
|
666 |
+
#: core/Loading.php:59
|
|
|
|
|
|
|
|
|
|
|
667 |
msgid "Enter one more word to find relevant results"
|
668 |
msgstr ""
|
669 |
|
670 |
# @ squirrly-seo
|
671 |
+
#: core/Loading.php:60
|
672 |
msgid "Takes too long to check this keyword ..."
|
673 |
msgstr "Dauert zu lange, um dieses Schlüsselwort zu überprüfen ..."
|
674 |
|
675 |
# @ squirrly-seo
|
676 |
+
#: core/Loading.php:61
|
677 |
msgid "Do a research!"
|
678 |
msgstr "Erweiterte Suche!"
|
679 |
|
680 |
# @ squirrly-seo
|
681 |
+
#: core/Loading.php:62
|
682 |
msgid "Do more research!"
|
683 |
msgstr "Erweiterte Suche!"
|
684 |
|
685 |
+
#: core/Loading.php:63
|
686 |
#, php-format
|
687 |
msgid "[ ATTRIBUTE: Please check: %s to find out how to attribute this image ]"
|
688 |
msgstr ""
|
689 |
|
690 |
+
#: core/Loading.php:64
|
691 |
msgid "Has creative commons attributes"
|
692 |
msgstr ""
|
693 |
|
694 |
+
#: core/Loading.php:65
|
695 |
msgid "No known copyright restrictions"
|
696 |
msgstr ""
|
697 |
|
698 |
+
#: core/Loading.php:66
|
699 |
+
msgid ""
|
700 |
+
"You haven`t used Squirrly SEO to optimize your article. Do you want to "
|
701 |
+
"optimize for a keyword before publishing?"
|
702 |
msgstr ""
|
703 |
+
"You haven`t used Squirrly SEO to optimize your article. Do you want to "
|
704 |
+
"optimize for a keyword before publishing?"
|
705 |
|
706 |
+
#: core/Loading.php:67
|
707 |
+
msgid "Keyword Research limit exceeded"
|
708 |
msgstr ""
|
709 |
|
710 |
+
#: core/Loading.php:68
|
711 |
+
msgid "Your Subscription has Expired"
|
712 |
msgstr ""
|
713 |
|
714 |
+
#: core/Loading.php:69
|
715 |
+
msgid "Add 20 Keyword Researches"
|
716 |
msgstr ""
|
717 |
|
718 |
+
#: core/Loading.php:70
|
719 |
+
msgid "There are no keywords saved in briefcase yet"
|
720 |
msgstr ""
|
721 |
|
722 |
+
#: core/Loading.php:71
|
723 |
+
#, php-format
|
724 |
+
msgid "Congratulations! Your article is 100% optimized!"
|
725 |
msgstr ""
|
726 |
|
727 |
+
#: core/Loading.php:72
|
728 |
+
#, php-format
|
729 |
+
msgid "appears too many times. Try to remove %s of them"
|
730 |
msgstr ""
|
731 |
|
732 |
+
#: core/Loading.php:73
|
733 |
+
#, php-format
|
734 |
+
msgid "write %s more words"
|
735 |
msgstr ""
|
736 |
|
737 |
+
#: core/Loading.php:74
|
738 |
+
#, php-format
|
739 |
+
msgid "Add the keyword in the %s of your article"
|
740 |
msgstr ""
|
741 |
|
742 |
+
#: core/Loading.php:75
|
743 |
+
msgid "Click to keep the highlight on"
|
|
|
|
|
|
|
744 |
msgstr ""
|
|
|
|
|
745 |
|
746 |
+
#: core/Loading.php:76
|
747 |
+
msgid "introduction"
|
748 |
+
msgstr ""
|
749 |
+
|
750 |
+
#: core/Loading.php:77
|
751 |
+
#, php-format
|
752 |
+
msgid "Write more words after the %s keyword"
|
753 |
+
msgstr ""
|
754 |
+
|
755 |
+
#: core/Loading.php:78
|
756 |
+
msgid "or use synonyms"
|
757 |
+
msgstr ""
|
758 |
+
|
759 |
+
#: core/Loading.php:79
|
760 |
+
#, php-format
|
761 |
+
msgid "add %s more word(s)"
|
762 |
+
msgstr ""
|
763 |
+
|
764 |
+
#: core/Loading.php:80
|
765 |
+
#, php-format
|
766 |
+
msgid "or remove %s word(s)"
|
767 |
+
msgstr ""
|
768 |
+
|
769 |
+
#: core/Loading.php:81
|
770 |
+
#, php-format
|
771 |
+
msgid "add %s more keyword(s)"
|
772 |
msgstr ""
|
|
|
|
|
773 |
|
774 |
+
#: core/Loading.php:82
|
775 |
+
#, php-format
|
776 |
+
msgid "write %s more words to start calculating"
|
777 |
+
msgstr ""
|
778 |
+
|
779 |
+
#: models/BlockPostsAnalytics.php:290
|
780 |
msgctxt "column name"
|
781 |
msgid "Title"
|
782 |
msgstr ""
|
783 |
|
784 |
+
#: models/BlockPostsAnalytics.php:292
|
785 |
msgid "Type"
|
786 |
msgstr ""
|
787 |
|
788 |
+
#: models/BlockPostsAnalytics.php:295 view/FrontMenu.php:364
|
789 |
msgid "Author"
|
790 |
msgstr ""
|
791 |
|
792 |
+
#: models/BlockPostsAnalytics.php:298
|
793 |
msgid "Keywords"
|
794 |
msgstr ""
|
795 |
|
796 |
+
#: models/BlockPostsAnalytics.php:300
|
797 |
#, php-format
|
798 |
msgid "Google.%s Position"
|
799 |
msgstr ""
|
800 |
|
801 |
+
#: models/BlockPostsAnalytics.php:303 view/BlockAudit.php:48
|
802 |
msgid "Date"
|
803 |
msgstr ""
|
804 |
|
805 |
+
#: models/BlockPostsAnalytics.php:317
|
806 |
msgid "Reset Filters"
|
807 |
msgstr ""
|
808 |
|
809 |
+
#: models/BlockPostsAnalytics.php:322
|
810 |
+
msgid "Search Posts"
|
811 |
+
msgstr ""
|
812 |
+
|
813 |
+
#: models/BlockPostsAnalytics.php:390
|
814 |
#, php-format
|
815 |
msgid "Edit “%s”"
|
816 |
msgstr ""
|
817 |
|
818 |
+
#: models/BlockPostsAnalytics.php:393
|
819 |
msgid "Edit this item"
|
820 |
msgstr ""
|
821 |
|
822 |
+
#: models/BlockPostsAnalytics.php:393
|
823 |
msgid "Edit"
|
824 |
msgstr ""
|
825 |
|
826 |
+
#: models/BlockPostsAnalytics.php:398
|
827 |
#, php-format
|
828 |
msgid "Preview “%s”"
|
829 |
msgstr ""
|
830 |
|
831 |
+
#: models/BlockPostsAnalytics.php:398
|
832 |
msgid "Preview"
|
833 |
msgstr ""
|
834 |
|
835 |
+
#: models/BlockPostsAnalytics.php:400
|
836 |
#, php-format
|
837 |
msgid "View “%s”"
|
838 |
msgstr ""
|
839 |
|
840 |
+
#: models/BlockPostsAnalytics.php:400
|
841 |
msgid "View"
|
842 |
msgstr ""
|
843 |
|
844 |
+
#: models/BlockPostsAnalytics.php:422
|
845 |
msgid "No Tags"
|
846 |
msgstr ""
|
847 |
|
848 |
+
#: models/BlockPostsAnalytics.php:432
|
849 |
+
msgid "Could not receive data from google (Err: blocked IP)"
|
850 |
+
msgstr ""
|
851 |
+
|
852 |
+
#: models/BlockPostsAnalytics.php:434
|
853 |
+
msgid "Not in top 100 for: <br /> \""
|
854 |
+
msgstr ""
|
855 |
+
|
856 |
+
#: models/BlockPostsAnalytics.php:436
|
857 |
+
msgid "The URL is indexed"
|
858 |
+
msgstr ""
|
859 |
+
|
860 |
+
#: models/BlockPostsAnalytics.php:440
|
861 |
msgid "Force recheck"
|
862 |
msgstr ""
|
863 |
|
864 |
+
#: models/BlockPostsAnalytics.php:442
|
865 |
msgid "Not yet verified"
|
866 |
msgstr ""
|
867 |
|
868 |
+
#: models/BlockPostsAnalytics.php:442
|
869 |
msgid "Check now"
|
870 |
msgstr ""
|
871 |
|
872 |
+
#: models/BlockPostsAnalytics.php:445
|
873 |
+
#, php-format
|
874 |
+
msgid "Enable Ranking in %sAdvanced Settings%s"
|
875 |
+
msgstr ""
|
876 |
+
|
877 |
+
#: models/BlockPostsAnalytics.php:457
|
878 |
msgid "Unpublished"
|
879 |
msgstr ""
|
880 |
|
881 |
+
#: models/BlockPostsAnalytics.php:466
|
882 |
#, php-format
|
883 |
msgid "%s ago"
|
884 |
msgstr ""
|
885 |
|
886 |
+
#: models/BlockPostsAnalytics.php:468
|
887 |
msgid "Y/m/d"
|
888 |
msgstr ""
|
889 |
|
890 |
+
#: models/BlockPostsAnalytics.php:473
|
891 |
msgid "Published"
|
892 |
msgstr ""
|
893 |
|
894 |
+
#: models/BlockPostsAnalytics.php:476
|
895 |
msgid "Missed schedule"
|
896 |
msgstr ""
|
897 |
|
898 |
+
#: models/BlockPostsAnalytics.php:478
|
899 |
msgid "Scheduled"
|
900 |
msgstr ""
|
901 |
|
902 |
+
#: models/BlockPostsAnalytics.php:480
|
903 |
msgid "Last Modified"
|
904 |
msgstr ""
|
905 |
|
906 |
# @ squirrly-seo
|
907 |
+
#: models/BlockSettingsSeo.php:71
|
908 |
msgid "The code for Google Webmaster Tool is incorrect."
|
909 |
msgstr "Der Code für Google Webmaster Tool ist falsch."
|
910 |
|
911 |
# @ squirrly-seo
|
912 |
+
#: models/BlockSettingsSeo.php:98
|
913 |
msgid "The code for Google Analytics is incorrect."
|
914 |
msgstr "Der Code für Google Analytics ist falsch."
|
915 |
|
916 |
# @ squirrly-seo
|
917 |
+
#: models/BlockSettingsSeo.php:144
|
918 |
msgid "The code for Facebook is incorrect."
|
919 |
msgstr "Der Code für Facebook ist falsch."
|
920 |
|
921 |
+
#: models/BlockSettingsSeo.php:169
|
922 |
msgid "The code for Pinterest is incorrect."
|
923 |
msgstr ""
|
924 |
|
925 |
# @ squirrly-seo
|
926 |
+
#: models/BlockSettingsSeo.php:194
|
927 |
msgid "The code for Bing is incorrect."
|
928 |
msgstr "Der Code für Bing ist falsch."
|
929 |
|
930 |
+
#: models/BlockSettingsSeo.php:320
|
|
|
|
|
|
|
|
|
931 |
msgid "File type error: Only ICO, JPEG, JPG, GIF or PNG files are allowed."
|
932 |
msgstr ""
|
933 |
|
934 |
# @ squirrly-seo
|
935 |
+
#: models/BlockSettingsSeo.php:326
|
936 |
msgid "GD error: The GD library must be installed on your server."
|
937 |
msgstr "GD Fehler: Die GD-Bibliothek muss auf dem Server installiert werden."
|
938 |
|
939 |
# @ squirrly-seo
|
940 |
+
#: models/BlockSettingsSeo.php:332
|
941 |
msgid "Delete error: Could not delete the old favicon."
|
942 |
msgstr "Lösch Fehler: Konnte das alte Favicon nicht löschen."
|
943 |
|
944 |
# @ squirrly-seo
|
945 |
+
#: models/BlockSettingsSeo.php:339
|
946 |
msgid "Upload error: Could not upload the favicon."
|
947 |
msgstr "Upload Fehler: Konnte das Favicon nicht hochladen."
|
948 |
|
949 |
# @ squirrly-seo
|
950 |
+
#: models/BlockSettingsSeo.php:345
|
951 |
msgid "Permission error: Could not change the favicon permissions."
|
952 |
msgstr "Permission Fehler: Konnte Favicon-Berechtigungen nicht ändern."
|
953 |
|
954 |
# @ squirrly-seo
|
955 |
+
#: models/BlockSettingsSeo.php:367
|
956 |
msgid ""
|
957 |
"ICO Error: Could not create the ICO from file. Try with another file type."
|
958 |
msgstr ""
|
960 |
"einem anderen Dateityp."
|
961 |
|
962 |
# @ squirrly-seo
|
963 |
+
#: models/BlockSettingsSeo.php:386
|
964 |
msgid "The favicon has been updated."
|
965 |
msgstr "Das Favicon wurde aktualisiert."
|
966 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
967 |
# @ default
|
968 |
+
#: models/Post.php:69
|
969 |
msgid "Squirrly could not find any results for: "
|
970 |
msgstr "Squirly hat keine Suchergebnisse gefunden für:"
|
971 |
|
972 |
+
#: models/Post.php:138
|
973 |
msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini."
|
974 |
msgstr ""
|
975 |
|
976 |
+
#: models/Post.php:139
|
977 |
msgid ""
|
978 |
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in "
|
979 |
"the HTML form."
|
980 |
msgstr ""
|
981 |
|
982 |
+
#: models/Post.php:140
|
983 |
msgid "The uploaded file was only partially uploaded."
|
984 |
msgstr ""
|
985 |
|
986 |
+
#: models/Post.php:141
|
987 |
msgid "No file was uploaded."
|
988 |
msgstr ""
|
989 |
|
990 |
+
#: models/Post.php:143
|
991 |
msgid "Missing a temporary folder."
|
992 |
msgstr ""
|
993 |
|
994 |
+
#: models/Post.php:144
|
995 |
msgid "Failed to write file to disk."
|
996 |
msgstr ""
|
997 |
|
998 |
+
#: models/Post.php:145
|
999 |
msgid "File upload stopped by extension."
|
1000 |
msgstr ""
|
1001 |
|
1002 |
+
#: models/Post.php:162
|
1003 |
msgid "Invalid form submission."
|
1004 |
msgstr ""
|
1005 |
|
1006 |
+
#: models/Post.php:172
|
1007 |
msgid "File is empty. Please upload something more substantial."
|
1008 |
msgstr ""
|
1009 |
|
1010 |
+
#: models/Post.php:174
|
1011 |
msgid ""
|
1012 |
"File is empty. Please upload something more substantial. This error could "
|
1013 |
"also be caused by uploads being disabled in your php.ini or by post_max_size "
|
1014 |
"being defined as smaller than upload_max_filesize in php.ini."
|
1015 |
msgstr ""
|
1016 |
|
1017 |
+
#: models/Post.php:180
|
1018 |
msgid "Specified file failed upload test."
|
1019 |
msgstr ""
|
1020 |
|
1021 |
+
#: models/Post.php:193
|
1022 |
msgid "Sorry, this file type is not permitted for security reasons."
|
1023 |
msgstr ""
|
1024 |
|
1025 |
+
#: models/Post.php:218
|
1026 |
#, php-format
|
1027 |
msgid "The uploaded file could not be moved to %s."
|
1028 |
msgstr ""
|
1029 |
|
1030 |
+
#: models/PostsList.php:27
|
1031 |
msgid "Optimized:"
|
1032 |
msgstr ""
|
1033 |
|
1034 |
+
#: models/PostsList.php:28
|
1035 |
msgid "See Analytics"
|
1036 |
msgstr ""
|
1037 |
|
1038 |
+
#: models/PostsList.php:30
|
1039 |
msgid "Optimize it with Squirrly to see the Analytics"
|
1040 |
msgstr ""
|
1041 |
|
1042 |
+
#: models/PostsList.php:83
|
1043 |
msgid "This post's current position in Google"
|
1044 |
msgstr ""
|
1045 |
|
1046 |
+
#: models/PostsList.php:86
|
1047 |
msgid "The total traffic for the last 30 days, for the current post"
|
1048 |
msgstr ""
|
1049 |
|
1050 |
+
#: models/PostsList.php:89
|
1051 |
msgid "The total number of shares on social media channels for this post"
|
1052 |
msgstr ""
|
1053 |
|
1054 |
+
#: models/PostsList.php:92
|
1055 |
msgid "The total authority for this post"
|
1056 |
msgstr ""
|
1057 |
|
1058 |
+
#: models/PostsList.php:95
|
1059 |
msgid "The total number of inbound links to this post"
|
1060 |
msgstr ""
|
1061 |
|
1062 |
+
#: models/domain/Patterns.php:214
|
1063 |
+
msgid "Page"
|
1064 |
+
msgstr ""
|
1065 |
+
|
1066 |
+
#: models/domain/Patterns.php:215
|
1067 |
+
msgid "of"
|
1068 |
+
msgstr ""
|
1069 |
+
|
1070 |
+
#: models/services/Robots.php:13
|
1071 |
+
msgid "Squirrly SEO Robots"
|
1072 |
+
msgstr ""
|
1073 |
+
|
1074 |
+
#: models/services/Robots.php:16
|
1075 |
+
msgid ""
|
1076 |
+
"Your blog is not public. Please see Site Visibility on Settings > Reading."
|
1077 |
+
msgstr ""
|
1078 |
+
|
1079 |
+
#: models/services/Robots.php:31
|
1080 |
+
msgid "No Squirrly SEO Robots found."
|
1081 |
+
msgstr ""
|
1082 |
+
|
1083 |
# @ squirrly-seo
|
1084 |
+
#: squirrly.php:63
|
1085 |
msgid ""
|
1086 |
"For Squirrly to work, the PHP version has to be equal or greater then 5.1"
|
1087 |
msgstr ""
|
1088 |
"Damit Squirrly funktioniert, muss die PHP-Version gleich oder größer als 5.1 "
|
1089 |
"sein"
|
1090 |
|
1091 |
+
#: view/BlockAccount.php:7 view/BlockAffiliate.php:7 view/BlockAudit.php:7
|
1092 |
+
#: view/BlockDashboard.php:6 view/BlockImport.php:7
|
1093 |
+
#: view/BlockKeywordResearch.php:7 view/BlockPatterns.php:7
|
1094 |
+
#: view/BlockPostsAnalytics.php:7 view/BlockSettings.php:7
|
1095 |
+
#: view/BlockSettingsSeo.php:7
|
1096 |
+
msgid "Connect to Squirrly Data Cloud"
|
1097 |
+
msgstr ""
|
1098 |
+
|
1099 |
+
#: view/BlockAccount.php:13 view/BlockAffiliate.php:13 view/BlockAudit.php:13
|
1100 |
+
#: view/BlockDashboard.php:28 view/BlockImport.php:13
|
1101 |
+
#: view/BlockKeywordResearch.php:13 view/BlockPatterns.php:13
|
1102 |
+
#: view/BlockPostsAnalytics.php:13 view/BlockSettings.php:13
|
1103 |
+
#: view/BlockSettingsSeo.php:13 view/Blocklogin.php:38
|
1104 |
+
msgid "START HERE"
|
1105 |
+
msgstr ""
|
1106 |
+
|
1107 |
+
#: view/BlockAccount.php:23
|
1108 |
msgid "Squirrly account information"
|
1109 |
msgstr ""
|
1110 |
|
1111 |
+
#: view/BlockAccount.php:25 view/BlockAffiliate.php:23
|
1112 |
msgid "Go to dashboard"
|
1113 |
msgstr ""
|
1114 |
|
1115 |
+
#: view/BlockAccount.php:26
|
1116 |
+
msgid "See ALL of Your Activity so Far"
|
1117 |
+
msgstr ""
|
1118 |
+
|
1119 |
+
#: view/BlockAffiliate.php:21 view/BlockAffiliate.php:33
|
1120 |
+
msgid "Join our affiliate program"
|
1121 |
msgstr ""
|
1122 |
|
1123 |
+
#: view/BlockAffiliate.php:34
|
1124 |
#, php-format
|
1125 |
msgid "%sHow I Started Making Money With the Squirrly Affiliate Program%s"
|
1126 |
msgstr ""
|
1127 |
|
1128 |
+
#: view/BlockAffiliate.php:37
|
1129 |
msgid "Affiliate Benefits"
|
1130 |
msgstr ""
|
1131 |
|
1132 |
+
#: view/BlockAffiliate.php:42
|
1133 |
#, php-format
|
1134 |
+
msgid "- Up to recurring 45%s commission"
|
1135 |
msgstr ""
|
1136 |
|
1137 |
+
#: view/BlockAffiliate.php:47
|
1138 |
msgid "- No cost"
|
1139 |
msgstr ""
|
1140 |
|
1141 |
+
#: view/BlockAffiliate.php:52
|
1142 |
msgid "- Monthly payments in your Paypal account"
|
1143 |
msgstr ""
|
1144 |
|
1145 |
+
#: view/BlockAffiliate.php:61
|
1146 |
+
#, php-format
|
1147 |
+
msgid ""
|
1148 |
+
"Before joining our affiliate program, please read the Terms of Use %shttps://"
|
1149 |
+
"www.squirrly.co/terms/%s."
|
1150 |
+
msgstr ""
|
1151 |
+
|
1152 |
+
#: view/BlockAffiliate.php:69
|
1153 |
msgid ""
|
1154 |
"To redirect users to your site, just change \"squirrly.co\" with your domain."
|
1155 |
msgstr ""
|
1156 |
|
1157 |
+
#: view/BlockAffiliate.php:72
|
1158 |
msgid "Generate affiliate link"
|
1159 |
msgstr ""
|
1160 |
|
1161 |
+
#: view/BlockAffiliate.php:81
|
1162 |
msgid ""
|
1163 |
"Your affiliate account is set and ready to go. Above you have the affiliate "
|
1164 |
"link. "
|
1165 |
msgstr ""
|
1166 |
|
1167 |
+
#: view/BlockAffiliate.php:83
|
1168 |
#, php-format
|
1169 |
msgid "Check your affiliate page: %sAffiliate page%s"
|
1170 |
msgstr ""
|
1171 |
|
1172 |
+
#: view/BlockAffiliate.php:86
|
1173 |
msgid ""
|
1174 |
"After you connect to Squirrly you can begin to use your free Squirrly "
|
1175 |
"affiliate link immediately!"
|
1176 |
msgstr ""
|
1177 |
|
1178 |
+
#: view/BlockAffiliate.php:96
|
1179 |
msgid "Squirrly banners you can use"
|
1180 |
msgstr ""
|
1181 |
|
1182 |
+
#: view/BlockAffiliate.php:121
|
1183 |
msgid "<< START HERE >>"
|
1184 |
msgstr ""
|
1185 |
|
1186 |
+
#: view/BlockAnalytics.php:55
|
1187 |
msgid "Moz Inbound Links"
|
1188 |
msgstr ""
|
1189 |
|
1190 |
+
#: view/BlockAnalytics.php:62
|
1191 |
msgid "Ahrefs Inbound Links"
|
1192 |
msgstr ""
|
1193 |
|
1194 |
+
#: view/BlockAnalytics.php:74
|
1195 |
msgid "Moz Authority"
|
1196 |
msgstr ""
|
1197 |
|
1198 |
+
#: view/BlockAnalytics.php:79
|
1199 |
msgid "Moz Rank"
|
1200 |
msgstr ""
|
1201 |
|
1202 |
+
#: view/BlockAnalytics.php:86
|
1203 |
msgid "Google Page Rank"
|
1204 |
msgstr ""
|
1205 |
|
1206 |
+
#: view/BlockAnalytics.php:92
|
1207 |
msgid "Ahrefs Rank"
|
1208 |
msgstr ""
|
1209 |
|
1210 |
+
#: view/BlockAnalytics.php:108
|
1211 |
msgid "Facebook shares"
|
1212 |
msgstr ""
|
1213 |
|
1214 |
+
#: view/BlockAnalytics.php:113
|
1215 |
msgid "Facebook likes"
|
1216 |
msgstr ""
|
1217 |
|
1218 |
+
#: view/BlockAnalytics.php:118
|
1219 |
msgid "Twitter shares"
|
1220 |
msgstr ""
|
1221 |
|
1222 |
+
#: view/BlockAnalytics.php:123
|
1223 |
msgid "Google+ shares"
|
1224 |
msgstr ""
|
1225 |
|
1226 |
+
#: view/BlockAnalytics.php:128
|
1227 |
msgid "LinkedIn Shares"
|
1228 |
msgstr ""
|
1229 |
|
1230 |
+
#: view/BlockAnalytics.php:133
|
1231 |
msgid "StumbleUpon shares"
|
1232 |
msgstr ""
|
1233 |
|
1234 |
+
#: view/BlockAnalytics.php:138
|
1235 |
msgid "Reddit shares"
|
1236 |
msgstr ""
|
1237 |
|
1238 |
+
#: view/BlockAnalytics.php:170
|
1239 |
msgid "Nicely done! Now you can focus on the other tasks"
|
1240 |
msgstr ""
|
1241 |
|
1242 |
+
#: view/BlockAnalytics.php:170
|
1243 |
msgid ""
|
1244 |
"I know you can improve this. Please follow the documentation for a quicker "
|
1245 |
"progress"
|
1246 |
msgstr ""
|
1247 |
|
1248 |
+
#: view/BlockAnalytics.php:243
|
1249 |
msgid "Visits"
|
1250 |
msgstr ""
|
1251 |
|
1252 |
+
#: view/BlockAnalytics.php:256
|
1253 |
msgid "Current: "
|
1254 |
msgstr ""
|
1255 |
|
1256 |
+
#: view/BlockAnalytics.php:257
|
1257 |
msgid "Lowest: "
|
1258 |
msgstr ""
|
1259 |
|
1260 |
+
#: view/BlockAnalytics.php:258
|
1261 |
msgid "Highest: "
|
1262 |
msgstr ""
|
1263 |
|
1264 |
+
#: view/BlockAnalytics.php:262
|
1265 |
msgid "last 30 days"
|
1266 |
msgstr ""
|
1267 |
|
1268 |
+
#: view/BlockAudit.php:24
|
1269 |
+
msgid "Squirrly Site Audit"
|
1270 |
msgstr ""
|
1271 |
|
1272 |
+
#: view/BlockAudit.php:31
|
1273 |
+
msgid "What the Audit offers:"
|
1274 |
msgstr ""
|
1275 |
|
1276 |
+
#: view/BlockAudit.php:32
|
1277 |
+
#, php-format
|
1278 |
+
msgid ""
|
1279 |
+
"%sTracks all the areas of your Content Marketing Strategy:%s: Blogging, "
|
1280 |
+
"Traffic, SEO, Social Signals, Links, Authority. Every single week, you get a "
|
1281 |
+
"new report by email."
|
1282 |
msgstr ""
|
1283 |
|
1284 |
+
#: view/BlockAudit.php:33
|
1285 |
+
#, php-format
|
1286 |
+
msgid ""
|
1287 |
+
"%sIt gives you professional advice on how to fix issues in those 6 areas%s. "
|
1288 |
+
"You can easily find out how to improve your content marketing strategy."
|
1289 |
msgstr ""
|
1290 |
|
1291 |
+
#: view/BlockAudit.php:34
|
1292 |
+
#, php-format
|
1293 |
+
msgid ""
|
1294 |
+
"%sMonitors your progress, week by week.%s You’ll get to see if your site "
|
1295 |
+
"audit has improved since you last checked it. "
|
1296 |
msgstr ""
|
1297 |
|
1298 |
+
#: view/BlockAudit.php:35
|
1299 |
+
#, php-format
|
1300 |
+
msgid "%sAnalyze any single article.%s See how it improves over time."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1301 |
msgstr ""
|
1302 |
|
1303 |
+
#: view/BlockAudit.php:36
|
1304 |
#, php-format
|
1305 |
+
msgid "%sLearn More About The Site Audit%s"
|
1306 |
msgstr ""
|
1307 |
|
1308 |
+
#: view/BlockAudit.php:37
|
1309 |
#, php-format
|
1310 |
+
msgid "%sRequest an Audit Now%s"
|
1311 |
msgstr ""
|
1312 |
|
1313 |
+
#: view/BlockAudit.php:43
|
1314 |
+
msgid "\"Your current site audit score:"
|
|
|
1315 |
msgstr ""
|
1316 |
|
1317 |
+
#: view/BlockAudit.php:47
|
1318 |
+
msgid "Score"
|
|
|
1319 |
msgstr ""
|
1320 |
|
1321 |
+
#: view/BlockAudit.php:50
|
1322 |
+
msgid "See the Audit"
|
1323 |
msgstr ""
|
1324 |
|
1325 |
+
#: view/BlockAudit.php:53
|
1326 |
+
msgid ""
|
1327 |
+
"It seems that no audit has been generated yet. You can request an audit down "
|
1328 |
+
"below. It should be ready in 5-10 minutes."
|
1329 |
msgstr ""
|
1330 |
|
1331 |
+
#: view/BlockAudit.php:55
|
1332 |
+
msgid "Request an Audit Now"
|
|
|
1333 |
msgstr ""
|
1334 |
|
1335 |
+
#: view/BlockAudit.php:62
|
1336 |
+
msgid "This is an example of a Site Audit"
|
|
|
1337 |
msgstr ""
|
1338 |
|
1339 |
+
#: view/BlockCopyright.php:9
|
1340 |
+
msgid "Squirrly Copywriting Options"
|
1341 |
+
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1342 |
|
1343 |
+
#: view/BlockCopyright.php:11
|
1344 |
+
msgid ""
|
1345 |
+
"Referencing other articles, ideas, and relevant Tweets adds value to your "
|
1346 |
+
"original content. This established journalist practice makes the content "
|
1347 |
+
"more trustworthy and helps readers shape a well-rounded understanding of the "
|
1348 |
+
"subject."
|
1349 |
+
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1350 |
|
1351 |
+
#: view/BlockCopyright.php:20
|
1352 |
msgid ""
|
1353 |
+
"The toolkit's intended purpose is to help you save time and find the best "
|
1354 |
+
"sources to include in your articles. "
|
1355 |
msgstr ""
|
1356 |
|
1357 |
+
#: view/BlockCopyright.php:24
|
1358 |
msgid ""
|
1359 |
+
"Squirrly has never encouraged and will never encourage users to create "
|
1360 |
+
"duplicate content."
|
1361 |
msgstr ""
|
1362 |
|
1363 |
+
#: view/BlockCopyright.php:25
|
1364 |
+
msgid ""
|
1365 |
+
"Squirrly will not take responsibility if an user copies an entire article "
|
1366 |
+
"from another source."
|
1367 |
msgstr ""
|
1368 |
|
1369 |
+
#: view/BlockCopyright.php:27
|
1370 |
+
msgid "Best Practices for Using the Inspiration Box from Squirrly: "
|
1371 |
msgstr ""
|
1372 |
|
1373 |
+
#: view/BlockCopyright.php:31
|
1374 |
msgid ""
|
1375 |
+
"Focus on creating original content. Citing sources should complement your "
|
1376 |
+
"original ideas"
|
1377 |
msgstr ""
|
1378 |
|
1379 |
+
#: view/BlockCopyright.php:32
|
1380 |
+
msgid "Try to limit yourself to 2 or 3 quotes per article"
|
|
|
|
|
1381 |
msgstr ""
|
1382 |
|
1383 |
+
#: view/BlockCopyright.php:33
|
1384 |
+
msgid "Always include a link to your sources"
|
1385 |
msgstr ""
|
1386 |
|
1387 |
+
#: view/BlockCopyright.php:39 view/BlockCopyright.php:50
|
1388 |
+
msgid "Use Squirrly's Inspiration box"
|
|
|
1389 |
msgstr ""
|
1390 |
|
1391 |
+
#: view/BlockCopyright.php:42 view/BlockCopyright.php:47
|
1392 |
msgid ""
|
1393 |
+
"I've read and understood how to correctly use the Inspiration Box from "
|
1394 |
+
"Squirrly."
|
1395 |
msgstr ""
|
1396 |
|
1397 |
+
#: view/BlockCustomerService.php:5
|
1398 |
+
msgid "Squirrly Customer Service"
|
1399 |
msgstr ""
|
1400 |
|
1401 |
+
#: view/BlockCustomerService.php:12
|
1402 |
+
msgid "Support Channels"
|
1403 |
msgstr ""
|
1404 |
|
1405 |
+
#: view/BlockCustomerService.php:13
|
1406 |
+
#, php-format
|
1407 |
+
msgid ""
|
1408 |
+
"%sHowto.squirrly.co%s > Knowledge Base. Find out how to get the most out of "
|
1409 |
+
"Squirrly SEO"
|
1410 |
msgstr ""
|
1411 |
|
1412 |
+
#: view/BlockCustomerService.php:14
|
1413 |
+
#, php-format
|
1414 |
+
msgid ""
|
1415 |
+
"%sPlugin.squirrly.co%s >> Case studies, ideas on how to better use Squirrly "
|
1416 |
+
"SEO for Content Marketing"
|
1417 |
msgstr ""
|
1418 |
|
1419 |
+
#: view/BlockCustomerService.php:15
|
1420 |
+
#, php-format
|
1421 |
+
msgid ""
|
1422 |
+
"%sFacebook page%s >> You can send us your support requests in private "
|
1423 |
+
"messages"
|
1424 |
msgstr ""
|
1425 |
|
1426 |
+
#: view/BlockCustomerService.php:16
|
1427 |
+
#, php-format
|
1428 |
+
msgid "%sSupport Community%s >> Join us on Google Plus"
|
1429 |
msgstr ""
|
1430 |
|
1431 |
+
#: view/BlockCustomerService.php:17
|
1432 |
+
#, php-format
|
1433 |
+
msgid "%sLive Chat%s >> on Youtube. Thursday 4 PM"
|
1434 |
msgstr ""
|
1435 |
|
1436 |
+
#: view/BlockCustomerService.php:18
|
1437 |
+
#, php-format
|
1438 |
+
msgid "%sNew Lessons%s >> Mon. and Tue. on Twitter"
|
1439 |
msgstr ""
|
1440 |
|
1441 |
+
#: view/BlockCustomerService.php:19
|
1442 |
+
#, php-format
|
1443 |
+
msgid "%sEmail Support%s >> 8 AM to 4 PM (London Time): Mon-Fri.."
|
1444 |
msgstr ""
|
1445 |
|
1446 |
+
# @ squirrly-seo
|
1447 |
+
#: view/BlockCustomerService.php:25 view/BlockSupport.php:21
|
1448 |
+
msgid "Need Help with Squirrly SEO?"
|
1449 |
+
msgstr "Brauchen Sie Hilfe mit Squirrly SEO?"
|
1450 |
|
1451 |
+
# @ squirrly-seo
|
1452 |
+
#: view/BlockCustomerService.php:33 view/BlockSupport.php:27
|
1453 |
+
msgid "Send Question"
|
1454 |
+
msgstr "Senden Sie Ihre Frage"
|
1455 |
|
1456 |
+
#: view/BlockDashboard.php:11
|
1457 |
+
msgid "Restore Squirrly Settings"
|
1458 |
msgstr ""
|
1459 |
|
1460 |
+
#: view/BlockDashboard.php:16 view/BlockImport.php:110
|
1461 |
+
msgid "Upload the file with the saved Squirrly Settings"
|
1462 |
msgstr ""
|
1463 |
|
1464 |
+
#: view/BlockDashboard.php:21 view/BlockImport.php:115
|
1465 |
+
#: view/BlockImport.php:137
|
1466 |
+
msgid "Restore Backup"
|
1467 |
msgstr ""
|
1468 |
|
1469 |
+
#: view/BlockDashboard.php:27
|
1470 |
+
msgid "Connect to Squirrly and start optimizing your site"
|
1471 |
msgstr ""
|
1472 |
|
1473 |
+
#: view/BlockDashboard.php:35
|
1474 |
+
msgid "Squirrly dashboard"
|
1475 |
msgstr ""
|
1476 |
|
1477 |
+
#: view/BlockDashboard.php:44
|
1478 |
+
#, php-format
|
1479 |
+
msgid ""
|
1480 |
+
"%sHelp Center%s - learn more about Squirrly SEO features and unhinge your "
|
1481 |
+
"SEO potential"
|
1482 |
msgstr ""
|
1483 |
|
1484 |
+
#: view/BlockDashboard.php:49
|
1485 |
+
msgid "Now with a fresh one right out of our Squirrly Labs!"
|
1486 |
msgstr ""
|
1487 |
|
1488 |
+
#: view/BlockDashboard.php:52
|
1489 |
+
msgid "Get It Here"
|
1490 |
msgstr ""
|
1491 |
|
1492 |
+
#: view/BlockDashboard.php:128
|
1493 |
+
msgid "Next Feature"
|
1494 |
msgstr ""
|
1495 |
|
1496 |
+
#: view/BlockDashboard.php:129
|
1497 |
+
msgid "Previous Feature"
|
1498 |
msgstr ""
|
1499 |
|
1500 |
+
#: view/BlockImport.php:22 view/BlockPatterns.php:22
|
1501 |
+
msgid "SEO Patterns"
|
1502 |
msgstr ""
|
1503 |
|
1504 |
+
#: view/BlockImport.php:34
|
1505 |
+
msgid "Import SEO settings from other SEO plugins or themes"
|
1506 |
msgstr ""
|
1507 |
|
1508 |
+
#: view/BlockImport.php:35
|
1509 |
+
msgid ""
|
1510 |
+
"If you were already using an SEO plugin, then you can import all the SEO "
|
1511 |
+
"settings in Squirrly. Just follow the steps presented on the right side."
|
1512 |
msgstr ""
|
1513 |
|
1514 |
+
#: view/BlockImport.php:42
|
1515 |
+
msgid "Select the plugin or theme you want to import the Settings from."
|
1516 |
msgstr ""
|
1517 |
|
1518 |
+
#: view/BlockImport.php:56
|
1519 |
+
msgid "Import Settings"
|
1520 |
msgstr ""
|
1521 |
|
1522 |
+
#: view/BlockImport.php:58 view/BlockImport.php:79
|
1523 |
+
msgid "We couldn't find any SEO plugin or theme to import from."
|
1524 |
msgstr ""
|
1525 |
|
1526 |
+
#: view/BlockImport.php:65
|
1527 |
+
msgid "Select the plugin or theme you want to import the SEO settings from."
|
1528 |
msgstr ""
|
1529 |
|
1530 |
+
#: view/BlockImport.php:86
|
1531 |
+
msgid ""
|
1532 |
+
"Note! If you import the SEO settings from other plugins or themes, you will "
|
1533 |
+
"lose all the settings that you had in Squirrly SEO. Make sure you backup "
|
1534 |
+
"your settings from the panel below before you do this. "
|
1535 |
msgstr ""
|
1536 |
|
1537 |
+
#: view/BlockImport.php:91
|
1538 |
+
msgid "Backup & Restore Squirrly SEO Settings"
|
1539 |
msgstr ""
|
1540 |
|
1541 |
+
#: view/BlockImport.php:92
|
1542 |
+
msgid ""
|
1543 |
+
"You can now download your Squirrly settings in an sql file before you go "
|
1544 |
+
"ahead and import the SEO settings from another plugin. That way, you can "
|
1545 |
+
"always go back to your Squirrly settings. "
|
1546 |
msgstr ""
|
1547 |
|
1548 |
+
#: view/BlockImport.php:99
|
1549 |
+
msgid "Backup & Restore Squirrly Settings"
|
1550 |
msgstr ""
|
1551 |
|
1552 |
+
#: view/BlockImport.php:103
|
1553 |
+
msgid "Backup Settings"
|
1554 |
msgstr ""
|
1555 |
|
1556 |
+
#: view/BlockImport.php:104
|
1557 |
+
msgid "Restore Settings"
|
1558 |
msgstr ""
|
1559 |
|
1560 |
+
#: view/BlockImport.php:115 view/BlockImport.php:137
|
1561 |
+
msgid "Are you sure you want to restore your settings?"
|
1562 |
msgstr ""
|
1563 |
|
1564 |
+
#: view/BlockImport.php:120
|
1565 |
+
msgid "Backup & Restore all the pages optimized with Squirrly SEO"
|
1566 |
msgstr ""
|
1567 |
|
1568 |
+
#: view/BlockImport.php:124
|
1569 |
+
msgid "Backup SEO"
|
1570 |
msgstr ""
|
1571 |
|
1572 |
+
#: view/BlockImport.php:125
|
1573 |
+
msgid "Restore SEO"
|
1574 |
msgstr ""
|
1575 |
|
1576 |
+
#: view/BlockImport.php:131
|
1577 |
+
msgid "Upload the file with the saved Squirrly SEO SQL file"
|
1578 |
msgstr ""
|
1579 |
|
1580 |
+
#: view/BlockImport.php:152
|
1581 |
+
msgid "Click to reset all the saved setting to default."
|
1582 |
msgstr ""
|
1583 |
|
1584 |
+
#: view/BlockImport.php:156
|
1585 |
+
msgid "Are you sure you want to remove all the saved settings?"
|
1586 |
msgstr ""
|
1587 |
|
1588 |
+
#: view/BlockImport.php:156
|
1589 |
+
msgid "Reset Settings"
|
1590 |
msgstr ""
|
1591 |
|
1592 |
+
#: view/BlockImport.php:162
|
1593 |
+
msgid ""
|
1594 |
+
"Note! Make sure you backup your data first in case you change your mind."
|
1595 |
msgstr ""
|
1596 |
|
1597 |
+
# @ squirrly-seo
|
1598 |
+
#: view/BlockKeywordResearch.php:27
|
1599 |
+
msgid "Squirrly Keyword Research"
|
1600 |
+
msgstr "Squirrly Erweiterte Suche!"
|
1601 |
|
1602 |
+
#: view/BlockLiveAssistant.php:9 view/Blockseo.php:7
|
1603 |
+
msgid "Squirrly Live Assistant"
|
1604 |
msgstr ""
|
1605 |
|
1606 |
+
#: view/BlockLiveAssistant.php:11
|
1607 |
+
#, php-format
|
1608 |
+
msgid ""
|
1609 |
+
"Using the Live Assistant from Squirrly SEO is like having a consultant "
|
1610 |
+
"sitting right next to you. It helps you get a 100% optimized page for both "
|
1611 |
+
"Humans and Search Engines."
|
1612 |
msgstr ""
|
1613 |
|
1614 |
+
#: view/BlockLiveAssistant.php:20
|
1615 |
+
msgid ""
|
1616 |
+
"You just have to type in the keyword you want the page to be optimized for."
|
1617 |
msgstr ""
|
1618 |
|
1619 |
+
#: view/BlockLiveAssistant.php:25
|
1620 |
+
msgid "Use Squirrly Live Assistant"
|
1621 |
msgstr ""
|
1622 |
|
1623 |
+
#: view/BlockPatterns.php:36
|
1624 |
+
msgid ""
|
1625 |
+
"Control how post types are displayed on your site and within search engine "
|
1626 |
+
"results and social media feeds."
|
1627 |
msgstr ""
|
1628 |
|
1629 |
+
#: view/BlockPatterns.php:37
|
1630 |
+
msgid ""
|
1631 |
+
"In Squirrly, each post type in your site comes with a predefined posting "
|
1632 |
+
"pattern when displayed onto your website. However, based on your site's "
|
1633 |
+
"purpose and needs, you can also decide what information these patterns will "
|
1634 |
+
"include."
|
1635 |
msgstr ""
|
1636 |
|
1637 |
+
#: view/BlockPatterns.php:38
|
1638 |
+
msgid ""
|
1639 |
+
"Once you set up a pattern for a particular post type, only the content "
|
1640 |
+
"required by your custom sequence will be displayed."
|
1641 |
msgstr ""
|
1642 |
|
1643 |
+
#: view/BlockPatterns.php:39
|
1644 |
+
#, php-format
|
1645 |
+
msgid ""
|
1646 |
+
"Squirrly lets you see how the customized patterns will apply when posts/"
|
1647 |
+
"pages are shared across social media or search engine feeds. You just need "
|
1648 |
+
"to go to the %sSquirrly SEO Snippet%s box, press <strong>Edit Snippet</"
|
1649 |
+
"strong> and you'll get a live preview after you customize the meta "
|
1650 |
+
"information."
|
1651 |
msgstr ""
|
1652 |
|
1653 |
+
#: view/BlockPatterns.php:43
|
1654 |
+
msgid "Set the custom patterns for each post type"
|
1655 |
msgstr ""
|
1656 |
|
1657 |
+
#: view/BlockPatterns.php:51
|
1658 |
+
msgid "+ Add Post Type"
|
1659 |
msgstr ""
|
1660 |
|
1661 |
+
#: view/BlockPatterns.php:51
|
1662 |
+
msgid "Add a post type from your Wordpress website"
|
1663 |
msgstr ""
|
1664 |
|
1665 |
+
#: view/BlockPatterns.php:54
|
1666 |
+
msgid "Add Post Type"
|
1667 |
msgstr ""
|
1668 |
|
1669 |
+
#: view/BlockPatterns.php:71
|
1670 |
+
msgid "Add"
|
1671 |
msgstr ""
|
1672 |
|
1673 |
+
#: view/BlockPatterns.php:81
|
1674 |
+
#, php-format
|
1675 |
+
msgid "Are you sure you want to remove the post type: %s"
|
1676 |
msgstr ""
|
1677 |
|
1678 |
+
#: view/BlockPatterns.php:81
|
1679 |
+
msgid "Remove Post Type"
|
1680 |
msgstr ""
|
1681 |
|
1682 |
+
#: view/BlockPatterns.php:86 view/FrontMenu.php:134
|
1683 |
+
msgid "Title"
|
1684 |
msgstr ""
|
1685 |
|
1686 |
+
#: view/BlockPatterns.php:92 view/FrontMenu.php:182
|
1687 |
+
msgid "Description"
|
1688 |
msgstr ""
|
1689 |
|
1690 |
+
#: view/BlockPatterns.php:98
|
1691 |
+
msgid "Separator"
|
1692 |
msgstr ""
|
1693 |
|
1694 |
+
#: view/BlockPatterns.php:113
|
1695 |
+
msgid "Let Google Index it"
|
1696 |
msgstr ""
|
1697 |
|
1698 |
+
# @ squirrly-seo
|
1699 |
+
#: view/BlockPatterns.php:118 view/BlockPatterns.php:132
|
1700 |
+
#: view/BlockPatterns.php:149 view/BlockSettings.php:135
|
1701 |
+
#: view/BlockSettings.php:146 view/BlockSettings.php:157
|
1702 |
+
#: view/BlockSettings.php:168 view/BlockSettings.php:180
|
1703 |
+
#: view/BlockSettings.php:192 view/BlockSettings.php:355
|
1704 |
+
#: view/BlockSettingsSeo.php:53 view/BlockSettingsSeo.php:95
|
1705 |
+
#: view/BlockSettingsSeo.php:112 view/BlockSettingsSeo.php:128
|
1706 |
+
#: view/BlockSettingsSeo.php:144 view/BlockSettingsSeo.php:160
|
1707 |
+
#: view/BlockSettingsSeo.php:176 view/BlockSettingsSeo.php:192
|
1708 |
+
#: view/BlockSettingsSeo.php:220 view/BlockSettingsSeo.php:236
|
1709 |
+
#: view/BlockSettingsSeo.php:252 view/BlockSettingsSeo.php:271
|
1710 |
+
#: view/BlockSettingsSeo.php:546 view/BlockSettingsSeo.php:578
|
1711 |
+
#: view/BlockSettingsSeo.php:586 view/BlockSettingsSeo.php:684
|
1712 |
+
#: view/BlockSettingsSeo.php:1030 view/FrontMenu.php:49 view/FrontMenu.php:508
|
1713 |
+
#: view/FrontMenu.php:521 view/FrontMenu.php:534
|
1714 |
+
msgid "Yes"
|
1715 |
+
msgstr "Ja"
|
1716 |
+
|
1717 |
+
# @ squirrly-seo
|
1718 |
+
#: view/BlockPatterns.php:120 view/BlockPatterns.php:134
|
1719 |
+
#: view/BlockPatterns.php:151 view/BlockSettings.php:137
|
1720 |
+
#: view/BlockSettings.php:148 view/BlockSettings.php:159
|
1721 |
+
#: view/BlockSettings.php:170 view/BlockSettings.php:182
|
1722 |
+
#: view/BlockSettings.php:194 view/BlockSettings.php:357
|
1723 |
+
#: view/BlockSettingsSeo.php:55 view/BlockSettingsSeo.php:97
|
1724 |
+
#: view/BlockSettingsSeo.php:114 view/BlockSettingsSeo.php:130
|
1725 |
+
#: view/BlockSettingsSeo.php:146 view/BlockSettingsSeo.php:162
|
1726 |
+
#: view/BlockSettingsSeo.php:178 view/BlockSettingsSeo.php:194
|
1727 |
+
#: view/BlockSettingsSeo.php:222 view/BlockSettingsSeo.php:238
|
1728 |
+
#: view/BlockSettingsSeo.php:254 view/BlockSettingsSeo.php:273
|
1729 |
+
#: view/BlockSettingsSeo.php:548 view/BlockSettingsSeo.php:580
|
1730 |
+
#: view/BlockSettingsSeo.php:588 view/BlockSettingsSeo.php:686
|
1731 |
+
#: view/BlockSettingsSeo.php:1032 view/FrontMenu.php:51 view/FrontMenu.php:510
|
1732 |
+
#: view/FrontMenu.php:523 view/FrontMenu.php:536
|
1733 |
+
msgid "No"
|
1734 |
+
msgstr "Nein"
|
1735 |
+
|
1736 |
+
#: view/BlockPatterns.php:127
|
1737 |
+
msgid "Pass Link Juice"
|
1738 |
msgstr ""
|
1739 |
|
1740 |
+
#: view/BlockPatterns.php:141
|
1741 |
+
msgid "Do SEO"
|
1742 |
msgstr ""
|
1743 |
|
1744 |
+
#: view/BlockPatterns.php:185 view/BlockSettingsSeo.php:29
|
1745 |
+
#: view/BlockSettingsSeo.php:1082
|
1746 |
+
msgid "Save SEO"
|
1747 |
msgstr ""
|
1748 |
|
1749 |
+
#: view/BlockPostsAnalytics.php:24
|
1750 |
+
#, php-format
|
1751 |
+
msgid ""
|
1752 |
+
"The IP %s is calling the rank too often and google stopped the calls for %s "
|
1753 |
+
"mins. Lower the Rank check rate in Squirrly > Advanced > Rank Option. %sMore "
|
1754 |
+
"details%s"
|
1755 |
msgstr ""
|
1756 |
|
1757 |
+
#: view/BlockPostsAnalytics.php:29
|
1758 |
+
#, php-format
|
1759 |
+
msgid ""
|
1760 |
+
"To be able to check the RANK please activate cURL for PHP on your server "
|
1761 |
+
"%sDetails%s"
|
1762 |
msgstr ""
|
1763 |
|
1764 |
+
#: view/BlockPostsAnalytics.php:33
|
1765 |
+
#, php-format
|
1766 |
+
msgid ""
|
1767 |
+
"To be able to check the RANK please set the \"open_basedir\" to NULL on your "
|
1768 |
+
"server %sDetails%s"
|
1769 |
msgstr ""
|
1770 |
|
1771 |
+
#: view/BlockPostsAnalytics.php:38
|
1772 |
+
#, php-format
|
1773 |
+
msgid ""
|
1774 |
+
"To see the Google Ranking for each article you need to select how many pages "
|
1775 |
+
"to be checked by google rank every hour from %sSquirrly > Advanced > Google "
|
1776 |
+
"Rank Option%s. "
|
1777 |
msgstr ""
|
1778 |
|
1779 |
+
#: view/BlockPostsAnalytics.php:47
|
1780 |
+
msgid "Squirrly Analytics"
|
1781 |
msgstr ""
|
1782 |
|
1783 |
+
#: view/BlockPostsAnalytics.php:48
|
1784 |
+
msgid ""
|
1785 |
+
"Don't see all your pages here? Make sure you optimize them with Squirrly, so "
|
1786 |
+
"that we can track them, and display you the analytics"
|
1787 |
msgstr ""
|
1788 |
|
1789 |
+
# @ squirrly-seo
|
1790 |
+
#: view/BlockSettings.php:24 view/BlockSettings.php:405
|
1791 |
+
msgid "Save settings"
|
1792 |
+
msgstr "Einstellungen speichern"
|
1793 |
+
|
1794 |
+
#: view/BlockSettings.php:41
|
1795 |
+
msgid "Post/Page Edit"
|
1796 |
msgstr ""
|
1797 |
|
1798 |
+
#: view/BlockSettings.php:42
|
1799 |
+
#, php-format
|
1800 |
+
msgid "%sThe right method in working with Squirrly, SEO plugin%s"
|
1801 |
msgstr ""
|
1802 |
|
1803 |
+
#: view/BlockSettings.php:43
|
1804 |
+
#, php-format
|
1805 |
+
msgid "%sGetting inspired with Squirrly WordPress SEO plugin%s"
|
1806 |
msgstr ""
|
1807 |
|
1808 |
+
#: view/BlockSettings.php:45
|
1809 |
+
#, php-format
|
1810 |
+
msgid "%sThere is a New SEO Live Assistant from Squirrly%s"
|
1811 |
msgstr ""
|
1812 |
|
1813 |
+
#: view/BlockSettings.php:46
|
1814 |
+
#, php-format
|
1815 |
+
msgid "%sHow to create Human friendly content with the WordPress SEO plugin?%s"
|
1816 |
msgstr ""
|
1817 |
|
1818 |
+
#: view/BlockSettings.php:52
|
1819 |
+
msgid "Inspiration Box G17"
|
1820 |
msgstr ""
|
1821 |
|
1822 |
+
#: view/BlockSettings.php:55 view/BlockSettings.php:56
|
1823 |
+
#: view/BlockSettings.php:69 view/BlockSettings.php:70
|
1824 |
+
#: view/BlockSettings.php:83 view/BlockSettings.php:84
|
1825 |
+
#: view/BlockSettingsSeo.php:66 view/BlockSettingsSeo.php:78
|
1826 |
+
#: view/BlockSettingsSeo.php:287 view/BlockSettingsSeo.php:526
|
1827 |
+
#: view/BlockSettingsSeo.php:852 view/BlockSettingsSeo.php:946
|
1828 |
+
#: view/BlockSettingsSeo.php:958 view/BlockSettingsSeo.php:970
|
1829 |
+
msgid "see how this improved since 2016"
|
1830 |
msgstr ""
|
1831 |
|
1832 |
+
#: view/BlockSettings.php:66
|
1833 |
+
msgid "Keyword Research G17"
|
1834 |
msgstr ""
|
1835 |
|
1836 |
+
#: view/BlockSettings.php:80
|
1837 |
+
msgid "Inner Links G17"
|
1838 |
msgstr ""
|
1839 |
|
1840 |
+
#: view/BlockSettings.php:93
|
1841 |
+
msgid "Load Squirrly Live Assistant for"
|
1842 |
msgstr ""
|
1843 |
|
1844 |
+
#: view/BlockSettings.php:97 view/BlockSettingsSeo.php:707
|
1845 |
+
msgid "Posts"
|
1846 |
msgstr ""
|
1847 |
|
1848 |
+
#: view/BlockSettings.php:100 view/BlockSettingsSeo.php:736
|
1849 |
+
msgid "Pages"
|
1850 |
msgstr ""
|
1851 |
|
1852 |
+
#: view/BlockSettings.php:104 view/BlockSettingsSeo.php:721
|
1853 |
+
msgid "Products"
|
1854 |
msgstr ""
|
1855 |
|
1856 |
+
#: view/BlockSettings.php:140
|
1857 |
+
msgid ""
|
1858 |
+
"Show <strong>Squirrly Tooltips</strong> when posting a new article (e.g. "
|
1859 |
+
"\"Enter a keyword\")."
|
1860 |
msgstr ""
|
1861 |
|
1862 |
+
#: view/BlockSettings.php:151
|
1863 |
+
msgid ""
|
1864 |
+
"Always show <strong>Keyword Research</strong> about the selected keyword."
|
1865 |
msgstr ""
|
1866 |
|
1867 |
+
#: view/BlockSettings.php:162
|
1868 |
+
msgid ""
|
1869 |
+
"Send optimization data to Squirrly API when the post is saved (don't use "
|
1870 |
+
"cron)"
|
1871 |
msgstr ""
|
1872 |
|
1873 |
+
#: view/BlockSettings.php:173
|
1874 |
+
msgid "Use <strong> the NEW version of the SEO Live Assistant</strong>."
|
1875 |
msgstr ""
|
1876 |
|
1877 |
+
#: view/BlockSettings.php:185
|
1878 |
+
msgid ""
|
1879 |
+
"Download <strong>remote images</strong> in your <strong>Media Library</"
|
1880 |
+
"strong> for the new posts."
|
1881 |
msgstr ""
|
1882 |
|
1883 |
+
#: view/BlockSettings.php:197
|
1884 |
+
msgid ""
|
1885 |
+
"Correct my <strong>feed links</strong> and <strong>images</strong> (convert "
|
1886 |
+
"from relative to absolute)."
|
1887 |
msgstr ""
|
1888 |
|
1889 |
+
#: view/BlockSettings.php:207
|
1890 |
+
msgid "Google Rank Options"
|
1891 |
msgstr ""
|
1892 |
|
1893 |
+
#: view/BlockSettings.php:208
|
1894 |
+
#, php-format
|
1895 |
+
msgid "%sCountry targeting%s"
|
1896 |
msgstr ""
|
1897 |
|
1898 |
+
#: view/BlockSettings.php:209
|
1899 |
+
#, php-format
|
1900 |
+
msgid "%sPowerful SEO Tool For Strong Google Rankings%s"
|
1901 |
msgstr ""
|
1902 |
|
1903 |
+
#: view/BlockSettings.php:216
|
1904 |
+
msgid ""
|
1905 |
+
"Select the Google extension for which Squirrly will check the Google rank."
|
1906 |
msgstr ""
|
1907 |
|
1908 |
+
#: view/BlockSettings.php:221
|
1909 |
+
msgid "Default"
|
1910 |
msgstr ""
|
1911 |
|
1912 |
+
#: view/BlockSettings.php:222
|
1913 |
+
msgid "American Samoa"
|
1914 |
msgstr ""
|
1915 |
|
1916 |
+
#: view/BlockSettings.php:223
|
1917 |
+
msgid "Anguilla"
|
1918 |
msgstr ""
|
1919 |
|
1920 |
+
#: view/BlockSettings.php:224
|
1921 |
+
msgid "Antigua and Barbuda"
|
1922 |
msgstr ""
|
1923 |
|
1924 |
+
#: view/BlockSettings.php:225
|
1925 |
+
msgid "Argentina"
|
1926 |
msgstr ""
|
1927 |
|
1928 |
+
#: view/BlockSettings.php:226
|
1929 |
+
msgid "Australia"
|
1930 |
msgstr ""
|
1931 |
|
1932 |
+
#: view/BlockSettings.php:227
|
1933 |
+
msgid "Austria"
|
1934 |
msgstr ""
|
1935 |
|
1936 |
+
#: view/BlockSettings.php:228
|
1937 |
+
msgid "Azerbaijan"
|
1938 |
msgstr ""
|
1939 |
|
1940 |
+
#: view/BlockSettings.php:229
|
1941 |
+
msgid "Belgium"
|
1942 |
msgstr ""
|
1943 |
|
1944 |
+
#: view/BlockSettings.php:230
|
1945 |
+
msgid "Brazil"
|
|
|
|
|
|
|
1946 |
msgstr ""
|
1947 |
|
1948 |
+
#: view/BlockSettings.php:231
|
1949 |
+
msgid "British Virgin Islands"
|
1950 |
msgstr ""
|
1951 |
|
1952 |
+
#: view/BlockSettings.php:232
|
1953 |
+
msgid "Burundi"
|
|
|
|
|
1954 |
msgstr ""
|
1955 |
|
1956 |
+
#: view/BlockSettings.php:233
|
1957 |
+
msgid "Bulgaria"
|
1958 |
msgstr ""
|
1959 |
|
1960 |
+
#: view/BlockSettings.php:234
|
1961 |
+
msgid "Canada"
|
|
|
1962 |
msgstr ""
|
1963 |
|
1964 |
+
#: view/BlockSettings.php:235
|
1965 |
+
msgid "Chad"
|
|
|
1966 |
msgstr ""
|
1967 |
|
1968 |
+
#: view/BlockSettings.php:236
|
1969 |
+
msgid "Chile"
|
|
|
1970 |
msgstr ""
|
1971 |
|
1972 |
+
#: view/BlockSettings.php:237
|
1973 |
+
msgid "Colombia"
|
1974 |
+
msgstr ""
|
1975 |
+
|
1976 |
+
#: view/BlockSettings.php:238
|
1977 |
+
msgid "Costa Rica"
|
1978 |
+
msgstr ""
|
1979 |
+
|
1980 |
+
#: view/BlockSettings.php:239
|
1981 |
+
msgid "Côte d'Ivoire"
|
1982 |
+
msgstr ""
|
1983 |
+
|
1984 |
+
#: view/BlockSettings.php:240
|
1985 |
+
msgid "Cuba"
|
1986 |
+
msgstr ""
|
1987 |
+
|
1988 |
+
#: view/BlockSettings.php:241
|
1989 |
+
msgid "Czech Republic"
|
1990 |
+
msgstr ""
|
1991 |
+
|
1992 |
+
#: view/BlockSettings.php:242
|
1993 |
+
msgid "Dem. Rep. of the Congo"
|
1994 |
+
msgstr ""
|
1995 |
+
|
1996 |
+
#: view/BlockSettings.php:243
|
1997 |
+
msgid "Denmark"
|
1998 |
+
msgstr ""
|
1999 |
+
|
2000 |
+
#: view/BlockSettings.php:244
|
2001 |
+
msgid "Djibouti"
|
2002 |
+
msgstr ""
|
2003 |
+
|
2004 |
+
#: view/BlockSettings.php:245
|
2005 |
+
msgid "Dominican Republic"
|
2006 |
+
msgstr ""
|
2007 |
+
|
2008 |
+
#: view/BlockSettings.php:246
|
2009 |
+
msgid "Ecuador"
|
2010 |
+
msgstr ""
|
2011 |
+
|
2012 |
+
#: view/BlockSettings.php:247
|
2013 |
+
msgid "El Salvador"
|
2014 |
+
msgstr ""
|
2015 |
+
|
2016 |
+
#: view/BlockSettings.php:248
|
2017 |
+
msgid "Estonia"
|
2018 |
+
msgstr ""
|
2019 |
+
|
2020 |
+
#: view/BlockSettings.php:249
|
2021 |
+
msgid "Federated States of Micronesia"
|
2022 |
+
msgstr ""
|
2023 |
+
|
2024 |
+
#: view/BlockSettings.php:250
|
2025 |
+
msgid "Fiji"
|
2026 |
+
msgstr ""
|
2027 |
+
|
2028 |
+
#: view/BlockSettings.php:251
|
2029 |
+
msgid "Finland"
|
2030 |
+
msgstr ""
|
2031 |
+
|
2032 |
+
#: view/BlockSettings.php:252
|
2033 |
+
msgid "France"
|
2034 |
+
msgstr ""
|
2035 |
+
|
2036 |
+
#: view/BlockSettings.php:253
|
2037 |
+
msgid "The Gambia"
|
2038 |
+
msgstr ""
|
2039 |
+
|
2040 |
+
#: view/BlockSettings.php:254
|
2041 |
+
msgid "Georgia"
|
2042 |
+
msgstr ""
|
2043 |
+
|
2044 |
+
#: view/BlockSettings.php:255
|
2045 |
+
msgid "Germany"
|
2046 |
+
msgstr ""
|
2047 |
+
|
2048 |
+
#: view/BlockSettings.php:256
|
2049 |
+
msgid "Gibraltar"
|
2050 |
+
msgstr ""
|
2051 |
+
|
2052 |
+
#: view/BlockSettings.php:257
|
2053 |
+
msgid "Greece"
|
2054 |
+
msgstr ""
|
2055 |
+
|
2056 |
+
#: view/BlockSettings.php:258
|
2057 |
+
msgid "Greenland"
|
2058 |
+
msgstr ""
|
2059 |
+
|
2060 |
+
#: view/BlockSettings.php:259
|
2061 |
+
msgid "Guernsey"
|
2062 |
+
msgstr ""
|
2063 |
+
|
2064 |
+
#: view/BlockSettings.php:260
|
2065 |
+
msgid "Honduras"
|
2066 |
+
msgstr ""
|
2067 |
+
|
2068 |
+
#: view/BlockSettings.php:261
|
2069 |
+
msgid "Hong Kong"
|
2070 |
+
msgstr ""
|
2071 |
+
|
2072 |
+
#: view/BlockSettings.php:262
|
2073 |
+
msgid "Hungary"
|
2074 |
+
msgstr ""
|
2075 |
+
|
2076 |
+
#: view/BlockSettings.php:263
|
2077 |
+
msgid "India"
|
2078 |
+
msgstr ""
|
2079 |
+
|
2080 |
+
#: view/BlockSettings.php:264
|
2081 |
+
msgid "Indonesia"
|
2082 |
+
msgstr ""
|
2083 |
+
|
2084 |
+
#: view/BlockSettings.php:265
|
2085 |
+
msgid "Ireland"
|
2086 |
+
msgstr ""
|
2087 |
+
|
2088 |
+
#: view/BlockSettings.php:266
|
2089 |
+
msgid "Isle of Man"
|
2090 |
+
msgstr ""
|
2091 |
+
|
2092 |
+
#: view/BlockSettings.php:267
|
2093 |
+
msgid "Israel"
|
2094 |
+
msgstr ""
|
2095 |
+
|
2096 |
+
#: view/BlockSettings.php:268
|
2097 |
+
msgid "Italy"
|
2098 |
+
msgstr ""
|
2099 |
+
|
2100 |
+
#: view/BlockSettings.php:269
|
2101 |
+
msgid "Jamaica"
|
2102 |
+
msgstr ""
|
2103 |
+
|
2104 |
+
#: view/BlockSettings.php:270
|
2105 |
+
msgid "Japan"
|
2106 |
+
msgstr ""
|
2107 |
+
|
2108 |
+
#: view/BlockSettings.php:271
|
2109 |
+
msgid "Jersey"
|
2110 |
+
msgstr ""
|
2111 |
+
|
2112 |
+
#: view/BlockSettings.php:272
|
2113 |
+
msgid "Kazakhstan"
|
2114 |
+
msgstr ""
|
2115 |
+
|
2116 |
+
#: view/BlockSettings.php:273
|
2117 |
+
msgid "Korea"
|
2118 |
+
msgstr ""
|
2119 |
+
|
2120 |
+
#: view/BlockSettings.php:274
|
2121 |
+
msgid "Latvia"
|
2122 |
+
msgstr ""
|
2123 |
+
|
2124 |
+
#: view/BlockSettings.php:275
|
2125 |
+
msgid "Lesotho"
|
2126 |
+
msgstr ""
|
2127 |
+
|
2128 |
+
#: view/BlockSettings.php:276
|
2129 |
+
msgid "Liechtenstein"
|
2130 |
+
msgstr ""
|
2131 |
+
|
2132 |
+
#: view/BlockSettings.php:277
|
2133 |
+
msgid "Lithuania"
|
2134 |
+
msgstr ""
|
2135 |
+
|
2136 |
+
#: view/BlockSettings.php:278
|
2137 |
+
msgid "Luxembourg"
|
2138 |
+
msgstr ""
|
2139 |
+
|
2140 |
+
#: view/BlockSettings.php:279
|
2141 |
+
msgid "Malawi"
|
2142 |
+
msgstr ""
|
2143 |
+
|
2144 |
+
#: view/BlockSettings.php:280
|
2145 |
+
msgid "Malaysia"
|
2146 |
+
msgstr ""
|
2147 |
+
|
2148 |
+
#: view/BlockSettings.php:281
|
2149 |
+
msgid "Malta"
|
2150 |
+
msgstr ""
|
2151 |
+
|
2152 |
+
#: view/BlockSettings.php:282
|
2153 |
+
msgid "Mauritius"
|
2154 |
+
msgstr ""
|
2155 |
+
|
2156 |
+
#: view/BlockSettings.php:283
|
2157 |
+
msgid "México"
|
2158 |
+
msgstr ""
|
2159 |
+
|
2160 |
+
#: view/BlockSettings.php:284
|
2161 |
+
msgid "Montserrat"
|
2162 |
+
msgstr ""
|
2163 |
+
|
2164 |
+
#: view/BlockSettings.php:285
|
2165 |
+
msgid "Namibia"
|
2166 |
+
msgstr ""
|
2167 |
+
|
2168 |
+
#: view/BlockSettings.php:286
|
2169 |
+
msgid "Nepal"
|
2170 |
+
msgstr ""
|
2171 |
+
|
2172 |
+
#: view/BlockSettings.php:287
|
2173 |
+
msgid "Netherlands"
|
2174 |
+
msgstr ""
|
2175 |
+
|
2176 |
+
#: view/BlockSettings.php:288
|
2177 |
+
msgid "New Zealand"
|
2178 |
+
msgstr ""
|
2179 |
+
|
2180 |
+
#: view/BlockSettings.php:289
|
2181 |
+
msgid "Nicaragua"
|
2182 |
+
msgstr ""
|
2183 |
+
|
2184 |
+
#: view/BlockSettings.php:290
|
2185 |
+
msgid "Norfolk Island"
|
2186 |
+
msgstr ""
|
2187 |
+
|
2188 |
+
#: view/BlockSettings.php:291
|
2189 |
+
msgid "Norway"
|
2190 |
+
msgstr ""
|
2191 |
+
|
2192 |
+
#: view/BlockSettings.php:292
|
2193 |
+
msgid "Pakistan"
|
2194 |
+
msgstr ""
|
2195 |
+
|
2196 |
+
#: view/BlockSettings.php:293
|
2197 |
+
msgid "Panamá"
|
2198 |
+
msgstr ""
|
2199 |
+
|
2200 |
+
#: view/BlockSettings.php:294
|
2201 |
+
msgid "Paraguay"
|
2202 |
+
msgstr ""
|
2203 |
+
|
2204 |
+
#: view/BlockSettings.php:295
|
2205 |
+
msgid "Perú"
|
2206 |
+
msgstr ""
|
2207 |
+
|
2208 |
+
#: view/BlockSettings.php:296
|
2209 |
+
msgid "Philippines"
|
2210 |
+
msgstr ""
|
2211 |
+
|
2212 |
+
#: view/BlockSettings.php:297
|
2213 |
+
msgid "Pitcairn Islands"
|
2214 |
+
msgstr ""
|
2215 |
+
|
2216 |
+
#: view/BlockSettings.php:298
|
2217 |
+
msgid "Poland"
|
2218 |
+
msgstr ""
|
2219 |
+
|
2220 |
+
#: view/BlockSettings.php:299
|
2221 |
+
msgid "Portugal"
|
2222 |
+
msgstr ""
|
2223 |
+
|
2224 |
+
#: view/BlockSettings.php:300
|
2225 |
+
msgid "Puerto Rico"
|
2226 |
msgstr ""
|
2227 |
|
2228 |
+
#: view/BlockSettings.php:301
|
2229 |
+
msgid "Rep. of the Congo"
|
2230 |
+
msgstr ""
|
2231 |
+
|
2232 |
+
#: view/BlockSettings.php:302
|
2233 |
+
msgid "Romania"
|
2234 |
+
msgstr ""
|
2235 |
+
|
2236 |
+
#: view/BlockSettings.php:303
|
2237 |
+
msgid "Russia"
|
2238 |
+
msgstr ""
|
2239 |
+
|
2240 |
+
#: view/BlockSettings.php:304
|
2241 |
+
msgid "Rwanda"
|
2242 |
+
msgstr ""
|
2243 |
+
|
2244 |
+
#: view/BlockSettings.php:305
|
2245 |
+
msgid "Saint Helena"
|
2246 |
+
msgstr ""
|
2247 |
+
|
2248 |
+
#: view/BlockSettings.php:306
|
2249 |
+
msgid "San Marino"
|
2250 |
+
msgstr ""
|
2251 |
+
|
2252 |
+
#: view/BlockSettings.php:307
|
2253 |
+
msgid "Saudi Arabia"
|
2254 |
+
msgstr ""
|
2255 |
+
|
2256 |
+
#: view/BlockSettings.php:308
|
2257 |
+
msgid "Singapore"
|
2258 |
+
msgstr ""
|
2259 |
+
|
2260 |
+
#: view/BlockSettings.php:309
|
2261 |
+
msgid "Slovakia"
|
2262 |
+
msgstr ""
|
2263 |
+
|
2264 |
+
#: view/BlockSettings.php:310
|
2265 |
+
msgid "South Africa"
|
2266 |
+
msgstr ""
|
2267 |
+
|
2268 |
+
#: view/BlockSettings.php:311
|
2269 |
+
msgid "Spain"
|
2270 |
+
msgstr ""
|
2271 |
+
|
2272 |
+
#: view/BlockSettings.php:312
|
2273 |
+
msgid "Sri Lanka"
|
2274 |
+
msgstr ""
|
2275 |
+
|
2276 |
+
#: view/BlockSettings.php:313
|
2277 |
+
msgid "Sweden"
|
2278 |
+
msgstr ""
|
2279 |
+
|
2280 |
+
#: view/BlockSettings.php:314
|
2281 |
+
msgid "Switzerland"
|
2282 |
+
msgstr ""
|
2283 |
+
|
2284 |
+
#: view/BlockSettings.php:315
|
2285 |
+
msgid "Taiwan"
|
2286 |
+
msgstr ""
|
2287 |
+
|
2288 |
+
#: view/BlockSettings.php:316
|
2289 |
+
msgid "Thailand"
|
2290 |
+
msgstr ""
|
2291 |
+
|
2292 |
+
#: view/BlockSettings.php:317
|
2293 |
+
msgid "Trinidad and Tobago"
|
2294 |
+
msgstr ""
|
2295 |
+
|
2296 |
+
#: view/BlockSettings.php:318
|
2297 |
+
msgid "Turkey"
|
2298 |
+
msgstr ""
|
2299 |
+
|
2300 |
+
#: view/BlockSettings.php:319
|
2301 |
+
msgid "Ukraine"
|
2302 |
+
msgstr ""
|
2303 |
+
|
2304 |
+
#: view/BlockSettings.php:320
|
2305 |
+
msgid "United Arab Emirates"
|
2306 |
+
msgstr ""
|
2307 |
+
|
2308 |
+
#: view/BlockSettings.php:321
|
2309 |
+
msgid "United Kingdom"
|
2310 |
+
msgstr ""
|
2311 |
+
|
2312 |
+
#: view/BlockSettings.php:322
|
2313 |
+
msgid "United States"
|
2314 |
+
msgstr ""
|
2315 |
+
|
2316 |
+
#: view/BlockSettings.php:323
|
2317 |
+
msgid "Uruguay"
|
2318 |
+
msgstr ""
|
2319 |
+
|
2320 |
+
#: view/BlockSettings.php:324
|
2321 |
+
msgid "Uzbekistan"
|
2322 |
+
msgstr ""
|
2323 |
+
|
2324 |
+
#: view/BlockSettings.php:325
|
2325 |
+
msgid "Vanuatu"
|
2326 |
+
msgstr ""
|
2327 |
+
|
2328 |
+
#: view/BlockSettings.php:326
|
2329 |
+
msgid "Venezuela"
|
2330 |
+
msgstr ""
|
2331 |
+
|
2332 |
+
#: view/BlockSettings.php:327
|
2333 |
+
msgid "Vietnam"
|
2334 |
+
msgstr ""
|
2335 |
+
|
2336 |
+
#: view/BlockSettings.php:331
|
2337 |
#, php-format
|
2338 |
+
msgid ""
|
2339 |
+
"Select how many pages to be checked in the Performance Analytics section "
|
2340 |
+
"every hour. %s(not recommended for shared hosting plan)%s"
|
2341 |
+
msgstr ""
|
2342 |
+
|
2343 |
+
#: view/BlockSettings.php:338
|
2344 |
+
msgid "page"
|
2345 |
+
msgstr ""
|
2346 |
+
|
2347 |
+
#: view/BlockSettings.php:340
|
2348 |
+
msgid "pages"
|
2349 |
+
msgstr ""
|
2350 |
+
|
2351 |
+
#: view/BlockSettings.php:346
|
2352 |
+
msgid "h"
|
2353 |
+
msgstr ""
|
2354 |
+
|
2355 |
+
#: view/BlockSettings.php:360
|
2356 |
+
msgid ""
|
2357 |
+
"Restricts search results to results originating in the above particular "
|
2358 |
+
"country."
|
2359 |
msgstr ""
|
2360 |
|
2361 |
+
#: view/BlockSettings.php:370
|
2362 |
+
msgid "Robots.txt Editor"
|
2363 |
+
msgstr ""
|
2364 |
+
|
2365 |
+
#: view/BlockSettings.php:371
|
2366 |
#, php-format
|
2367 |
+
msgid "%sLearn about robots.txt files%s"
|
2368 |
msgstr ""
|
2369 |
|
2370 |
+
#: view/BlockSettings.php:372
|
2371 |
+
#, php-format
|
2372 |
+
msgid "%sHow to use Robots.txt%s"
|
2373 |
msgstr ""
|
2374 |
|
2375 |
+
#: view/BlockSettings.php:378
|
2376 |
+
msgid "Edit the Robots.txt data"
|
|
|
2377 |
msgstr ""
|
2378 |
|
2379 |
+
#: view/BlockSettings.php:391
|
2380 |
+
msgid ""
|
2381 |
+
"Does not physically create the robots.txt file. The best option for "
|
2382 |
+
"Multisites."
|
2383 |
msgstr ""
|
2384 |
|
2385 |
+
#: view/BlockSettings.php:396
|
2386 |
+
msgid "Save Robots"
|
|
|
|
|
2387 |
msgstr ""
|
2388 |
|
2389 |
+
#: view/BlockSettingsSeo.php:27
|
2390 |
+
msgid "SEO"
|
|
|
2391 |
msgstr ""
|
2392 |
|
2393 |
+
#: view/BlockSettingsSeo.php:31 view/BlockSettingsSeo.php:204
|
|
|
2394 |
msgid "Check for SEO issues in your site"
|
2395 |
msgstr ""
|
2396 |
|
2397 |
+
#: view/BlockSettingsSeo.php:46
|
2398 |
+
msgid "Let Squirrly SEO Optimize This Blog"
|
2399 |
msgstr ""
|
2400 |
|
2401 |
+
#: view/BlockSettingsSeo.php:47
|
2402 |
#, php-format
|
2403 |
+
msgid "%sIs Squirrly SEO better than WordPress SEO by Yoast?%s"
|
2404 |
msgstr ""
|
2405 |
|
2406 |
+
#: view/BlockSettingsSeo.php:49
|
2407 |
msgid ""
|
2408 |
"Activate the built-in SEO settings from Squirrly by switching Yes below. "
|
2409 |
"<strong>Works well with Multisites and Ecommerce.</strong>"
|
2410 |
msgstr ""
|
2411 |
|
2412 |
+
#: view/BlockSettingsSeo.php:63
|
2413 |
+
msgid "New SEO Settings For Google 2017"
|
2414 |
+
msgstr ""
|
2415 |
+
|
2416 |
+
#: view/BlockSettingsSeo.php:75
|
2417 |
+
msgid "Fastest SEO Plugin in 2017"
|
2418 |
+
msgstr ""
|
2419 |
+
|
2420 |
# @ squirrly-seo
|
2421 |
+
#: view/BlockSettingsSeo.php:86
|
2422 |
msgid "What does Squirrly automatically do for SEO?"
|
2423 |
msgstr "Was tut Squirrly automatisch für SEO?"
|
2424 |
|
2425 |
+
#: view/BlockSettingsSeo.php:100
|
2426 |
#, php-format
|
2427 |
msgid ""
|
2428 |
"adds <strong>%scanonical link%s</strong>, <strong>%srel=\"prev\" and rel="
|
2429 |
"\"next\"%s</strong> metas in Header"
|
2430 |
msgstr ""
|
2431 |
|
2432 |
+
#: view/BlockSettingsSeo.php:117
|
2433 |
+
msgid "adds the required METAs (<strong>Dublin Core, Language</strong>, etc.)"
|
|
|
2434 |
msgstr ""
|
2435 |
|
2436 |
+
#: view/BlockSettingsSeo.php:133
|
2437 |
#, php-format
|
2438 |
msgid "adds the <strong>%sXML Sitemap%s</strong> for search engines: %s"
|
2439 |
msgstr ""
|
2440 |
|
2441 |
+
#: view/BlockSettingsSeo.php:149
|
2442 |
+
#, php-format
|
2443 |
+
msgid "adds <strong>Feed style</strong> to your blog feed (eg. %s/feed)"
|
2444 |
msgstr ""
|
2445 |
|
2446 |
+
#: view/BlockSettingsSeo.php:165
|
2447 |
#, php-format
|
2448 |
msgid ""
|
2449 |
+
"adds the <strong>%sfavicon.ico%s</strong> and the <strong>%sicons for "
|
2450 |
+
"tablets and smartphones%s</strong>"
|
2451 |
msgstr ""
|
2452 |
|
2453 |
+
#: view/BlockSettingsSeo.php:181
|
2454 |
#, php-format
|
2455 |
msgid "adds the <strong>%sJson-LD%s</strong> metas for Semantic SEO"
|
2456 |
msgstr ""
|
2457 |
|
2458 |
+
#: view/BlockSettingsSeo.php:197
|
2459 |
+
#, php-format
|
2460 |
+
msgid ""
|
2461 |
+
"adds the <strong>%sNoindex%s</strong>, <strong>%sNofollow%s</strong> metas "
|
2462 |
+
"for your desired pages"
|
2463 |
+
msgstr ""
|
2464 |
+
|
2465 |
+
#: view/BlockSettingsSeo.php:201
|
2466 |
msgid ""
|
2467 |
"Note! By switching the <strong>Json-LD</strong>, <strong>XML Sitemap</"
|
2468 |
"strong> and <strong>Favicon</strong> on, you open new options below"
|
2469 |
msgstr ""
|
2470 |
|
2471 |
+
#: view/BlockSettingsSeo.php:210
|
2472 |
+
msgid "First Page Optimization"
|
2473 |
msgstr ""
|
2474 |
|
2475 |
+
#: view/BlockSettingsSeo.php:211
|
2476 |
#, php-format
|
2477 |
msgid "%sThe best SEO approach to Meta information%s"
|
2478 |
msgstr ""
|
2479 |
|
2480 |
+
#: view/BlockSettingsSeo.php:212
|
2481 |
+
msgid "Optimize the <strong>Titles</strong>"
|
2482 |
msgstr ""
|
2483 |
|
2484 |
+
#: view/BlockSettingsSeo.php:227
|
2485 |
+
#, php-format
|
2486 |
+
msgid "Optimize %sDescriptions%s "
|
2487 |
+
msgstr ""
|
2488 |
+
|
2489 |
+
#: view/BlockSettingsSeo.php:243
|
2490 |
+
#, php-format
|
2491 |
+
msgid "Optimize %sKeywords%s "
|
2492 |
msgstr ""
|
2493 |
|
2494 |
+
#: view/BlockSettingsSeo.php:259
|
2495 |
msgid "SEO for all post/pages"
|
2496 |
msgstr ""
|
2497 |
|
2498 |
+
#: view/BlockSettingsSeo.php:260
|
2499 |
#, php-format
|
2500 |
msgid ""
|
2501 |
"To customize the Title and Description for all the Posts and Pages in your "
|
2502 |
+
"site use the %sSquirrly Snippet Tool%s"
|
2503 |
+
msgstr ""
|
2504 |
+
|
2505 |
+
#: view/BlockSettingsSeo.php:262
|
2506 |
+
msgid "Add the Post tags in <strong>Keyword META</strong>."
|
2507 |
+
msgstr ""
|
2508 |
+
|
2509 |
+
#: view/BlockSettingsSeo.php:284
|
2510 |
+
msgid "Squirrly Snippet G17-True Render"
|
2511 |
+
msgstr ""
|
2512 |
+
|
2513 |
+
#: view/BlockSettingsSeo.php:308
|
2514 |
+
msgid "First Page Optimization:"
|
2515 |
msgstr ""
|
2516 |
|
2517 |
# @ squirrly-seo
|
2518 |
+
#: view/BlockSettingsSeo.php:314
|
2519 |
msgid "Title:"
|
2520 |
msgstr "Titel:"
|
2521 |
|
2522 |
+
#: view/BlockSettingsSeo.php:319
|
2523 |
msgid "Tips: Length 10-75 chars"
|
2524 |
msgstr ""
|
2525 |
|
2526 |
# @ squirrly-seo
|
2527 |
+
#: view/BlockSettingsSeo.php:323
|
2528 |
msgid "Description:"
|
2529 |
msgstr "Beschreibung:"
|
2530 |
|
2531 |
+
#: view/BlockSettingsSeo.php:327
|
2532 |
msgid "Tips: Length 70-165 chars"
|
2533 |
msgstr ""
|
2534 |
|
2535 |
# @ squirrly-seo
|
2536 |
+
#: view/BlockSettingsSeo.php:330
|
2537 |
msgid "Keywords:"
|
2538 |
msgstr "Schlüsselwörter:"
|
2539 |
|
2540 |
+
#: view/BlockSettingsSeo.php:331
|
2541 |
+
msgid "Tips: use 2-4 keywords"
|
2542 |
+
msgstr ""
|
2543 |
+
|
2544 |
+
#: view/BlockSettingsSeo.php:334
|
2545 |
+
msgid "OG Image:"
|
2546 |
+
msgstr ""
|
2547 |
|
2548 |
+
#: view/BlockSettingsSeo.php:335
|
2549 |
+
msgid "Select Open Graph Image"
|
2550 |
+
msgstr ""
|
2551 |
+
|
2552 |
+
#: view/BlockSettingsSeo.php:340
|
2553 |
msgid "First Page Preview (Title, Description, Keywords)"
|
2554 |
msgstr ""
|
2555 |
|
2556 |
+
#: view/BlockSettingsSeo.php:342
|
2557 |
+
msgid "Squirrly Snippet"
|
2558 |
+
msgstr ""
|
2559 |
+
|
2560 |
+
#: view/BlockSettingsSeo.php:354
|
2561 |
msgid ""
|
2562 |
+
"If you don't see any changes in your Google snippet, check if other SEO "
|
2563 |
+
"themes or plugins affect Squirrly."
|
2564 |
msgstr ""
|
2565 |
|
2566 |
+
#: view/BlockSettingsSeo.php:358
|
2567 |
#, php-format
|
2568 |
msgid ""
|
2569 |
+
"Use the %s<strong>Squirrly Snippet Tool</strong>%s while editing a Post/Page "
|
2570 |
+
"to customize the Title and the Description."
|
|
|
2571 |
msgstr ""
|
2572 |
|
2573 |
+
#: view/BlockSettingsSeo.php:367
|
2574 |
msgid "Social Media Options"
|
2575 |
msgstr ""
|
2576 |
|
2577 |
+
#: view/BlockSettingsSeo.php:369
|
2578 |
msgid "Select the language you're using on Social Media"
|
2579 |
msgstr ""
|
2580 |
|
2581 |
+
#: view/BlockSettingsSeo.php:515
|
2582 |
#, php-format
|
2583 |
msgid "%sHow to pop out in Social Media with your links%s"
|
2584 |
msgstr ""
|
2585 |
|
2586 |
+
#: view/BlockSettingsSeo.php:516
|
2587 |
#, php-format
|
2588 |
msgid "%sGet busy with Facebook’s new Search Engine functions%s"
|
2589 |
msgstr ""
|
2590 |
|
2591 |
+
#: view/BlockSettingsSeo.php:517
|
2592 |
#, php-format
|
2593 |
msgid ""
|
2594 |
"%sHow I Added Twitter Cards in My WordPress for Better Inbound Marketing%s"
|
2595 |
msgstr ""
|
2596 |
|
2597 |
+
#: view/BlockSettingsSeo.php:523
|
2598 |
+
msgid "Open Graph G17 - 2017 Settings"
|
2599 |
msgstr ""
|
2600 |
|
2601 |
+
#: view/BlockSettingsSeo.php:535
|
2602 |
+
msgid "Squirrly Adds the Best Codes for Open Graph and Twitter Cards"
|
2603 |
+
msgstr ""
|
2604 |
+
|
2605 |
+
#: view/BlockSettingsSeo.php:551
|
2606 |
+
#, php-format
|
2607 |
msgid ""
|
2608 |
+
"Add the Social Open Graph protocol so that your Facebook shares look good. "
|
2609 |
+
"%sCheck here%s. "
|
2610 |
msgstr ""
|
2611 |
|
2612 |
+
#: view/BlockSettingsSeo.php:555
|
2613 |
+
msgid "Facebook App ID"
|
2614 |
msgstr ""
|
2615 |
|
2616 |
+
#: view/BlockSettingsSeo.php:556
|
2617 |
#, php-format
|
2618 |
+
msgid "Add the %sFacebook App%s ID "
|
|
|
2619 |
msgstr ""
|
2620 |
|
2621 |
+
#: view/BlockSettingsSeo.php:573
|
2622 |
msgid "You need to add your <strong>Twitter account</strong> below"
|
2623 |
msgstr ""
|
2624 |
|
2625 |
+
#: view/BlockSettingsSeo.php:583
|
2626 |
+
msgid "Add the <strong>Twitter card</strong> in your tweets. "
|
2627 |
+
msgstr ""
|
2628 |
+
|
2629 |
+
#: view/BlockSettingsSeo.php:591
|
2630 |
+
#, php-format
|
2631 |
+
msgid ""
|
2632 |
+
"Use <strong>Twitter %ssummary_large_image%s</strong> for your Twitter Card. "
|
2633 |
+
msgstr ""
|
2634 |
+
|
2635 |
+
#: view/BlockSettingsSeo.php:603
|
2636 |
msgid "Social Media Accounts"
|
2637 |
msgstr ""
|
2638 |
|
2639 |
+
#: view/BlockSettingsSeo.php:604
|
2640 |
#, php-format
|
2641 |
msgid "%sLink your Google+ profile to the content you create%s"
|
2642 |
msgstr ""
|
2643 |
|
2644 |
+
#: view/BlockSettingsSeo.php:605
|
2645 |
#, php-format
|
2646 |
msgid ""
|
2647 |
"%sTwitter account is mandatory for <strong>Twitter Card Validation</strong>%s"
|
2648 |
msgstr ""
|
2649 |
|
2650 |
+
#: view/BlockSettingsSeo.php:606
|
2651 |
#, php-format
|
2652 |
msgid ""
|
2653 |
"%sAdd all your social accounts for <strong>JSON-LD Semantic SEO</strong>%s"
|
2654 |
msgstr ""
|
2655 |
|
2656 |
+
#: view/BlockSettingsSeo.php:607 view/BlockSettingsSeo.php:843
|
|
|
2657 |
#, php-format
|
2658 |
msgid "%sSpecify your social profiles to Google%s"
|
2659 |
msgstr ""
|
2660 |
|
2661 |
+
#: view/BlockSettingsSeo.php:615
|
2662 |
msgid "Your Twitter Account:"
|
2663 |
msgstr ""
|
2664 |
|
2665 |
+
#: view/BlockSettingsSeo.php:622
|
2666 |
msgid "Google Plus Profile:"
|
2667 |
msgstr ""
|
2668 |
|
2669 |
+
#: view/BlockSettingsSeo.php:629
|
2670 |
msgid "Facebook Profile:"
|
2671 |
msgstr ""
|
2672 |
|
2673 |
+
#: view/BlockSettingsSeo.php:636
|
2674 |
msgid "Linkedin Profile:"
|
2675 |
msgstr ""
|
2676 |
|
2677 |
+
#: view/BlockSettingsSeo.php:643
|
2678 |
+
msgid "Pinterest Profile:"
|
2679 |
+
msgstr ""
|
2680 |
+
|
2681 |
+
#: view/BlockSettingsSeo.php:650
|
2682 |
+
msgid "Instagram Profile:"
|
2683 |
+
msgstr ""
|
2684 |
+
|
2685 |
+
#: view/BlockSettingsSeo.php:657
|
2686 |
+
msgid "Youtube Profile:"
|
2687 |
+
msgstr ""
|
2688 |
+
|
2689 |
+
#: view/BlockSettingsSeo.php:667
|
2690 |
msgid "XML Sitemap for Google"
|
2691 |
msgstr ""
|
2692 |
|
2693 |
+
#: view/BlockSettingsSeo.php:668
|
2694 |
msgid ""
|
2695 |
+
"Squirrly Sitemap is the fastest way to tell Google about the pages on your "
|
2696 |
+
"site. <strong>Supports Multisites, Google News, Images, Videos, Custom Post "
|
2697 |
+
"Types, Custom Taxonomies and Ecommerce products</strong>"
|
2698 |
msgstr ""
|
2699 |
|
2700 |
+
#: view/BlockSettingsSeo.php:669
|
2701 |
#, php-format
|
2702 |
msgid "%sHow to submit your sitemap.xml in Google Webmaster Tool%s"
|
2703 |
msgstr ""
|
2704 |
|
2705 |
+
#: view/BlockSettingsSeo.php:670
|
2706 |
#, php-format
|
2707 |
msgid ""
|
2708 |
"%s10 Vital To Dos to Feed Your SEO Content Machine After You Post Articles%s"
|
2709 |
msgstr ""
|
2710 |
|
2711 |
+
#: view/BlockSettingsSeo.php:671
|
2712 |
+
#, php-format
|
2713 |
+
msgid ""
|
2714 |
+
"For Google News Sitemap, ensure that your site is included in %sGoogle News%s"
|
2715 |
+
msgstr ""
|
2716 |
+
|
2717 |
+
#: view/BlockSettingsSeo.php:680
|
2718 |
msgid "XML Sitemap Options"
|
2719 |
msgstr ""
|
2720 |
|
2721 |
+
#: view/BlockSettingsSeo.php:689
|
2722 |
msgid "Ping your sitemap to Google and Bing when a new post is published"
|
2723 |
msgstr ""
|
2724 |
|
2725 |
+
#: view/BlockSettingsSeo.php:695
|
2726 |
msgid "Build Sitemaps for"
|
2727 |
msgstr ""
|
2728 |
|
2729 |
+
#: view/BlockSettingsSeo.php:703
|
2730 |
msgid "Google News"
|
2731 |
msgstr ""
|
2732 |
|
2733 |
+
#: view/BlockSettingsSeo.php:715
|
2734 |
msgid "Categories"
|
2735 |
msgstr ""
|
2736 |
|
2737 |
+
#: view/BlockSettingsSeo.php:729
|
2738 |
msgid "Tags"
|
2739 |
msgstr ""
|
2740 |
|
2741 |
+
#: view/BlockSettingsSeo.php:744
|
2742 |
msgid "Archive"
|
2743 |
msgstr ""
|
2744 |
|
2745 |
+
#: view/BlockSettingsSeo.php:752
|
2746 |
msgid "Custom Taxonomies"
|
2747 |
msgstr ""
|
2748 |
|
2749 |
+
#: view/BlockSettingsSeo.php:759
|
2750 |
msgid "Custom Posts"
|
2751 |
msgstr ""
|
2752 |
|
2753 |
+
#: view/BlockSettingsSeo.php:763
|
2754 |
+
#, php-format
|
2755 |
+
msgid ""
|
2756 |
+
"Select only the Post Types that have links in them. Your sitemap will be %s"
|
2757 |
+
msgstr ""
|
2758 |
+
|
2759 |
+
#: view/BlockSettingsSeo.php:767
|
2760 |
msgid "Include in Sitemaps"
|
2761 |
msgstr ""
|
2762 |
|
2763 |
+
#: view/BlockSettingsSeo.php:770
|
2764 |
msgid "<strong>Images</strong> from posts/pages"
|
2765 |
msgstr ""
|
2766 |
|
2767 |
+
#: view/BlockSettingsSeo.php:773
|
2768 |
msgid "<strong>Videos</strong> (embeded and local media)"
|
2769 |
msgstr ""
|
2770 |
|
2771 |
+
#: view/BlockSettingsSeo.php:778
|
2772 |
msgid "How often do you update your site?"
|
2773 |
msgstr ""
|
2774 |
|
2775 |
+
#: view/BlockSettingsSeo.php:780
|
2776 |
msgid "every day"
|
2777 |
msgstr ""
|
2778 |
|
2779 |
+
#: view/BlockSettingsSeo.php:781
|
2780 |
msgid "1-3 times per week"
|
2781 |
msgstr ""
|
2782 |
|
2783 |
+
#: view/BlockSettingsSeo.php:782
|
2784 |
msgid "1-3 times per month"
|
2785 |
msgstr ""
|
2786 |
|
2787 |
+
#: view/BlockSettingsSeo.php:783
|
2788 |
msgid "1-3 times per year"
|
2789 |
msgstr ""
|
2790 |
|
2791 |
+
#: view/BlockSettingsSeo.php:787
|
2792 |
+
msgid "Feed Pagination: How many Posts per page to show in sitemap?"
|
2793 |
+
msgstr ""
|
2794 |
+
|
2795 |
# @ squirrly-seo
|
2796 |
+
#: view/BlockSettingsSeo.php:802
|
2797 |
msgid "Change the Website Icon"
|
2798 |
msgstr "Ändern Sie das Website-Symbol"
|
2799 |
|
2800 |
+
#: view/BlockSettingsSeo.php:803
|
2801 |
msgid ""
|
2802 |
"Now, even tablet & smartphone browsers make use of your icons. This makes "
|
2803 |
"having a good favicon even more important."
|
2804 |
msgstr ""
|
2805 |
|
2806 |
+
#: view/BlockSettingsSeo.php:804
|
2807 |
#, php-format
|
2808 |
msgid ""
|
2809 |
"You can use %shttp://convertico.com/%s to convert your photo to icon and "
|
2811 |
msgstr ""
|
2812 |
|
2813 |
# @ squirrly-seo
|
2814 |
+
#: view/BlockSettingsSeo.php:810
|
2815 |
msgid "Upload file:"
|
2816 |
msgstr "Datei hochladen:"
|
2817 |
|
2818 |
# @ squirrly-seo
|
2819 |
+
#: view/BlockSettingsSeo.php:823 view/FrontMenu.php:305 view/FrontMenu.php:446
|
2820 |
msgid "Upload"
|
2821 |
msgstr "Hochladen"
|
2822 |
|
2823 |
# @ squirrly-seo
|
2824 |
+
#: view/BlockSettingsSeo.php:827
|
2825 |
msgid ""
|
2826 |
"If you don't see the new icon in your browser, empty the browser cache and "
|
2827 |
"refresh the page."
|
2830 |
"Cache und aktualisieren Sie die Seite."
|
2831 |
|
2832 |
# @ squirrly-seo
|
2833 |
+
#: view/BlockSettingsSeo.php:829
|
2834 |
msgid "File types: JPG, JPEG, GIF and PNG."
|
2835 |
msgstr "Dateitypen: JPG, JPEG, GIF und PNG."
|
2836 |
|
2837 |
+
#: view/BlockSettingsSeo.php:831
|
2838 |
msgid ""
|
2839 |
"Does not physically create the favicon.ico file. The best option for "
|
2840 |
"Multisites."
|
2841 |
msgstr ""
|
2842 |
|
2843 |
+
#: view/BlockSettingsSeo.php:839
|
2844 |
msgid "JSON-LD for Semantic SEO"
|
2845 |
msgstr ""
|
2846 |
|
2847 |
+
#: view/BlockSettingsSeo.php:840
|
2848 |
msgid ""
|
2849 |
"Squirrly will automatically add the JSON-LD Structured Data in your site."
|
2850 |
msgstr ""
|
2851 |
|
2852 |
+
#: view/BlockSettingsSeo.php:841
|
2853 |
#, php-format
|
2854 |
msgid "%sJSON-LD's Big Day at Google%s"
|
2855 |
msgstr ""
|
2856 |
|
2857 |
+
#: view/BlockSettingsSeo.php:842
|
2858 |
#, php-format
|
2859 |
msgid "%sGoogle Testing Tool%s"
|
2860 |
msgstr ""
|
2861 |
|
2862 |
+
#: view/BlockSettingsSeo.php:849
|
2863 |
+
msgid "JSON-LD G17 -2x More Options"
|
2864 |
+
msgstr ""
|
2865 |
+
|
2866 |
+
#: view/BlockSettingsSeo.php:866
|
2867 |
msgid "Your site type:"
|
2868 |
msgstr ""
|
2869 |
|
2870 |
+
#: view/BlockSettingsSeo.php:868
|
2871 |
msgid "Organization"
|
2872 |
msgstr ""
|
2873 |
|
2874 |
+
#: view/BlockSettingsSeo.php:869
|
2875 |
msgid "Personal"
|
2876 |
msgstr ""
|
2877 |
|
2878 |
+
#: view/BlockSettingsSeo.php:875
|
2879 |
msgid "Your Organization Name:"
|
2880 |
msgstr ""
|
2881 |
|
2882 |
+
#: view/BlockSettingsSeo.php:876
|
2883 |
msgid "Your Name:"
|
2884 |
msgstr ""
|
2885 |
|
2886 |
+
#: view/BlockSettingsSeo.php:880
|
2887 |
msgid "Job Title:"
|
2888 |
msgstr ""
|
2889 |
|
2890 |
+
#: view/BlockSettingsSeo.php:884
|
2891 |
msgid "Logo Url:"
|
2892 |
msgstr ""
|
2893 |
|
2894 |
+
#: view/BlockSettingsSeo.php:885
|
2895 |
msgid "Image Url:"
|
2896 |
msgstr ""
|
2897 |
|
2898 |
+
#: view/BlockSettingsSeo.php:886
|
2899 |
msgid "Select Image"
|
2900 |
msgstr ""
|
2901 |
|
2902 |
+
#: view/BlockSettingsSeo.php:890
|
2903 |
msgid "Contact Phone:"
|
2904 |
msgstr ""
|
2905 |
|
2906 |
+
#: view/BlockSettingsSeo.php:894
|
2907 |
msgid "Contact Type:"
|
2908 |
msgstr ""
|
2909 |
|
2910 |
+
#: view/BlockSettingsSeo.php:896
|
2911 |
msgid "Customer Service"
|
2912 |
msgstr ""
|
2913 |
|
2914 |
+
#: view/BlockSettingsSeo.php:897
|
2915 |
msgid "Technical Support"
|
2916 |
msgstr ""
|
2917 |
|
2918 |
+
#: view/BlockSettingsSeo.php:898
|
2919 |
msgid "Billing Support"
|
2920 |
msgstr ""
|
2921 |
|
2922 |
+
#: view/BlockSettingsSeo.php:899
|
2923 |
msgid "Bill Payment"
|
2924 |
msgstr ""
|
2925 |
|
2926 |
+
#: view/BlockSettingsSeo.php:900
|
2927 |
msgid "Sales"
|
2928 |
msgstr ""
|
2929 |
|
2930 |
+
#: view/BlockSettingsSeo.php:901
|
2931 |
msgid "Reservations"
|
2932 |
msgstr ""
|
2933 |
|
2934 |
+
#: view/BlockSettingsSeo.php:902
|
2935 |
msgid "Credit Card Support"
|
2936 |
msgstr ""
|
2937 |
|
2938 |
+
#: view/BlockSettingsSeo.php:903
|
2939 |
msgid "Emergency"
|
2940 |
msgstr ""
|
2941 |
|
2942 |
+
#: view/BlockSettingsSeo.php:904
|
2943 |
msgid "Baggage Tracking"
|
2944 |
msgstr ""
|
2945 |
|
2946 |
+
#: view/BlockSettingsSeo.php:905
|
2947 |
msgid "Roadside Assistance"
|
2948 |
msgstr ""
|
2949 |
|
2950 |
+
#: view/BlockSettingsSeo.php:906
|
2951 |
msgid "Package Tracking"
|
2952 |
msgstr ""
|
2953 |
|
2954 |
+
#: view/BlockSettingsSeo.php:911
|
2955 |
msgid "Short Description:"
|
2956 |
msgstr ""
|
2957 |
|
2958 |
+
#: view/BlockSettingsSeo.php:919
|
2959 |
+
msgid "Add your social accounts for Json-LD"
|
2960 |
+
msgstr ""
|
2961 |
+
|
2962 |
+
#: view/BlockSettingsSeo.php:924
|
2963 |
+
msgid "How the search results will look like once Google grabs your data."
|
2964 |
+
msgstr ""
|
2965 |
+
|
2966 |
+
#: view/BlockSettingsSeo.php:933 view/BlockToolbar.php:8
|
2967 |
+
msgid "Tracking Tools"
|
2968 |
+
msgstr ""
|
2969 |
+
|
2970 |
+
#: view/BlockSettingsSeo.php:934
|
2971 |
+
#, php-format
|
2972 |
+
msgid "%sHow to Get the Most Out of Google Analytics%s"
|
2973 |
+
msgstr ""
|
2974 |
+
|
2975 |
+
#: view/BlockSettingsSeo.php:935
|
2976 |
+
#, php-format
|
2977 |
+
msgid "%sWhat is Facebook Pixel?%s"
|
2978 |
+
msgstr ""
|
2979 |
+
|
2980 |
+
#: view/BlockSettingsSeo.php:936
|
2981 |
+
#, php-format
|
2982 |
+
msgid "%sA Beginner’s Guide to Facebook Insights%s"
|
2983 |
+
msgstr ""
|
2984 |
+
|
2985 |
+
#: view/BlockSettingsSeo.php:943
|
2986 |
+
msgid "Google Tracking G17"
|
2987 |
+
msgstr ""
|
2988 |
+
|
2989 |
+
#: view/BlockSettingsSeo.php:955
|
2990 |
+
msgid "Facebook Tracking G17"
|
2991 |
+
msgstr ""
|
2992 |
+
|
2993 |
+
#: view/BlockSettingsSeo.php:967
|
2994 |
+
msgid "Rich Pins G17"
|
2995 |
+
msgstr ""
|
2996 |
+
|
2997 |
+
#: view/BlockSettingsSeo.php:984 view/BlockSettingsSeo.php:994
|
2998 |
+
#: view/BlockSettingsSeo.php:1007
|
2999 |
+
#, php-format
|
3000 |
+
msgid "Facebook Admin ID (for %sInsights%s ):"
|
3001 |
+
msgstr ""
|
3002 |
+
|
3003 |
+
#: view/BlockSettingsSeo.php:987 view/BlockSettingsSeo.php:997
|
3004 |
+
#: view/BlockSettingsSeo.php:1010
|
3005 |
+
msgid "Facebook ID or https://www.facebook.com/YourProfileName"
|
3006 |
+
msgstr ""
|
3007 |
+
|
3008 |
+
#: view/BlockSettingsSeo.php:1002
|
3009 |
+
msgid "Add a Facebook Admin ID"
|
3010 |
+
msgstr ""
|
3011 |
+
|
3012 |
+
#: view/BlockSettingsSeo.php:1016
|
3013 |
+
#, php-format
|
3014 |
+
msgid "Google %sAnalytics ID%s:"
|
3015 |
+
msgstr ""
|
3016 |
+
|
3017 |
+
#: view/BlockSettingsSeo.php:1021
|
3018 |
+
#, php-format
|
3019 |
+
msgid "Facebook %sPixel ID%s:"
|
3020 |
+
msgstr ""
|
3021 |
+
|
3022 |
+
#: view/BlockSettingsSeo.php:1035
|
3023 |
+
#, php-format
|
3024 |
+
msgid ""
|
3025 |
+
"Load <strong>%sGoogle Analytics AMP%s</strong> and <strong>%sFacebook Pixel "
|
3026 |
+
"AMP%s</strong> tracking%s(Warning! The tracking works only for AMP Themes.%s)"
|
3027 |
+
msgstr ""
|
3028 |
+
|
3029 |
+
#: view/BlockSettingsSeo.php:1042
|
3030 |
+
msgid "Measure Your Success"
|
3031 |
msgstr ""
|
3032 |
|
3033 |
+
#: view/BlockSettingsSeo.php:1043
|
3034 |
+
#, php-format
|
3035 |
+
msgid "%sHow to set the Google Webmaster Tool%s"
|
3036 |
msgstr ""
|
3037 |
|
3038 |
+
#: view/BlockSettingsSeo.php:1044
|
3039 |
+
#, php-format
|
3040 |
+
msgid "%sBest practices to help Google find, crawl, and index your site%s"
|
3041 |
msgstr ""
|
3042 |
|
3043 |
+
#: view/BlockSettingsSeo.php:1045
|
3044 |
#, php-format
|
3045 |
+
msgid "%sBing Webmaster Tools Help & How-To Center%s"
|
3046 |
msgstr ""
|
3047 |
|
3048 |
+
#: view/BlockSettingsSeo.php:1046
|
3049 |
#, php-format
|
3050 |
+
msgid "%sRich Pins Validator%s"
|
3051 |
msgstr ""
|
3052 |
|
3053 |
+
#: view/BlockSettingsSeo.php:1052
|
3054 |
#, php-format
|
3055 |
+
msgid "Google META verification code for %sWebmaster Tool%s:"
|
3056 |
msgstr ""
|
3057 |
|
3058 |
+
#: view/BlockSettingsSeo.php:1058
|
3059 |
#, php-format
|
3060 |
+
msgid "Bing META code (for %sWebmaster Tool%s ):"
|
3061 |
msgstr ""
|
3062 |
|
3063 |
+
#: view/BlockSettingsSeo.php:1065
|
3064 |
+
#, php-format
|
3065 |
+
msgid "Alexa META code (for %sAlexa Tool%s ):"
|
3066 |
msgstr ""
|
3067 |
|
3068 |
+
#: view/BlockSettingsSeo.php:1071
|
3069 |
+
#, php-format
|
3070 |
+
msgid "Pinterest Website Validator Code: (validate %sRich Pins%s )"
|
3071 |
msgstr ""
|
3072 |
|
3073 |
# @ squirrly-seo
|
3074 |
+
#: view/BlockSupport.php:7
|
3075 |
msgid "Go to Profile"
|
3076 |
msgstr "Zum Profil"
|
3077 |
|
3078 |
# @ squirrly-seo
|
3079 |
+
#: view/BlockSupport.php:7 view/BlockSupport.php:8
|
3080 |
msgid "Profile"
|
3081 |
msgstr "Profil"
|
3082 |
|
3083 |
+
#: view/BlockSupport.php:32 view/BlockSupport.php:87
|
3084 |
+
msgid "For more support:"
|
3085 |
+
msgstr ""
|
|
|
3086 |
|
3087 |
+
#: view/BlockSupport.php:33 view/BlockSupport.php:88
|
3088 |
+
#, php-format
|
3089 |
+
msgid "10 AM to 4 PM (GMT): Mon-Fri %sby email%s."
|
3090 |
+
msgstr ""
|
3091 |
|
3092 |
+
#: view/BlockSupport.php:34 view/BlockSupport.php:90
|
3093 |
+
#, php-format
|
3094 |
+
msgid "%sLive Chat%s on Youtube. Thursday 4 PM."
|
3095 |
+
msgstr ""
|
3096 |
|
3097 |
+
#: view/BlockSupport.php:35 view/BlockSupport.php:91
|
3098 |
+
#, php-format
|
3099 |
+
msgid "Google Plus %sSupport Community%s."
|
3100 |
+
msgstr ""
|
3101 |
|
3102 |
+
#: view/BlockSupport.php:36 view/BlockSupport.php:92
|
3103 |
+
#, php-format
|
3104 |
+
msgid "New Lessons Mon. and Tue. on %sTwitter%s."
|
3105 |
+
msgstr ""
|
3106 |
|
3107 |
# @ squirrly-seo
|
3108 |
+
#: view/BlockSupport.php:48
|
3109 |
msgid "How was your Squirrly experience today?"
|
3110 |
msgstr "Wie war Ihre Squirrly Erfahrung heute?"
|
3111 |
|
3112 |
# @ squirrly-seo
|
3113 |
+
#: view/BlockSupport.php:57
|
3114 |
msgid "How was Squirrly today?"
|
3115 |
msgstr "Wie war Squirrly heute?"
|
3116 |
|
3117 |
+
#: view/BlockSupport.php:62
|
3118 |
msgid "Angry"
|
3119 |
msgstr ""
|
3120 |
|
3121 |
+
#: view/BlockSupport.php:62
|
3122 |
+
msgid "Annoying"
|
3123 |
+
msgstr ""
|
3124 |
+
|
3125 |
+
#: view/BlockSupport.php:65
|
3126 |
msgid "Sad"
|
3127 |
msgstr ""
|
3128 |
|
3129 |
+
#: view/BlockSupport.php:65
|
3130 |
+
msgid "Bad"
|
3131 |
+
msgstr ""
|
3132 |
+
|
3133 |
+
#: view/BlockSupport.php:68
|
3134 |
msgid "Happy"
|
3135 |
msgstr ""
|
3136 |
|
3137 |
+
#: view/BlockSupport.php:68
|
3138 |
+
msgid "Nice"
|
3139 |
+
msgstr ""
|
3140 |
+
|
3141 |
+
#: view/BlockSupport.php:71
|
3142 |
msgid "Excited"
|
3143 |
msgstr ""
|
3144 |
|
3145 |
+
#: view/BlockSupport.php:71
|
3146 |
+
msgid "Great"
|
3147 |
+
msgstr ""
|
3148 |
+
|
3149 |
+
#: view/BlockSupport.php:74
|
3150 |
msgid "Love it"
|
3151 |
msgstr ""
|
3152 |
|
3153 |
# @ squirrly-seo
|
3154 |
+
#: view/BlockSupport.php:80
|
3155 |
msgid "Please tell us why?"
|
3156 |
msgstr "Bitte sagen Sie uns, warum?"
|
3157 |
|
3158 |
# @ squirrly-seo
|
3159 |
+
#: view/BlockSupport.php:83
|
3160 |
msgid "Send feedback"
|
3161 |
msgstr "Feedback senden"
|
3162 |
|
3163 |
+
#: view/BlockSupport.php:89
|
3164 |
+
#, php-format
|
3165 |
+
msgid "%sSupport button%s here in WordPress (^^)"
|
3166 |
+
msgstr ""
|
3167 |
+
|
3168 |
# @ squirrly-seo
|
3169 |
+
#: view/BlockSupport.php:97
|
3170 |
msgid "Thank you! You can send us a happy face tomorow too."
|
3171 |
msgstr "Danke! Sie können uns auch morgen ein fröhliches Gesicht senden."
|
3172 |
|
3173 |
+
#: view/BlockToolbar.php:5
|
3174 |
+
msgid "Structured Data"
|
3175 |
+
msgstr ""
|
3176 |
+
|
3177 |
+
#: view/BlockToolbar.php:6
|
3178 |
+
msgid "Social Media"
|
3179 |
+
msgstr ""
|
3180 |
+
|
3181 |
+
#: view/BlockToolbar.php:7
|
3182 |
+
msgid "Site Icon"
|
3183 |
+
msgstr ""
|
3184 |
+
|
3185 |
+
#: view/BlockToolbar.php:9
|
3186 |
+
msgid "Connections"
|
3187 |
+
msgstr ""
|
3188 |
+
|
3189 |
+
#: view/BlockToolbar.php:10
|
3190 |
+
msgid "Sitemap XML"
|
3191 |
+
msgstr ""
|
3192 |
+
|
3193 |
+
#: view/BlockToolbar.php:11
|
3194 |
+
msgid "Ranking Options"
|
3195 |
+
msgstr ""
|
3196 |
+
|
3197 |
+
#: view/BlockToolbar.php:12
|
3198 |
+
msgid "Advanced"
|
3199 |
+
msgstr ""
|
3200 |
+
|
3201 |
+
#: view/BlockToolbar.php:13
|
3202 |
+
msgid "Robots.txt"
|
3203 |
+
msgstr ""
|
3204 |
+
|
3205 |
+
#: view/BlockToolbar.php:15
|
3206 |
+
msgid "Import"
|
3207 |
+
msgstr ""
|
3208 |
+
|
3209 |
# @ squirrly-seo
|
3210 |
+
#: view/Blocklogin.php:2
|
3211 |
msgid "Squirrly.co Login"
|
3212 |
msgstr "Squirrly.co Login"
|
3213 |
|
3214 |
# @ squirrly-seo
|
3215 |
+
#: view/Blocklogin.php:9
|
3216 |
msgid "Email:"
|
3217 |
msgstr "Ihre E-Mail Adresse:"
|
3218 |
|
3219 |
# @ squirrly-seo
|
3220 |
+
#: view/Blocklogin.php:11
|
3221 |
msgid "Password:"
|
3222 |
msgstr "Passwort:"
|
3223 |
|
3224 |
# @ squirrly-seo
|
3225 |
+
#: view/Blocklogin.php:13
|
3226 |
msgid "Login"
|
3227 |
msgstr "Login"
|
3228 |
|
3229 |
# @ squirrly-seo
|
3230 |
+
#: view/Blocklogin.php:15
|
3231 |
msgid "Register"
|
3232 |
msgstr "Registrieren"
|
3233 |
|
3234 |
# @ squirrly-seo
|
3235 |
+
#: view/Blocklogin.php:15
|
3236 |
msgid "Register to Squirrly.co"
|
3237 |
msgstr "Bei Squirrly.co registrieren"
|
3238 |
|
3239 |
# @ squirrly-seo
|
3240 |
+
#: view/Blocklogin.php:16
|
3241 |
msgid "Lost password?"
|
3242 |
msgstr "Passwort vergessen?"
|
3243 |
|
3244 |
# @ squirrly-seo
|
3245 |
+
#: view/Blocklogin.php:16
|
3246 |
msgid "Lost password"
|
3247 |
msgstr "Passwort vergessen"
|
3248 |
|
3249 |
# @ squirrly-seo
|
3250 |
+
#: view/Blocklogin.php:21
|
3251 |
msgid "Enter your email"
|
3252 |
msgstr "In Artikel einfügen"
|
3253 |
|
3254 |
+
#: view/Blocklogin.php:23
|
3255 |
msgid "Your Email:"
|
3256 |
msgstr ""
|
3257 |
|
3258 |
+
#: view/Blocklogin.php:31
|
3259 |
+
#, php-format
|
3260 |
+
msgid "I Agree with the %sSquirrly Terms%s"
|
3261 |
+
msgstr ""
|
3262 |
+
|
3263 |
+
#: view/Blocklogin.php:33
|
3264 |
msgid "Sign Up"
|
3265 |
msgstr "Anmelden"
|
3266 |
|
3267 |
+
#: view/Blocklogin.php:34
|
3268 |
msgid "I already have an account"
|
3269 |
msgstr ""
|
3270 |
|
3271 |
+
#: view/Blocklogin.php:35
|
3272 |
msgid "This email connects you to Squirrly.co"
|
3273 |
msgstr "This email connects you to Squirrly.co"
|
3274 |
|
3275 |
# @ squirrly-seo
|
3276 |
+
#: view/Blocklogin.php:46
|
3277 |
msgid "The email address is invalid!"
|
3278 |
msgstr "Die E-Mail-Adresse ist ungültig!"
|
3279 |
|
3280 |
# @ squirrly-seo
|
3281 |
+
#: view/Blocklogin.php:47
|
3282 |
msgid "Click on Sign Up button and try again ..."
|
3283 |
msgstr "Klicken Sie auf das Bild und versuchen Sie es erneut ..."
|
3284 |
|
3285 |
# @ squirrly-seo
|
3286 |
+
#: view/Blocklogin.php:48
|
3287 |
msgid "An error occured while logging in!"
|
3288 |
msgstr "Bei der Anmeldung ist ein Fehler aufgetreten!"
|
3289 |
|
3290 |
# @ squirrly-seo
|
3291 |
+
#: view/Blocklogin.php:49
|
3292 |
msgid "Connecting ..."
|
3293 |
msgstr "Verbinden ..."
|
3294 |
|
3295 |
+
#: view/Blocklogin.php:59
|
|
|
|
|
|
|
|
|
3296 |
msgid "Congratulations! You are ready to use all the features from Squirrly"
|
3297 |
msgstr ""
|
3298 |
|
3299 |
+
#: view/Blocksearch.php:2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3300 |
msgid "Waiting for your editor to load .. "
|
3301 |
msgstr ""
|
3302 |
|
3303 |
+
#: view/Blocksearch.php:3
|
3304 |
msgid ""
|
3305 |
"Javascript is disabled! You need to activate the javascript in order to use "
|
3306 |
"Squirrly SEO."
|
3307 |
msgstr ""
|
3308 |
|
3309 |
+
#: view/Blocksearch.php:6
|
3310 |
msgid "Optimize for Keyword"
|
3311 |
msgstr "Schlüsselwort optimieren"
|
3312 |
|
3313 |
+
#: view/Blocksearch.php:7
|
3314 |
+
msgid "Squirrly Briefcase"
|
3315 |
+
msgstr ""
|
3316 |
+
|
3317 |
+
#: view/Blocksearch.php:14
|
3318 |
+
msgid "Add keyword to briefcase ..."
|
3319 |
+
msgstr ""
|
3320 |
+
|
3321 |
# @ squirrly-seo
|
3322 |
+
#: view/Blocksearch.php:28
|
3323 |
msgid "Enter a keyword"
|
3324 |
msgstr "Ein Schlüsselwort eingeben"
|
3325 |
|
3326 |
# @ squirrly-seo
|
3327 |
+
#: view/Blocksearch.php:29
|
3328 |
msgid "for Squirrly Live SEO optimization"
|
3329 |
msgstr "Live-SEO-Optimierung für Squirrly"
|
3330 |
|
3331 |
# @ squirrly-seo
|
3332 |
+
#: view/Blocksearch.php:44
|
3333 |
msgid "Do a research"
|
3334 |
msgstr "Recherchieren"
|
3335 |
|
3336 |
# @ squirrly-seo
|
3337 |
+
#: view/Blocksearch.php:45
|
3338 |
+
msgid "Use this keyword"
|
3339 |
+
msgstr "Dieses Schlüsselwort verwenden"
|
3340 |
+
|
3341 |
+
# @ squirrly-seo
|
3342 |
+
#: view/Blocksearch.php:49
|
3343 |
msgid "Enter a keyword above!"
|
3344 |
msgstr "Geben Sie oben ein Schlüsselwort ein!"
|
3345 |
|
3346 |
# @ squirrly-seo
|
3347 |
+
#: view/Blocksearch.php:50
|
3348 |
msgid "I have more then one keyword!"
|
3349 |
msgstr "Ich habe mehr als ein Schlüsselwort!"
|
3350 |
|
3351 |
# @ squirrly-seo
|
3352 |
+
#: view/Blocksearch.php:56
|
3353 |
msgid "Images"
|
3354 |
msgstr "Bilder"
|
3355 |
|
3356 |
# @ squirrly-seo
|
3357 |
+
#: view/Blocksearch.php:57
|
3358 |
msgid "Twitter"
|
3359 |
msgstr "Twitter"
|
3360 |
|
3361 |
# @ squirrly-seo
|
3362 |
+
#: view/Blocksearch.php:58
|
3363 |
msgid "Wiki"
|
3364 |
msgstr "Wiki"
|
3365 |
|
3366 |
# @ squirrly-seo
|
3367 |
+
#: view/Blocksearch.php:59
|
|
|
|
|
|
|
|
|
|
|
3368 |
msgid "Blogs"
|
3369 |
msgstr "Blogs"
|
3370 |
|
3371 |
# @ squirrly-seo
|
3372 |
+
#: view/Blocksearch.php:60
|
3373 |
msgid "My articles"
|
3374 |
msgstr "Meine Artikel"
|
3375 |
|
3376 |
# @ squirrly-seo
|
3377 |
+
#: view/Blocksearch.php:68
|
3378 |
msgid "Show only Copyright Free images"
|
3379 |
msgstr "Nur urheberrechtfreie Bilder zeigen"
|
3380 |
|
3381 |
+
#: view/Blockseo.php:13
|
3382 |
+
msgid "Split Window"
|
3383 |
+
msgstr ""
|
3384 |
+
|
3385 |
+
#: view/FrontMenu.php:38
|
3386 |
+
msgid "Saved!"
|
3387 |
+
msgstr ""
|
3388 |
+
|
3389 |
+
#: view/FrontMenu.php:39
|
3390 |
+
msgid "Saved! This is how the preview looks like"
|
3391 |
+
msgstr ""
|
3392 |
+
|
3393 |
+
#: view/FrontMenu.php:45
|
3394 |
+
msgid "Activate Squirrly SEO for this page"
|
3395 |
+
msgstr ""
|
3396 |
+
|
3397 |
+
#: view/FrontMenu.php:61
|
3398 |
+
msgid "META"
|
3399 |
+
msgstr ""
|
3400 |
+
|
3401 |
+
#: view/FrontMenu.php:64
|
3402 |
+
msgid "FACEBOOK"
|
3403 |
+
msgstr ""
|
3404 |
+
|
3405 |
+
#: view/FrontMenu.php:67
|
3406 |
+
msgid "TWITTER"
|
3407 |
+
msgstr ""
|
3408 |
+
|
3409 |
+
#: view/FrontMenu.php:70
|
3410 |
+
msgid "ADVANCED"
|
3411 |
+
msgstr ""
|
3412 |
+
|
3413 |
+
#: view/FrontMenu.php:83
|
3414 |
+
msgid "How this page will appear on Search Engines"
|
3415 |
+
msgstr ""
|
3416 |
+
|
3417 |
+
#: view/FrontMenu.php:88
|
3418 |
+
msgid "Edit Snippet"
|
3419 |
+
msgstr ""
|
3420 |
+
|
3421 |
+
#: view/FrontMenu.php:103 view/FrontMenu.php:294 view/FrontMenu.php:434
|
3422 |
+
msgid "Cancel"
|
3423 |
+
msgstr ""
|
3424 |
+
|
3425 |
+
#: view/FrontMenu.php:104 view/FrontMenu.php:295 view/FrontMenu.php:435
|
3426 |
+
#: view/FrontMenu.php:496
|
3427 |
+
msgid "Save"
|
3428 |
+
msgstr ""
|
3429 |
+
|
3430 |
+
#: view/FrontMenu.php:111
|
3431 |
+
msgid "SEO Title"
|
3432 |
+
msgstr ""
|
3433 |
+
|
3434 |
+
#: view/FrontMenu.php:114 view/FrontMenu.php:164
|
3435 |
+
msgid "Pattern: "
|
3436 |
+
msgstr ""
|
3437 |
+
|
3438 |
+
#: view/FrontMenu.php:119
|
3439 |
+
msgid "Current Title"
|
3440 |
+
msgstr ""
|
3441 |
+
|
3442 |
+
#: view/FrontMenu.php:124
|
3443 |
+
msgid "Default Title"
|
3444 |
+
msgstr ""
|
3445 |
+
|
3446 |
+
#: view/FrontMenu.php:144 view/FrontMenu.php:191
|
3447 |
+
msgid "Pattern"
|
3448 |
+
msgstr ""
|
3449 |
+
|
3450 |
+
#: view/FrontMenu.php:161
|
3451 |
+
msgid "META Description"
|
3452 |
+
msgstr ""
|
3453 |
+
|
3454 |
+
#: view/FrontMenu.php:168
|
3455 |
+
msgid "Current Description"
|
3456 |
+
msgstr ""
|
3457 |
+
|
3458 |
+
#: view/FrontMenu.php:173
|
3459 |
+
msgid "Default Description"
|
3460 |
+
msgstr ""
|
3461 |
+
|
3462 |
+
#: view/FrontMenu.php:207
|
3463 |
+
msgid "Meta Keywords"
|
3464 |
+
msgstr ""
|
3465 |
+
|
3466 |
+
# @ squirrly-seo
|
3467 |
+
#: view/FrontMenu.php:211
|
3468 |
+
msgid "+ Add keyword"
|
3469 |
+
msgstr "Fügen Sie ein anderes Schlüsselwort ein"
|
3470 |
+
|
3471 |
+
#: view/FrontMenu.php:219
|
3472 |
+
msgid "Canonical link"
|
3473 |
+
msgstr ""
|
3474 |
+
|
3475 |
+
#: view/FrontMenu.php:222
|
3476 |
+
msgid "Found: "
|
3477 |
+
msgstr ""
|
3478 |
+
|
3479 |
+
#: view/FrontMenu.php:228
|
3480 |
+
msgid "Current"
|
3481 |
+
msgstr ""
|
3482 |
+
|
3483 |
+
#: view/FrontMenu.php:234
|
3484 |
+
msgid "Default Link"
|
3485 |
+
msgstr ""
|
3486 |
+
|
3487 |
+
#: view/FrontMenu.php:245
|
3488 |
+
msgid ""
|
3489 |
+
"To edit the snippet, you have to activate Squirrly SEO for this page first"
|
3490 |
+
msgstr ""
|
3491 |
+
|
3492 |
+
#: view/FrontMenu.php:246 view/FrontMenu.php:389 view/FrontMenu.php:489
|
3493 |
+
#: view/FrontMenu.php:545
|
3494 |
+
msgid "or Click here"
|
3495 |
+
msgstr ""
|
3496 |
+
|
3497 |
+
#: view/FrontMenu.php:254
|
3498 |
+
msgid "How this page appears on Facebook"
|
3499 |
+
msgstr ""
|
3500 |
+
|
3501 |
+
#: view/FrontMenu.php:259
|
3502 |
+
msgid "Edit Open Graph"
|
3503 |
+
msgstr ""
|
3504 |
+
|
3505 |
+
#: view/FrontMenu.php:267 view/FrontMenu.php:408
|
3506 |
+
msgid "The image size must be at least 500 pixels wide"
|
3507 |
+
msgstr ""
|
3508 |
+
|
3509 |
+
#: view/FrontMenu.php:281 view/FrontMenu.php:422
|
3510 |
+
msgid ""
|
3511 |
+
"This is the Featured Image. You can changin it if you edit the snippet and "
|
3512 |
+
"upload anothe image."
|
3513 |
+
msgstr ""
|
3514 |
+
|
3515 |
+
#: view/FrontMenu.php:301
|
3516 |
+
msgid "Media Image"
|
3517 |
+
msgstr ""
|
3518 |
+
|
3519 |
+
#: view/FrontMenu.php:306 view/FrontMenu.php:447
|
3520 |
+
msgid "Image size must be at least 500 pixels wide"
|
3521 |
+
msgstr ""
|
3522 |
+
|
3523 |
+
#: view/FrontMenu.php:320
|
3524 |
+
msgid "OG Title"
|
3525 |
+
msgstr ""
|
3526 |
+
|
3527 |
+
#: view/FrontMenu.php:333
|
3528 |
+
msgid "OG Description"
|
3529 |
+
msgstr ""
|
3530 |
+
|
3531 |
+
#: view/FrontMenu.php:346
|
3532 |
+
msgid "Author Link"
|
3533 |
+
msgstr ""
|
3534 |
+
|
3535 |
+
#: view/FrontMenu.php:351
|
3536 |
+
msgid "if there are more authors, separate their facebook links with commas"
|
3537 |
+
msgstr ""
|
3538 |
+
|
3539 |
+
#: view/FrontMenu.php:357
|
3540 |
+
msgid "Page type"
|
3541 |
+
msgstr ""
|
3542 |
+
|
3543 |
+
#: view/FrontMenu.php:361
|
3544 |
+
msgid "Website"
|
3545 |
+
msgstr ""
|
3546 |
+
|
3547 |
+
#: view/FrontMenu.php:367
|
3548 |
+
msgid "Article"
|
3549 |
+
msgstr ""
|
3550 |
+
|
3551 |
+
#: view/FrontMenu.php:370
|
3552 |
+
msgid "Book"
|
3553 |
+
msgstr ""
|
3554 |
+
|
3555 |
+
#: view/FrontMenu.php:373
|
3556 |
+
msgid "Music"
|
3557 |
+
msgstr ""
|
3558 |
+
|
3559 |
+
#: view/FrontMenu.php:376
|
3560 |
+
msgid "Product"
|
3561 |
+
msgstr ""
|
3562 |
+
|
3563 |
+
#: view/FrontMenu.php:379
|
3564 |
+
msgid "Video"
|
3565 |
+
msgstr ""
|
3566 |
+
|
3567 |
+
#: view/FrontMenu.php:388
|
3568 |
+
msgid ""
|
3569 |
+
"To edit the Open Graph, you have to activate Squirrly SEO for this page first"
|
3570 |
+
msgstr ""
|
3571 |
+
|
3572 |
+
#: view/FrontMenu.php:397
|
3573 |
+
msgid "How this page appears on Twitter"
|
3574 |
+
msgstr ""
|
3575 |
+
|
3576 |
+
#: view/FrontMenu.php:400
|
3577 |
+
msgid "Edit Twitter Card"
|
3578 |
+
msgstr ""
|
3579 |
+
|
3580 |
+
#: view/FrontMenu.php:442
|
3581 |
+
msgid "Twitter Image"
|
3582 |
+
msgstr ""
|
3583 |
+
|
3584 |
+
#: view/FrontMenu.php:460
|
3585 |
+
msgid "Twitter Card Title"
|
3586 |
+
msgstr ""
|
3587 |
+
|
3588 |
+
#: view/FrontMenu.php:473
|
3589 |
+
msgid "Twitter Card Description"
|
3590 |
+
msgstr ""
|
3591 |
+
|
3592 |
+
#: view/FrontMenu.php:488
|
3593 |
+
msgid ""
|
3594 |
+
"To edit the Twitter Card, you have to activate Squirrly SEO for this page "
|
3595 |
+
"first"
|
3596 |
+
msgstr ""
|
3597 |
+
|
3598 |
+
#: view/FrontMenu.php:503
|
3599 |
+
msgid "Let Google Index This Page"
|
3600 |
+
msgstr ""
|
3601 |
+
|
3602 |
+
#: view/FrontMenu.php:516
|
3603 |
+
msgid "Pass Link Juice to This Page"
|
3604 |
+
msgstr ""
|
3605 |
+
|
3606 |
+
#: view/FrontMenu.php:529
|
3607 |
+
msgid "Show it in Sitemap.xml"
|
3608 |
+
msgstr ""
|
3609 |
+
|
3610 |
+
#: view/FrontMenu.php:544
|
3611 |
+
msgid "To edit, you have to activate Squirrly SEO for this page first."
|
3612 |
+
msgstr ""
|
3613 |
+
|
3614 |
+
#: view/FrontMenu.php:564
|
3615 |
+
msgid "post type"
|
3616 |
+
msgstr ""
|
3617 |
+
|
3618 |
+
#: view/FrontMenu.php:566
|
3619 |
+
msgid "og type"
|
3620 |
+
msgstr ""
|
3621 |
+
|
3622 |
+
#: view/FrontMenu.php:588
|
3623 |
+
msgid "No data for this URL. You can change the SEO in Frontend"
|
3624 |
msgstr ""
|
3625 |
|
3626 |
+
#: view/FrontMenu.php:608
|
3627 |
+
msgid "Enable Squirrly SEO to load Squirrly Snippet"
|
3628 |
msgstr ""
|
3629 |
|
3630 |
+
#: view/FrontMenu.php:632
|
3631 |
+
#, php-format
|
3632 |
+
msgid "%sPlease connect to Squirrly first%s"
|
3633 |
msgstr ""
|
3634 |
|
3635 |
+
# @ squirrly-seo
|
3636 |
+
#~ msgid "Exact search:"
|
3637 |
+
#~ msgstr "Exakte Suche:"
|
3638 |
+
|
3639 |
+
# @ squirrly-seo
|
3640 |
+
#~ msgid "For Squirrly to work, you have to have tinymce editor installed!"
|
3641 |
+
#~ msgstr "Damit Squirrly arbeitet, muss tinymce installiert sein!"
|
3642 |
+
|
3643 |
+
# @ squirrly-seo
|
3644 |
+
#~ msgid ":( I lost my squirrel. Please reload the page."
|
3645 |
+
#~ msgstr ":( Ich verlor meine Eichhörnchen. Laden Sie die Seite erneut."
|
3646 |
+
|
3647 |
+
# @ squirrly-seo
|
3648 |
+
#~ msgid "Switch to Visual editor!"
|
3649 |
+
#~ msgstr "Zum Visual Editor wechseln !"
|
3650 |
+
|
3651 |
+
# @ squirrly-seo
|
3652 |
+
#~ msgid "Tips: 2-4 keywords"
|
3653 |
+
#~ msgstr "Tipp: Länge 2-4 Schlüsselwörter"
|
3654 |
+
|
3655 |
+
# @ squirrly-seo
|
3656 |
+
#~ msgid "Go to:"
|
3657 |
+
#~ msgstr "Gehe zu:"
|
3658 |
+
|
3659 |
+
# @ squirrly-seo
|
3660 |
+
#~ msgid "support page"
|
3661 |
+
#~ msgstr "Support Page"
|
3662 |
+
|
3663 |
+
# @ squirrly-seo
|
3664 |
+
#~ msgid "Clear"
|
3665 |
+
#~ msgstr "Löschen"
|
3666 |
+
|
3667 |
+
# @ squirrly-seo
|
3668 |
+
#~ msgid "Do the research"
|
3669 |
+
#~ msgstr "Recherchieren"
|
3670 |
+
|
3671 |
+
# @ squirrly-seo
|
3672 |
+
#~ msgid "Enter even more keywords."
|
3673 |
+
#~ msgstr "Geben Sie noch mehrere Schlüsselwörter ein."
|
3674 |
+
|
3675 |
+
# @ squirrly-seo
|
3676 |
+
#~ msgid "Let some keywords for the next time as well!"
|
3677 |
+
#~ msgstr "Lassen Sie ein paar Schlüsselwörter auch für das nächste Mal!"
|
3678 |
+
|
3679 |
+
# @ squirrly-seo
|
3680 |
+
#~ msgid "News"
|
3681 |
+
#~ msgstr "News"
|
3682 |
+
|
3683 |
# @ squirrly-seo
|
3684 |
#~ msgid "Notice: "
|
3685 |
#~ msgstr "Hinweis: "
|
languages/squirrly-seo-ro_RO.mo
CHANGED
Binary file
|
languages/squirrly-seo-ro_RO.po
CHANGED
@@ -1,22 +1,22 @@
|
|
1 |
msgid ""
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: squirrly_seo\n"
|
4 |
-
"POT-Creation-Date:
|
5 |
-
"PO-Revision-Date:
|
6 |
"Last-Translator: Squirrly <contact@squirrly.co>\n"
|
7 |
"Language-Team: Squirrly UK <support@squirrly.co>\n"
|
8 |
"Language: ro_RO\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
-
"X-Generator: Poedit 1.
|
13 |
"X-Poedit-KeywordsList: __;_e\n"
|
14 |
-
"X-Poedit-Basepath:
|
15 |
-
"
|
16 |
"X-Poedit-SourceCharset: UTF-8\n"
|
17 |
"X-Poedit-SearchPath-0: .\n"
|
18 |
|
19 |
-
#: classes/
|
20 |
msgid ""
|
21 |
"Function get_class does not exists! Is required for Squirrly to work "
|
22 |
"properly."
|
@@ -24,7 +24,7 @@ msgstr ""
|
|
24 |
"Functia get_class nu exista! E necesara pentru a functiona corect pluginul "
|
25 |
"Squirrly"
|
26 |
|
27 |
-
#: classes/
|
28 |
msgid ""
|
29 |
"Function file_exists does not exists! Is required for Squirrly to work "
|
30 |
"properly."
|
@@ -32,51 +32,75 @@ msgstr ""
|
|
32 |
"Functia file_exists nu exista! E necesara pentru a functiona corect pluginul "
|
33 |
"Squirrly"
|
34 |
|
35 |
-
#: classes/
|
36 |
msgid "The home directory is not set!"
|
37 |
msgstr "Directorul home nu este setat!"
|
38 |
|
39 |
-
#: classes/
|
40 |
msgid "The PHP version has to be greater then 4.0"
|
41 |
msgstr "Versiunea PHP trebuie sa fie mai mare de 4.0"
|
42 |
|
43 |
-
#: classes/
|
44 |
msgid "Turn off warnings!"
|
45 |
msgstr "Opreste avertizarile"
|
46 |
|
47 |
-
#: classes/
|
48 |
-
msgid "
|
49 |
-
msgstr "
|
50 |
-
|
51 |
-
#: classes/SQ_Error.php:67
|
52 |
-
msgid "Note: "
|
53 |
-
msgstr "Atentie:"
|
54 |
|
55 |
-
#: classes/
|
56 |
msgid "Getting started"
|
57 |
msgstr "Ajutor"
|
58 |
|
59 |
-
#: classes/
|
60 |
-
msgid "
|
61 |
-
msgstr "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
62 |
|
63 |
-
#: classes/
|
64 |
msgid "Fix it for me!"
|
65 |
msgstr "Repara-l"
|
66 |
|
67 |
-
#: classes/
|
68 |
-
msgid "
|
69 |
-
msgstr "
|
70 |
|
71 |
-
#: classes/
|
72 |
msgid ""
|
73 |
-
"You have META
|
74 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
75 |
msgstr ""
|
76 |
-
"Aveti duplicate in META Descriere. Opriti Squirrly Seo Description sau "
|
77 |
-
"dezactivati alte plugin-uri de SEO"
|
78 |
|
79 |
-
#: classes/
|
80 |
msgid ""
|
81 |
"You have Open Graph META Duplicates. Disable the Squirrly SEO Open Graph or "
|
82 |
"disable the other SEO Plugins"
|
@@ -84,7 +108,7 @@ msgstr ""
|
|
84 |
"Aveti duplicate in META Open Graph. Opriti Squirrly Seo Open Graph sau "
|
85 |
"dezactivati alte plugin-uri de SEO"
|
86 |
|
87 |
-
#: classes/
|
88 |
msgid ""
|
89 |
"You have Twitter Card META Duplicates. Disable the Squirrly SEO Twitter Card "
|
90 |
"or disable the other SEO Plugins"
|
@@ -92,11 +116,11 @@ msgstr ""
|
|
92 |
"Aveti duplicate in META Twitter Card. Opriti Squirrly Seo Twitter Card sau "
|
93 |
"dezactivati alte plugin-uri de SEO"
|
94 |
|
95 |
-
#: classes/
|
96 |
msgid "You're blocking google from indexing your site!"
|
97 |
msgstr "Blochezi accesul la google spre indexarea site-ului"
|
98 |
|
99 |
-
#: classes/
|
100 |
msgid ""
|
101 |
"It is highly recommended that you include the %postname% variable in the "
|
102 |
"permalink structure. <br />Go to Settings > Permalinks and add /%postname%/ "
|
@@ -106,139 +130,399 @@ msgstr ""
|
|
106 |
">Mergi la Setari > Legaturi permanente si adauga /%postname%/ in campul "
|
107 |
"Structură personalizată"
|
108 |
|
109 |
-
#:
|
110 |
msgid ""
|
111 |
-
"
|
112 |
-
"
|
113 |
msgstr ""
|
114 |
|
115 |
-
#:
|
116 |
-
msgid "
|
117 |
-
msgstr "
|
118 |
|
119 |
-
#:
|
120 |
-
msgid "
|
121 |
-
msgstr "
|
122 |
|
123 |
-
#:
|
124 |
-
|
125 |
-
|
126 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
127 |
|
128 |
-
#:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
129 |
msgid "Performance <br />Analytics"
|
130 |
msgstr ""
|
131 |
|
132 |
-
#: controllers/
|
133 |
-
msgid "
|
134 |
msgstr ""
|
135 |
|
136 |
-
#: controllers/
|
137 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
138 |
msgstr ""
|
139 |
|
140 |
-
#: controllers/
|
141 |
-
msgid "
|
142 |
-
msgstr "
|
143 |
|
144 |
-
#: controllers/
|
145 |
#, fuzzy
|
146 |
msgid "SEO Settings"
|
147 |
msgstr "Setari"
|
148 |
|
149 |
-
#: controllers/
|
150 |
-
msgid "
|
151 |
-
msgstr "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
152 |
|
153 |
-
#: controllers/
|
154 |
-
msgid "
|
155 |
-
msgstr "
|
156 |
|
157 |
-
#: controllers/
|
158 |
msgid "Squirrly"
|
159 |
msgstr "Squirrly"
|
160 |
|
161 |
-
#: controllers/
|
162 |
msgid "Custom description: "
|
163 |
msgstr "Descrierea:"
|
164 |
|
165 |
-
#: controllers/
|
166 |
msgid "Custom title: "
|
167 |
msgstr "Titlul"
|
168 |
|
169 |
-
#: controllers/
|
170 |
msgid "SEO Analytics, by Squirrly"
|
171 |
msgstr "SEO Analytics, de la Squirrly"
|
172 |
|
173 |
-
#: controllers/
|
174 |
msgid "Update"
|
175 |
msgstr "Update"
|
176 |
|
177 |
-
#: controllers/
|
178 |
msgid "Not Public"
|
179 |
msgstr "Ciorna"
|
180 |
|
181 |
-
#: controllers/
|
182 |
msgid "Could not process"
|
183 |
msgstr "Nu s-a putut verifica"
|
184 |
|
185 |
-
#: controllers/
|
186 |
-
|
187 |
-
msgid "
|
188 |
-
msgstr "Nu s-au putut lua informatii de la google (IP Blocat)"
|
189 |
-
|
190 |
-
#: controllers/SQ_PostsList.php:313 models/SQ_BlockPostsAnalytics.php:393
|
191 |
-
msgid "> 100"
|
192 |
msgstr ""
|
193 |
|
194 |
-
#: controllers/
|
195 |
-
|
196 |
-
|
197 |
-
msgstr "Indexare Google"
|
198 |
|
199 |
-
#: controllers/
|
|
|
200 |
#, php-format
|
201 |
msgid "%s"
|
202 |
msgstr ""
|
203 |
|
204 |
-
#: core/
|
205 |
#, php-format
|
206 |
msgid "Error: %s"
|
207 |
msgstr "Eroare: %s"
|
208 |
|
209 |
-
#: core/
|
210 |
-
#: core/SQ_Blocklogin/SQ_Blocklogin.php:86
|
211 |
msgid "An error occured. Mabe a network error :("
|
212 |
msgstr "A aparut o eroare. Probabil o eroare de retea :("
|
213 |
|
214 |
-
#: core/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
215 |
msgid "Plugin Feedback"
|
216 |
msgstr "Feedback Squirrly"
|
217 |
|
218 |
-
#: core/
|
219 |
msgid "Thank you for your feedback"
|
220 |
msgstr "Multumesc pentru feedback"
|
221 |
|
222 |
-
#: core/
|
223 |
-
#: core/SQ_BlockSupport/SQ_BlockSupport.php:99
|
224 |
msgid "Could not send the email..."
|
225 |
msgstr "Nu s-a putut trimite email ..."
|
226 |
|
227 |
-
#: core/
|
228 |
-
#: core/SQ_BlockSupport/SQ_BlockSupport.php:103
|
229 |
msgid "No message."
|
230 |
msgstr "Nici un mesaj."
|
231 |
|
232 |
-
#: core/
|
233 |
msgid "Plugin Support"
|
234 |
msgstr "Suport la plugin"
|
235 |
|
236 |
-
#: core/
|
237 |
#, fuzzy
|
238 |
msgid "Message sent. Thank you!"
|
239 |
msgstr "Mesajul a fost trimis..."
|
240 |
|
241 |
-
#: core/
|
242 |
#, php-format
|
243 |
msgid ""
|
244 |
"We found your email, so it means you already have a Squirrly.co account. "
|
@@ -249,567 +533,603 @@ msgstr ""
|
|
249 |
"Conecteaza-te cu contul tau de Squirrly. Daca ai uitat parola atunci apasa "
|
250 |
"%saici%s"
|
251 |
|
252 |
-
#: core/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
253 |
#, php-format
|
254 |
msgid ""
|
255 |
"Could not send your informations to squirrly. Please register %smanually%s."
|
256 |
msgstr ""
|
257 |
"Nu s-a putut trimite informatia la Squirrly. Inregistreaza-te %smanual%s."
|
258 |
|
259 |
-
#: core/
|
260 |
msgid "Wrong email or password!"
|
261 |
msgstr "Email sau Parola gresita!"
|
262 |
|
263 |
-
#: core/
|
264 |
msgid "You can use this account only for the URL you registered first!"
|
265 |
msgstr "Poti folosi acest cont doar pentru URL-ul inregistrat la inceput!"
|
266 |
|
267 |
-
#: core/
|
268 |
msgid "An error occured."
|
269 |
msgstr "A aparut o eroare."
|
270 |
|
271 |
-
#: core/
|
272 |
msgid "Both fields are required."
|
273 |
msgstr "Ambele campuri sunt obligatorii!"
|
274 |
|
275 |
-
#: core/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
276 |
msgid "Recent discussions:"
|
277 |
msgstr "Discutii recente:"
|
278 |
|
279 |
-
#: core/
|
280 |
-
msgid "
|
281 |
-
msgstr "
|
282 |
|
283 |
-
#: core/
|
284 |
msgid "Competition:"
|
285 |
msgstr "Competitia:"
|
286 |
|
287 |
-
#: core/
|
288 |
msgid "Trend:"
|
289 |
msgstr "Trend:"
|
290 |
|
291 |
-
#: core/
|
|
|
|
|
|
|
|
|
292 |
msgid "date"
|
293 |
msgstr "data"
|
294 |
|
295 |
-
#: core/
|
296 |
msgid "Read it!"
|
297 |
msgstr "Citeste!"
|
298 |
|
299 |
-
#: core/
|
300 |
msgid "Insert it!"
|
301 |
msgstr "Adauga!"
|
302 |
|
303 |
-
#: core/
|
304 |
msgid "Reference"
|
305 |
msgstr "Referinta"
|
306 |
|
307 |
-
#: core/
|
308 |
msgid "Insert as box"
|
309 |
msgstr "Adauga"
|
310 |
|
311 |
-
#: core/
|
|
|
|
|
|
|
|
|
312 |
msgid "Not relevant?"
|
313 |
msgstr "Nu e ce doresti?"
|
314 |
|
315 |
-
#: core/
|
316 |
msgid "Insert in your article"
|
317 |
msgstr "Adauga paragraf in articol"
|
318 |
|
319 |
-
#: core/
|
320 |
-
msgid "
|
321 |
msgstr ""
|
322 |
-
"Pentru ca Squirrly sa functioneze, trebuie sa ai editorul TinyMCE instalat"
|
323 |
-
|
324 |
-
#: core/SQ_Blocksearch/SQ_Blocksearch.php:50
|
325 |
-
msgid ":( I lost my squirrel. Please reload the page."
|
326 |
-
msgstr ":( Am pierdut veverita. Te rog sa dai refresh la pagina."
|
327 |
|
328 |
-
#: core/
|
329 |
msgid "No results found!"
|
330 |
msgstr "Nu s-a gasit nimic ..."
|
331 |
|
332 |
-
#: core/
|
333 |
-
msgid "
|
334 |
-
msgstr "
|
335 |
-
|
336 |
-
#: core/SQ_Blocksearch/SQ_Blocksearch.php:50
|
337 |
-
msgid "Use more words in one keyword"
|
338 |
-
msgstr "Am mai multe cuvinte"
|
339 |
|
340 |
-
#: core/
|
341 |
msgid "Takes too long to check this keyword ..."
|
342 |
msgstr "Ia prea mult timp sa verifice cuvantul ..."
|
343 |
|
344 |
-
#: core/
|
345 |
msgid "Do a research!"
|
346 |
msgstr "Mai multe detalii!"
|
347 |
|
348 |
-
#: core/
|
349 |
msgid "Do more research!"
|
350 |
msgstr "Mai multe detalii!"
|
351 |
|
352 |
-
#: core/
|
353 |
#, php-format
|
354 |
msgid "[ ATTRIBUTE: Please check: %s to find out how to attribute this image ]"
|
355 |
msgstr ""
|
356 |
"[ ATTRIBUTE: Verificati: %s pentru a vedea conditile de atribuire a "
|
357 |
"imaginii ]"
|
358 |
|
359 |
-
#: core/
|
360 |
msgid "Has creative commons attributes"
|
361 |
msgstr "Are conditii de atribuire"
|
362 |
|
363 |
-
#: core/
|
364 |
msgid "No known copyright restrictions"
|
365 |
msgstr "Nu sunt restrictii de copyright cunoscute"
|
366 |
|
367 |
-
#: core/
|
368 |
-
msgid "
|
369 |
-
|
|
|
|
|
|
|
|
|
370 |
|
371 |
-
#: core/
|
372 |
-
msgid "
|
373 |
-
msgstr "
|
374 |
|
375 |
-
#: core/
|
376 |
-
msgid "
|
377 |
-
msgstr "
|
378 |
|
379 |
-
#: core/
|
380 |
-
|
381 |
-
|
382 |
-
msgstr "Modificare META"
|
383 |
|
384 |
-
#: core/
|
385 |
-
msgid "
|
386 |
-
msgstr "
|
387 |
|
388 |
-
#: core/
|
389 |
-
|
390 |
-
|
|
|
391 |
|
392 |
-
#: core/
|
393 |
-
|
394 |
-
|
|
|
395 |
|
396 |
-
#: core/
|
397 |
-
|
398 |
-
|
|
|
399 |
|
400 |
-
#: core/
|
401 |
-
|
|
|
|
|
|
|
|
|
|
|
402 |
msgstr ""
|
403 |
|
404 |
-
#: core/
|
405 |
-
msgid ""
|
406 |
-
|
407 |
-
msgstr "Click pe butonul Update pentru a vedea snipetul site-ului"
|
408 |
|
409 |
-
#: core/
|
410 |
-
|
411 |
-
|
|
|
412 |
|
413 |
-
#: core/
|
414 |
-
msgid ""
|
415 |
-
"
|
416 |
-
"Explorer. <br /> We recommend you to use Chrome or Mozilla."
|
417 |
-
msgstr ""
|
418 |
-
"Pentru a functiona Squirrly, trebui sa folosesti o versiune mai noua de "
|
419 |
-
"Internet explorer. <br /> Recomandam sa folosesti Chrome sau Mozilla."
|
420 |
|
421 |
-
#: core/
|
422 |
-
|
423 |
-
"
|
424 |
-
"
|
425 |
-
|
426 |
-
|
427 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
428 |
|
429 |
-
#:
|
|
|
|
|
|
|
|
|
|
|
430 |
msgid "Type"
|
431 |
msgstr ""
|
432 |
|
433 |
-
#: models/
|
434 |
msgid "Author"
|
435 |
msgstr ""
|
436 |
|
437 |
-
#: models/
|
438 |
-
#, fuzzy
|
439 |
msgid "Keywords"
|
440 |
msgstr "Cuvinte cheie:"
|
441 |
|
442 |
-
#: models/
|
443 |
#, php-format
|
444 |
msgid "Google.%s Position"
|
445 |
msgstr ""
|
446 |
|
447 |
-
#: models/
|
448 |
-
msgid "Monthly Traffic"
|
449 |
-
msgstr "Trafic lunar"
|
450 |
-
|
451 |
-
#: models/SQ_BlockPostsAnalytics.php:280
|
452 |
msgid "Date"
|
453 |
msgstr "Data"
|
454 |
|
455 |
-
#: models/
|
456 |
msgid "Reset Filters"
|
457 |
msgstr "Resetare Filtre"
|
458 |
|
459 |
-
#: models/
|
|
|
|
|
|
|
|
|
460 |
#, php-format
|
461 |
msgid "Edit “%s”"
|
462 |
msgstr ""
|
463 |
|
464 |
-
#: models/
|
465 |
msgid "Edit this item"
|
466 |
msgstr ""
|
467 |
|
468 |
-
#: models/
|
469 |
msgid "Edit"
|
470 |
msgstr ""
|
471 |
|
472 |
-
#: models/
|
473 |
#, php-format
|
474 |
msgid "Preview “%s”"
|
475 |
msgstr ""
|
476 |
|
477 |
-
#: models/
|
478 |
msgid "Preview"
|
479 |
msgstr ""
|
480 |
|
481 |
-
#: models/
|
482 |
#, php-format
|
483 |
msgid "View “%s”"
|
484 |
msgstr ""
|
485 |
|
486 |
-
#: models/
|
487 |
msgid "View"
|
488 |
msgstr ""
|
489 |
|
490 |
-
#: models/
|
491 |
msgid "No Tags"
|
492 |
msgstr ""
|
493 |
|
494 |
-
#: models/
|
495 |
-
msgid "
|
496 |
-
msgstr ""
|
497 |
-
|
498 |
-
#: models/SQ_BlockPostsAnalytics.php:401
|
499 |
-
msgid "Not yet verified"
|
500 |
-
msgstr ""
|
501 |
|
502 |
-
#: models/
|
503 |
-
msgid "
|
504 |
msgstr ""
|
505 |
|
506 |
-
#: models/
|
507 |
-
|
508 |
-
msgid "%s ago"
|
509 |
msgstr ""
|
510 |
|
511 |
-
#: models/
|
512 |
-
msgid "
|
513 |
msgstr ""
|
514 |
|
515 |
-
#: models/
|
516 |
-
msgid "
|
517 |
msgstr ""
|
518 |
|
519 |
-
#: models/
|
520 |
-
msgid "
|
521 |
msgstr ""
|
522 |
|
523 |
-
#: models/
|
524 |
-
|
|
|
525 |
msgstr ""
|
526 |
|
527 |
-
#: models/
|
528 |
-
msgid "
|
529 |
msgstr ""
|
530 |
|
531 |
-
#: models/
|
532 |
#, php-format
|
533 |
-
msgid "%s
|
534 |
-
msgstr ""
|
535 |
-
|
536 |
-
#: models/SQ_BlockStatus.php:128
|
537 |
-
msgid "[close this box]"
|
538 |
msgstr ""
|
539 |
|
540 |
-
#: models/
|
541 |
-
msgid "
|
542 |
msgstr ""
|
543 |
|
544 |
-
#: models/
|
545 |
-
msgid "
|
546 |
msgstr ""
|
547 |
|
548 |
-
#: models/
|
549 |
-
|
550 |
-
msgid ""
|
551 |
-
"the articles you’ve optimized with Squirrly SEO bring you %s more traffic "
|
552 |
-
"than the other ones."
|
553 |
msgstr ""
|
554 |
|
555 |
-
#: models/
|
556 |
-
|
557 |
-
#: models/SQ_Frontend.php:551 models/SQ_Frontend.php:563
|
558 |
-
msgid "Page"
|
559 |
msgstr ""
|
560 |
|
561 |
-
#: models/
|
562 |
-
msgid "
|
563 |
msgstr ""
|
564 |
|
565 |
-
#: models/
|
566 |
msgid "The code for Google Webmaster Tool is incorrect."
|
567 |
msgstr "Codul google pentru Webmaster Tool este gresit."
|
568 |
|
569 |
-
#: models/
|
570 |
msgid "The code for Google Analytics is incorrect."
|
571 |
msgstr "Codul Google Analytics este incorect."
|
572 |
|
573 |
-
#: models/
|
574 |
msgid "The code for Facebook is incorrect."
|
575 |
msgstr "Codul Facbook este gresit."
|
576 |
|
577 |
-
#: models/
|
578 |
#, fuzzy
|
579 |
msgid "The code for Pinterest is incorrect."
|
580 |
msgstr "Codul Bing este gresit."
|
581 |
|
582 |
-
#: models/
|
583 |
msgid "The code for Bing is incorrect."
|
584 |
msgstr "Codul Bing este gresit."
|
585 |
|
586 |
-
#: models/
|
587 |
#, fuzzy
|
588 |
msgid "File type error: Only ICO, JPEG, JPG, GIF or PNG files are allowed."
|
589 |
msgstr "Eroare fisier: Doar fisierele JPEG,JPG,GIF sau PNG sunt permise"
|
590 |
|
591 |
-
#: models/
|
592 |
msgid "GD error: The GD library must be installed on your server."
|
593 |
msgstr ""
|
594 |
"Eroare librarie GD: Trebuie sa instalezi libraria GD pe server pentru a "
|
595 |
"putea adauga imaginea"
|
596 |
|
597 |
-
#: models/
|
598 |
msgid "Delete error: Could not delete the old favicon."
|
599 |
msgstr "Eroare Stergere: Nu se poate sterge icoana veche"
|
600 |
|
601 |
-
#: models/
|
602 |
msgid "Upload error: Could not upload the favicon."
|
603 |
msgstr "Eroare Upload: Nu se poate urca pe server imaginea"
|
604 |
|
605 |
-
#: models/
|
606 |
msgid "Permission error: Could not change the favicon permissions."
|
607 |
msgstr "Eroare Fisier: Nu se poate schimba permisiunea fisierului"
|
608 |
|
609 |
-
#: models/
|
610 |
msgid ""
|
611 |
"ICO Error: Could not create the ICO from file. Try with another file type."
|
612 |
msgstr "Eroare ICO: Nu se poate transforma imaginea in fisier ICO"
|
613 |
|
614 |
-
#: models/
|
615 |
msgid "The favicon has been updated."
|
616 |
msgstr "Icoana a fost adaugata pe server"
|
617 |
|
618 |
-
#: models/
|
619 |
msgid "Squirrly could not find any results for: "
|
620 |
msgstr "Squirrly nu a putut gasi rezultate pentru: "
|
621 |
|
622 |
-
#: models/
|
623 |
msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini."
|
624 |
msgstr ""
|
625 |
|
626 |
-
#: models/
|
627 |
msgid ""
|
628 |
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in "
|
629 |
"the HTML form."
|
630 |
msgstr ""
|
631 |
|
632 |
-
#: models/
|
633 |
msgid "The uploaded file was only partially uploaded."
|
634 |
msgstr ""
|
635 |
|
636 |
-
#: models/
|
637 |
msgid "No file was uploaded."
|
638 |
msgstr ""
|
639 |
|
640 |
-
#: models/
|
641 |
msgid "Missing a temporary folder."
|
642 |
msgstr ""
|
643 |
|
644 |
-
#: models/
|
645 |
msgid "Failed to write file to disk."
|
646 |
msgstr ""
|
647 |
|
648 |
-
#: models/
|
649 |
msgid "File upload stopped by extension."
|
650 |
msgstr ""
|
651 |
|
652 |
-
#: models/
|
653 |
msgid "Invalid form submission."
|
654 |
msgstr ""
|
655 |
|
656 |
-
#: models/
|
657 |
msgid "File is empty. Please upload something more substantial."
|
658 |
msgstr ""
|
659 |
|
660 |
-
#: models/
|
661 |
msgid ""
|
662 |
"File is empty. Please upload something more substantial. This error could "
|
663 |
"also be caused by uploads being disabled in your php.ini or by post_max_size "
|
664 |
"being defined as smaller than upload_max_filesize in php.ini."
|
665 |
msgstr ""
|
666 |
|
667 |
-
#: models/
|
668 |
msgid "Specified file failed upload test."
|
669 |
msgstr ""
|
670 |
|
671 |
-
#: models/
|
672 |
msgid "Sorry, this file type is not permitted for security reasons."
|
673 |
msgstr ""
|
674 |
|
675 |
-
#: models/
|
676 |
#, php-format
|
677 |
msgid "The uploaded file could not be moved to %s."
|
678 |
msgstr ""
|
679 |
|
680 |
-
#: models/
|
681 |
-
msgid "
|
682 |
-
msgstr "Vizite"
|
683 |
-
|
684 |
-
#: models/SQ_PostsList.php:34
|
685 |
-
msgid "monthly traffic"
|
686 |
msgstr ""
|
687 |
|
688 |
-
#: models/
|
689 |
msgid "See Analytics"
|
690 |
msgstr ""
|
691 |
|
692 |
-
#: models/
|
693 |
msgid "Optimize it with Squirrly to see the Analytics"
|
694 |
msgstr ""
|
695 |
|
696 |
-
#: models/
|
697 |
msgid "This post's current position in Google"
|
698 |
msgstr ""
|
699 |
|
700 |
-
#: models/
|
701 |
msgid "The total traffic for the last 30 days, for the current post"
|
702 |
msgstr ""
|
703 |
|
704 |
-
#: models/
|
705 |
msgid "The total number of shares on social media channels for this post"
|
706 |
msgstr ""
|
707 |
|
708 |
-
#: models/
|
709 |
#, fuzzy
|
710 |
msgid "The total authority for this post"
|
711 |
msgstr "Nu sunt suficiente informatii pentru acest post"
|
712 |
|
713 |
-
#: models/
|
714 |
msgid "The total number of inbound links to this post"
|
715 |
msgstr ""
|
716 |
|
717 |
-
#:
|
718 |
-
msgid ""
|
719 |
-
|
720 |
-
msgstr "Versiunea PHP trebuie sa fie mai mare de 5.1"
|
721 |
|
722 |
-
#:
|
723 |
-
|
724 |
-
|
725 |
-
msgstr "Vezi Squirrly in actiune"
|
726 |
|
727 |
-
#:
|
728 |
-
msgid "
|
729 |
msgstr ""
|
730 |
|
731 |
-
#:
|
732 |
msgid ""
|
733 |
-
"
|
734 |
-
"reach out to us."
|
735 |
msgstr ""
|
736 |
|
737 |
-
#:
|
738 |
-
msgid ""
|
739 |
-
"If you wouldn’t mind, I’d love it if you answered one quick question: why "
|
740 |
-
"did you sign up for Squirrly?"
|
741 |
msgstr ""
|
742 |
|
743 |
-
#:
|
744 |
-
|
745 |
-
|
746 |
-
msgstr "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
747 |
|
748 |
-
#:
|
749 |
-
|
|
|
|
|
|
|
|
|
750 |
msgstr ""
|
751 |
|
752 |
-
#:
|
|
|
|
|
|
|
|
|
|
|
753 |
#, fuzzy
|
754 |
msgid "Go to dashboard"
|
755 |
msgstr "dashboard"
|
756 |
|
757 |
-
#:
|
758 |
-
|
759 |
-
|
760 |
-
|
|
|
|
|
|
|
761 |
|
762 |
-
#:
|
763 |
#, php-format
|
764 |
msgid "%sHow I Started Making Money With the Squirrly Affiliate Program%s"
|
765 |
msgstr ""
|
766 |
|
767 |
-
#:
|
768 |
msgid "Affiliate Benefits"
|
769 |
msgstr "Beneficii afiliere"
|
770 |
|
771 |
-
#:
|
772 |
#, php-format
|
773 |
-
msgid "-
|
774 |
-
msgstr "
|
775 |
|
776 |
-
#:
|
777 |
msgid "- No cost"
|
778 |
msgstr "- Fara costuri"
|
779 |
|
780 |
-
#:
|
781 |
msgid "- Monthly payments in your Paypal account"
|
782 |
msgstr "- Platy lunare in contul tau de Paypal"
|
783 |
|
784 |
-
#:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
785 |
msgid ""
|
786 |
"To redirect users to your site, just change \"squirrly.co\" with your domain."
|
787 |
msgstr ""
|
788 |
"Pentru a redirecta userii spre site-ul tau, schimba doar \"squirrly.co\" cu "
|
789 |
"domeniul tau"
|
790 |
|
791 |
-
#:
|
792 |
msgid "Generate affiliate link"
|
793 |
msgstr "Generare link de afiliat"
|
794 |
|
795 |
-
#:
|
796 |
msgid ""
|
797 |
"Your affiliate account is set and ready to go. Above you have the affiliate "
|
798 |
"link. "
|
799 |
msgstr ""
|
800 |
"Linkul tau de afiliere e gata. Mai sus aveti link-ul care il puteti folosi"
|
801 |
|
802 |
-
#:
|
803 |
#, php-format
|
804 |
msgid "Check your affiliate page: %sAffiliate page%s"
|
805 |
msgstr "Verifica pagina ta de afiliat: %sAffiliate page%s"
|
806 |
|
807 |
-
#:
|
808 |
-
#, php-format
|
809 |
-
msgid "%sTerms of Use for our Affiliate Program%s"
|
810 |
-
msgstr "%sTermeni si conditii de afiliere%s"
|
811 |
-
|
812 |
-
#: themes/default/SQ_BlockAffiliate.php:63
|
813 |
msgid ""
|
814 |
"After you connect to Squirrly you can begin to use your free Squirrly "
|
815 |
"affiliate link immediately!"
|
@@ -817,1153 +1137,2671 @@ msgstr ""
|
|
817 |
"Dupa ce te conectezi la Squirrly vei putea incepe sa folosesti link-ul tau "
|
818 |
"de afiliat"
|
819 |
|
820 |
-
#:
|
821 |
msgid "Squirrly banners you can use"
|
822 |
msgstr "Bannere Squirrly"
|
823 |
|
824 |
-
#:
|
825 |
-
msgid "Go to settings"
|
826 |
-
msgstr "Mergi la setari"
|
827 |
-
|
828 |
-
#: themes/default/SQ_BlockAffiliate.php:97
|
829 |
-
msgid "See dashboard"
|
830 |
-
msgstr "Vezi Dashboard"
|
831 |
-
|
832 |
-
#: themes/default/SQ_BlockAffiliate.php:100 themes/default/SQ_BlockHelp.php:34
|
833 |
msgid "<< START HERE >>"
|
834 |
msgstr ""
|
835 |
|
836 |
-
#:
|
837 |
msgid "Moz Inbound Links"
|
838 |
msgstr ""
|
839 |
|
840 |
-
#:
|
|
|
|
|
|
|
|
|
841 |
msgid "Moz Authority"
|
842 |
msgstr ""
|
843 |
|
844 |
-
#:
|
845 |
msgid "Moz Rank"
|
846 |
msgstr ""
|
847 |
|
848 |
-
#:
|
849 |
#, fuzzy
|
850 |
msgid "Google Page Rank"
|
851 |
msgstr "URL Google Plus:"
|
852 |
|
853 |
-
#:
|
854 |
-
|
855 |
-
|
856 |
-
msgstr "Squirrly article rank"
|
857 |
|
858 |
-
#:
|
859 |
msgid "Facebook shares"
|
860 |
msgstr ""
|
861 |
|
862 |
-
#:
|
863 |
msgid "Facebook likes"
|
864 |
msgstr ""
|
865 |
|
866 |
-
#:
|
867 |
#, fuzzy
|
868 |
msgid "Twitter shares"
|
869 |
msgstr "Twitter"
|
870 |
|
871 |
-
#:
|
872 |
#, fuzzy
|
873 |
msgid "Google+ shares"
|
874 |
msgstr "Rezultate Google pentru:"
|
875 |
|
876 |
-
#:
|
877 |
msgid "LinkedIn Shares"
|
878 |
msgstr ""
|
879 |
|
880 |
-
#:
|
881 |
msgid "StumbleUpon shares"
|
882 |
msgstr ""
|
883 |
|
884 |
-
#:
|
885 |
msgid "Reddit shares"
|
886 |
msgstr ""
|
887 |
|
888 |
-
#:
|
889 |
msgid "Nicely done! Now you can focus on the other tasks"
|
890 |
msgstr ""
|
891 |
|
892 |
-
#:
|
893 |
msgid ""
|
894 |
"I know you can improve this. Please follow the documentation for a quicker "
|
895 |
"progress"
|
896 |
msgstr ""
|
897 |
|
898 |
-
#:
|
|
|
|
|
|
|
|
|
899 |
#, fuzzy
|
900 |
msgid "Current: "
|
901 |
msgstr "Pozitia curenta"
|
902 |
|
903 |
-
#:
|
904 |
msgid "Lowest: "
|
905 |
msgstr ""
|
906 |
|
907 |
-
#:
|
908 |
msgid "Highest: "
|
909 |
msgstr ""
|
910 |
|
911 |
-
#:
|
912 |
#, fuzzy
|
913 |
msgid "last 30 days"
|
914 |
msgstr "Ultimele 30 zile"
|
915 |
|
916 |
-
#:
|
917 |
-
msgid ""
|
918 |
-
"Your site audit is not yet ready. It may take up to 7 days to audit your "
|
919 |
-
"blog."
|
920 |
msgstr ""
|
921 |
|
922 |
-
#:
|
923 |
-
msgid "
|
924 |
-
msgstr "
|
925 |
|
926 |
-
#:
|
|
|
927 |
msgid ""
|
928 |
-
"
|
929 |
-
"
|
|
|
930 |
msgstr ""
|
931 |
|
932 |
-
#:
|
|
|
933 |
msgid ""
|
934 |
-
"
|
935 |
-
"
|
936 |
-
"send you valuable data about your post."
|
937 |
msgstr ""
|
938 |
|
939 |
-
#:
|
940 |
-
#,
|
941 |
-
msgid "Connect to Squirrly.co"
|
942 |
-
msgstr "Inregistreaza-te la Squirrly.co"
|
943 |
-
|
944 |
-
#: themes/default/SQ_BlockHelp.php:25
|
945 |
msgid ""
|
946 |
-
"
|
947 |
-
"
|
948 |
msgstr ""
|
949 |
|
950 |
-
#:
|
951 |
-
|
|
|
952 |
msgstr ""
|
953 |
|
954 |
-
#:
|
955 |
-
#,
|
956 |
-
msgid "
|
957 |
-
msgstr "
|
958 |
|
959 |
-
#:
|
960 |
-
|
|
|
961 |
msgstr ""
|
962 |
|
963 |
-
#:
|
964 |
-
|
965 |
-
|
966 |
-
msgstr "Optiuni Squirrly"
|
967 |
|
968 |
-
#:
|
969 |
-
msgid ""
|
970 |
-
|
971 |
-
|
|
|
|
|
972 |
msgstr ""
|
973 |
|
974 |
-
#:
|
975 |
msgid ""
|
976 |
-
"
|
977 |
-
"
|
978 |
msgstr ""
|
979 |
|
980 |
-
#:
|
981 |
-
msgid "
|
982 |
-
msgstr "
|
983 |
|
984 |
-
#:
|
985 |
-
msgid "
|
986 |
-
msgstr "
|
987 |
|
988 |
-
#:
|
989 |
-
msgid "
|
990 |
-
msgstr "
|
991 |
|
992 |
-
#:
|
993 |
-
msgid "
|
994 |
-
|
|
|
|
|
|
|
|
|
995 |
|
996 |
-
#:
|
997 |
-
msgid "
|
998 |
-
|
|
|
|
|
999 |
|
1000 |
-
#:
|
1001 |
-
msgid "
|
1002 |
-
|
|
|
|
|
1003 |
|
1004 |
-
#:
|
1005 |
-
msgid "
|
1006 |
-
|
|
|
|
|
1007 |
|
1008 |
-
#:
|
1009 |
-
msgid "
|
1010 |
-
msgstr "
|
1011 |
|
1012 |
-
#:
|
1013 |
-
msgid "
|
1014 |
-
|
|
|
|
|
1015 |
|
1016 |
-
#:
|
1017 |
-
msgid "
|
1018 |
msgstr ""
|
1019 |
|
1020 |
-
#:
|
1021 |
-
msgid "
|
1022 |
msgstr ""
|
1023 |
|
1024 |
-
#:
|
1025 |
-
msgid "
|
1026 |
msgstr ""
|
1027 |
|
1028 |
-
#:
|
1029 |
-
msgid "
|
|
|
|
|
1030 |
msgstr ""
|
1031 |
|
1032 |
-
#:
|
1033 |
-
msgid "
|
1034 |
msgstr ""
|
1035 |
|
1036 |
-
#:
|
1037 |
-
msgid "
|
1038 |
-
msgstr "
|
1039 |
|
1040 |
-
#:
|
1041 |
-
|
1042 |
-
|
|
|
|
|
|
|
1043 |
|
1044 |
-
#:
|
1045 |
-
|
1046 |
-
|
|
|
|
|
|
|
1047 |
|
1048 |
-
#:
|
1049 |
-
|
1050 |
-
|
|
|
|
|
|
|
1051 |
|
1052 |
-
#:
|
1053 |
-
|
1054 |
-
|
|
|
1055 |
|
1056 |
-
#:
|
1057 |
-
|
1058 |
-
|
|
|
1059 |
|
1060 |
-
#:
|
1061 |
-
|
1062 |
-
|
|
|
1063 |
|
1064 |
-
#:
|
1065 |
-
|
1066 |
-
|
|
|
1067 |
|
1068 |
-
#:
|
1069 |
-
msgid "
|
1070 |
-
msgstr "
|
1071 |
|
1072 |
-
#:
|
1073 |
-
msgid "
|
1074 |
-
msgstr "
|
1075 |
|
1076 |
-
#:
|
1077 |
-
msgid "
|
1078 |
-
msgstr "
|
1079 |
|
1080 |
-
#:
|
1081 |
-
msgid "
|
1082 |
-
msgstr "
|
1083 |
|
1084 |
-
#:
|
1085 |
-
|
1086 |
-
|
|
|
1087 |
|
1088 |
-
#:
|
1089 |
-
msgid "
|
1090 |
-
msgstr "
|
1091 |
|
1092 |
-
#:
|
1093 |
-
msgid "
|
1094 |
-
msgstr "
|
1095 |
|
1096 |
-
#:
|
1097 |
-
|
1098 |
-
|
|
|
|
|
|
|
1099 |
|
1100 |
-
#:
|
1101 |
-
msgid "
|
1102 |
-
msgstr "
|
1103 |
|
1104 |
-
#:
|
1105 |
-
msgid "
|
1106 |
-
msgstr "
|
1107 |
|
1108 |
-
#:
|
1109 |
-
msgid "
|
1110 |
-
msgstr "
|
1111 |
|
1112 |
-
#:
|
1113 |
-
msgid "
|
1114 |
-
msgstr "
|
1115 |
|
1116 |
-
#:
|
1117 |
-
msgid "
|
1118 |
-
msgstr "
|
1119 |
|
1120 |
-
#:
|
1121 |
-
msgid "
|
1122 |
-
msgstr "
|
1123 |
|
1124 |
-
#:
|
1125 |
-
msgid "
|
1126 |
-
|
|
|
|
|
1127 |
|
1128 |
-
#:
|
1129 |
-
msgid "
|
1130 |
-
msgstr "
|
1131 |
|
1132 |
-
#:
|
1133 |
-
msgid "
|
1134 |
-
msgstr "
|
1135 |
|
1136 |
-
#:
|
1137 |
-
msgid "
|
1138 |
-
msgstr "
|
1139 |
|
1140 |
-
#:
|
1141 |
-
msgid "
|
1142 |
-
msgstr "
|
1143 |
|
1144 |
-
#:
|
1145 |
-
msgid "
|
1146 |
-
|
|
|
|
|
|
|
1147 |
|
1148 |
-
#:
|
1149 |
-
msgid "
|
1150 |
-
msgstr "
|
1151 |
|
1152 |
-
#:
|
1153 |
-
msgid "
|
|
|
|
|
|
|
1154 |
msgstr ""
|
1155 |
|
1156 |
-
#:
|
1157 |
-
msgid "
|
1158 |
-
msgstr "
|
1159 |
|
1160 |
-
#:
|
1161 |
-
msgid "
|
1162 |
-
msgstr "
|
1163 |
|
1164 |
-
#:
|
1165 |
-
msgid "
|
1166 |
-
msgstr "
|
1167 |
|
1168 |
-
#:
|
1169 |
-
msgid "
|
1170 |
-
msgstr "
|
1171 |
|
1172 |
-
#:
|
1173 |
-
msgid "
|
1174 |
-
msgstr "
|
1175 |
|
1176 |
-
#:
|
1177 |
-
msgid "
|
1178 |
-
msgstr "
|
1179 |
|
1180 |
-
#:
|
1181 |
-
msgid "
|
1182 |
-
msgstr "
|
1183 |
|
1184 |
-
#:
|
1185 |
-
msgid "
|
1186 |
-
msgstr "
|
1187 |
|
1188 |
-
#:
|
1189 |
-
msgid "
|
1190 |
-
msgstr "
|
1191 |
|
1192 |
-
#:
|
1193 |
-
msgid "
|
1194 |
-
msgstr "
|
1195 |
|
1196 |
-
#:
|
1197 |
-
msgid "
|
1198 |
-
msgstr "
|
1199 |
|
1200 |
-
#:
|
1201 |
-
msgid "
|
1202 |
-
|
|
|
1203 |
|
1204 |
-
#:
|
1205 |
-
msgid "
|
1206 |
-
msgstr "
|
1207 |
|
1208 |
-
#:
|
1209 |
-
|
1210 |
-
|
1211 |
-
msgstr "Asistent SEO Live"
|
1212 |
|
1213 |
-
#:
|
1214 |
-
|
1215 |
-
|
|
|
|
|
|
|
|
|
1216 |
|
1217 |
-
#:
|
1218 |
-
msgid "
|
1219 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1220 |
|
1221 |
-
#:
|
1222 |
-
msgid "
|
1223 |
-
|
|
|
|
|
|
|
|
|
1224 |
|
1225 |
-
#:
|
1226 |
msgid ""
|
1227 |
-
"
|
1228 |
-
"
|
1229 |
msgstr ""
|
1230 |
|
1231 |
-
#:
|
|
|
1232 |
msgid ""
|
1233 |
-
"
|
1234 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1235 |
msgstr ""
|
1236 |
|
1237 |
-
#:
|
1238 |
-
#:
|
1239 |
-
#:
|
1240 |
-
#:
|
1241 |
-
#:
|
1242 |
-
#:
|
1243 |
-
#:
|
1244 |
-
#:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1245 |
msgid "Yes"
|
1246 |
msgstr "Da"
|
1247 |
|
1248 |
-
#:
|
1249 |
-
#:
|
1250 |
-
#:
|
1251 |
-
#:
|
1252 |
-
#:
|
1253 |
-
#:
|
1254 |
-
#:
|
1255 |
-
#:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1256 |
msgid "No"
|
1257 |
msgstr "Nu"
|
1258 |
|
1259 |
-
#:
|
1260 |
-
msgid "
|
1261 |
-
msgstr "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1262 |
|
1263 |
-
#:
|
1264 |
#, php-format
|
1265 |
msgid ""
|
1266 |
-
"
|
1267 |
-
"
|
|
|
1268 |
msgstr ""
|
1269 |
|
1270 |
-
#:
|
1271 |
-
#,
|
1272 |
-
msgid "
|
1273 |
-
|
|
|
|
|
1274 |
|
1275 |
-
#:
|
|
|
1276 |
msgid ""
|
1277 |
-
"
|
1278 |
-
"
|
1279 |
msgstr ""
|
1280 |
-
"Adauga cerintele META in pagina acasa (<strong>icon, author, language, dc "
|
1281 |
-
"publisher</strong>, etc.)"
|
1282 |
|
1283 |
-
#:
|
|
|
1284 |
msgid ""
|
1285 |
-
"
|
1286 |
-
"
|
|
|
1287 |
msgstr ""
|
1288 |
-
"Adauga <strong>favicon</strong> si <strong>icoana pentru dispozitivele "
|
1289 |
-
"Apple</strong>."
|
1290 |
|
1291 |
-
#:
|
1292 |
#, fuzzy
|
1293 |
-
msgid "
|
1294 |
msgstr "Optiuni Squirrly"
|
1295 |
|
1296 |
-
#:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1297 |
#, php-format
|
1298 |
-
msgid "%
|
1299 |
msgstr ""
|
1300 |
|
1301 |
-
#:
|
1302 |
#, php-format
|
1303 |
-
msgid "%
|
|
|
|
|
|
|
|
|
|
|
1304 |
msgstr ""
|
1305 |
|
1306 |
-
#:
|
1307 |
#, php-format
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1308 |
msgid ""
|
1309 |
-
"
|
|
|
1310 |
msgstr ""
|
1311 |
|
1312 |
-
#:
|
1313 |
-
|
1314 |
-
|
1315 |
-
msgstr "
|
1316 |
|
1317 |
-
#:
|
1318 |
-
#, fuzzy
|
1319 |
msgid ""
|
1320 |
-
"
|
|
|
1321 |
msgstr ""
|
1322 |
-
"Adauga <strong>Facebook meta objects</strong> pentru o afisare mai frumoasa "
|
1323 |
-
"in Facebook"
|
1324 |
|
1325 |
-
#:
|
1326 |
-
msgid "
|
1327 |
-
msgstr "
|
1328 |
|
1329 |
-
#:
|
1330 |
-
msgid "
|
1331 |
-
|
|
|
|
|
1332 |
|
1333 |
-
#:
|
1334 |
-
|
1335 |
-
|
1336 |
-
|
|
|
|
|
|
|
|
|
|
|
1337 |
|
1338 |
-
#:
|
1339 |
#, php-format
|
1340 |
-
msgid "%
|
1341 |
msgstr ""
|
1342 |
|
1343 |
-
#:
|
1344 |
-
#,
|
1345 |
-
msgid "
|
1346 |
-
msgstr "
|
1347 |
|
1348 |
-
#:
|
1349 |
-
#, fuzzy
|
1350 |
msgid ""
|
1351 |
-
"
|
1352 |
-
"Page"
|
1353 |
msgstr ""
|
1354 |
-
"Aadauga <strong>descrierea</strong> si <strong>cuvintele cheie</strong> "
|
1355 |
-
"corecte in prima pagina"
|
1356 |
|
1357 |
-
#:
|
1358 |
-
msgid "
|
1359 |
-
msgstr "
|
1360 |
|
1361 |
-
#:
|
1362 |
-
msgid "
|
1363 |
-
msgstr "
|
1364 |
|
1365 |
-
#:
|
1366 |
-
msgid "
|
1367 |
-
msgstr "
|
1368 |
|
1369 |
-
#:
|
1370 |
-
msgid "
|
1371 |
-
msgstr "
|
1372 |
|
1373 |
-
#:
|
1374 |
-
msgid "
|
1375 |
-
msgstr "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1376 |
|
1377 |
-
#:
|
1378 |
-
msgid "
|
1379 |
-
msgstr "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1380 |
|
1381 |
-
#:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1382 |
#, fuzzy
|
1383 |
-
msgid "
|
1384 |
-
msgstr "
|
1385 |
|
1386 |
-
#:
|
1387 |
-
msgid "
|
1388 |
-
msgstr "
|
1389 |
|
1390 |
-
#:
|
1391 |
-
msgid ""
|
1392 |
-
"If you don't see any changes in custom optimization, check if another SEO "
|
1393 |
-
"plugin affects Squirrly SEO"
|
1394 |
msgstr ""
|
1395 |
-
"Daca nu sunt modificari in titlu prin aceasta optimizate, verifica daca nu e "
|
1396 |
-
"afectat de alte pluginuri instalate."
|
1397 |
|
1398 |
-
#:
|
1399 |
-
msgid "
|
1400 |
-
msgstr "
|
1401 |
|
1402 |
-
#:
|
1403 |
-
|
1404 |
-
msgid "%sThe right premises in working with Squirrly, WordPress SEO plugin%s"
|
1405 |
msgstr ""
|
1406 |
|
1407 |
-
#:
|
1408 |
-
|
1409 |
-
msgid "%sGetting inspired with Squirrly WordPress SEO plugin%s"
|
1410 |
msgstr ""
|
1411 |
|
1412 |
-
#:
|
1413 |
-
|
1414 |
-
msgid "%sThere is a New SEO Live Assistant from Squirrly%s"
|
1415 |
msgstr ""
|
1416 |
|
1417 |
-
#:
|
1418 |
-
|
1419 |
-
msgid "%sHow to create Human friendly content with the WordPress SEO plugin?%s"
|
1420 |
msgstr ""
|
1421 |
|
1422 |
-
#:
|
1423 |
-
msgid "
|
1424 |
-
msgstr "
|
1425 |
|
1426 |
-
#:
|
1427 |
-
msgid ""
|
1428 |
-
"Show <strong>\"Enter a keyword\"</strong> bubble when posting a new article."
|
1429 |
msgstr ""
|
1430 |
-
"Afiseaza balonul <strong>\"Adauga un keyword\"</strong>cand se posteaza un "
|
1431 |
-
"nou articol."
|
1432 |
|
1433 |
-
#:
|
1434 |
-
msgid ""
|
1435 |
-
"Always show <strong>Keyword Informations</strong> about the selected keyword."
|
1436 |
msgstr ""
|
1437 |
-
"Afiseaza <strong>Informatii de cuvint cheie</strong> dupa alegerea "
|
1438 |
-
"cuvantului la postare."
|
1439 |
|
1440 |
-
#:
|
1441 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1442 |
msgstr ""
|
1443 |
|
1444 |
-
#:
|
1445 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1446 |
msgstr ""
|
1447 |
|
1448 |
-
#:
|
1449 |
-
msgid ""
|
1450 |
-
"Select the google extension for which Squirrly will check the google rank"
|
1451 |
msgstr ""
|
1452 |
|
1453 |
-
#:
|
1454 |
-
msgid "
|
1455 |
msgstr ""
|
1456 |
|
1457 |
-
#:
|
1458 |
-
msgid "
|
1459 |
msgstr ""
|
1460 |
|
1461 |
-
#:
|
1462 |
-
msgid "
|
1463 |
msgstr ""
|
1464 |
|
1465 |
-
#:
|
1466 |
-
msgid "
|
1467 |
msgstr ""
|
1468 |
|
1469 |
-
#:
|
1470 |
-
msgid "
|
1471 |
msgstr ""
|
1472 |
|
1473 |
-
#:
|
1474 |
-
msgid "
|
1475 |
msgstr ""
|
1476 |
|
1477 |
-
#:
|
1478 |
-
msgid "
|
1479 |
msgstr ""
|
1480 |
|
1481 |
-
#:
|
1482 |
-
msgid "
|
1483 |
msgstr ""
|
1484 |
|
1485 |
-
#:
|
1486 |
-
msgid "
|
1487 |
-
msgstr ""
|
1488 |
|
1489 |
-
#:
|
1490 |
-
|
|
|
1491 |
msgstr ""
|
1492 |
|
1493 |
-
#:
|
1494 |
-
msgid "
|
1495 |
msgstr ""
|
1496 |
|
1497 |
-
#:
|
1498 |
-
msgid "
|
1499 |
msgstr ""
|
1500 |
|
1501 |
-
#:
|
1502 |
-
msgid "
|
1503 |
msgstr ""
|
1504 |
|
1505 |
-
#:
|
1506 |
-
msgid "
|
1507 |
msgstr ""
|
1508 |
|
1509 |
-
#:
|
1510 |
-
msgid "
|
1511 |
msgstr ""
|
1512 |
|
1513 |
-
#:
|
1514 |
-
msgid "
|
1515 |
msgstr ""
|
1516 |
|
1517 |
-
#:
|
1518 |
-
msgid "
|
1519 |
msgstr ""
|
1520 |
|
1521 |
-
#:
|
1522 |
-
msgid "
|
1523 |
msgstr ""
|
1524 |
|
1525 |
-
#:
|
1526 |
-
msgid "
|
1527 |
msgstr ""
|
1528 |
|
1529 |
-
#:
|
1530 |
-
msgid "
|
1531 |
-
msgstr ""
|
1532 |
|
1533 |
-
#:
|
1534 |
-
msgid "
|
1535 |
msgstr ""
|
1536 |
|
1537 |
-
#:
|
1538 |
-
msgid "
|
1539 |
msgstr ""
|
1540 |
|
1541 |
-
#:
|
1542 |
-
msgid "
|
1543 |
msgstr ""
|
1544 |
|
1545 |
-
#:
|
1546 |
-
msgid "
|
1547 |
msgstr ""
|
1548 |
|
1549 |
-
#:
|
1550 |
-
msgid "
|
|
|
1551 |
msgstr ""
|
1552 |
|
1553 |
-
#:
|
1554 |
-
|
|
|
1555 |
msgstr ""
|
1556 |
|
1557 |
-
#:
|
1558 |
-
msgid "
|
1559 |
msgstr ""
|
1560 |
|
1561 |
-
#:
|
1562 |
-
msgid "
|
1563 |
msgstr ""
|
1564 |
|
1565 |
-
#:
|
1566 |
-
msgid "
|
1567 |
msgstr ""
|
1568 |
|
1569 |
-
#:
|
1570 |
-
|
1571 |
-
|
1572 |
-
|
1573 |
-
|
1574 |
-
#: themes/default/SQ_Menu.php:349
|
1575 |
-
msgid "The Gambia"
|
1576 |
msgstr ""
|
1577 |
|
1578 |
-
#:
|
1579 |
-
msgid "
|
1580 |
msgstr ""
|
1581 |
|
1582 |
-
#:
|
1583 |
-
msgid "
|
1584 |
msgstr ""
|
1585 |
|
1586 |
-
#:
|
1587 |
-
msgid "
|
1588 |
msgstr ""
|
1589 |
|
1590 |
-
#:
|
1591 |
-
msgid "
|
1592 |
msgstr ""
|
1593 |
|
1594 |
-
#:
|
1595 |
-
msgid "
|
1596 |
msgstr ""
|
1597 |
|
1598 |
-
#:
|
1599 |
-
msgid "
|
1600 |
msgstr ""
|
1601 |
|
1602 |
-
#:
|
1603 |
-
msgid "
|
1604 |
msgstr ""
|
1605 |
|
1606 |
-
#:
|
1607 |
-
msgid "
|
1608 |
msgstr ""
|
1609 |
|
1610 |
-
#:
|
1611 |
-
msgid "
|
1612 |
msgstr ""
|
1613 |
|
1614 |
-
#:
|
1615 |
-
msgid "
|
1616 |
msgstr ""
|
1617 |
|
1618 |
-
#:
|
1619 |
-
msgid "
|
1620 |
msgstr ""
|
1621 |
|
1622 |
-
#:
|
1623 |
-
msgid "
|
1624 |
msgstr ""
|
1625 |
|
1626 |
-
#:
|
1627 |
-
msgid "
|
1628 |
msgstr ""
|
1629 |
|
1630 |
-
#:
|
1631 |
-
msgid "
|
|
|
1632 |
msgstr ""
|
1633 |
|
1634 |
-
#:
|
1635 |
-
msgid "
|
1636 |
msgstr ""
|
1637 |
|
1638 |
-
#:
|
1639 |
-
msgid "
|
1640 |
msgstr ""
|
1641 |
|
1642 |
-
#:
|
1643 |
-
msgid "
|
1644 |
msgstr ""
|
1645 |
|
1646 |
-
#:
|
1647 |
-
msgid "
|
1648 |
msgstr ""
|
1649 |
|
1650 |
-
#:
|
1651 |
-
msgid "
|
1652 |
msgstr ""
|
1653 |
|
1654 |
-
#:
|
1655 |
-
msgid "
|
|
|
|
|
1656 |
msgstr ""
|
1657 |
|
1658 |
-
#:
|
1659 |
-
msgid "
|
1660 |
msgstr ""
|
1661 |
|
1662 |
-
#:
|
1663 |
-
msgid "
|
1664 |
msgstr ""
|
1665 |
|
1666 |
-
#:
|
1667 |
-
msgid "
|
1668 |
msgstr ""
|
1669 |
|
1670 |
-
#:
|
1671 |
-
msgid "
|
1672 |
msgstr ""
|
1673 |
|
1674 |
-
#:
|
1675 |
-
msgid "
|
1676 |
msgstr ""
|
1677 |
|
1678 |
-
#:
|
1679 |
-
msgid "
|
1680 |
msgstr ""
|
1681 |
|
1682 |
-
#:
|
1683 |
-
msgid "
|
1684 |
msgstr ""
|
1685 |
|
1686 |
-
#:
|
1687 |
-
msgid "
|
1688 |
msgstr ""
|
1689 |
|
1690 |
-
#:
|
1691 |
-
|
|
|
1692 |
msgstr ""
|
1693 |
|
1694 |
-
|
1695 |
-
|
1696 |
-
msgstr ""
|
1697 |
|
1698 |
-
|
1699 |
-
|
1700 |
-
msgstr ""
|
1701 |
|
1702 |
-
|
1703 |
-
|
1704 |
-
msgstr ""
|
1705 |
|
1706 |
-
|
1707 |
-
|
1708 |
-
msgstr ""
|
1709 |
|
1710 |
-
|
1711 |
-
|
1712 |
-
|
|
|
|
|
|
|
1713 |
|
1714 |
-
|
1715 |
-
|
1716 |
-
msgstr ""
|
1717 |
|
1718 |
-
|
1719 |
-
|
1720 |
-
msgstr ""
|
1721 |
|
1722 |
-
|
1723 |
-
|
1724 |
-
msgstr ""
|
1725 |
|
1726 |
-
|
1727 |
-
|
1728 |
-
msgstr ""
|
1729 |
|
1730 |
-
|
1731 |
-
|
1732 |
-
|
|
|
|
|
|
|
1733 |
|
1734 |
-
|
1735 |
-
|
1736 |
-
msgstr ""
|
1737 |
|
1738 |
-
|
1739 |
-
|
1740 |
-
msgstr ""
|
1741 |
|
1742 |
-
|
1743 |
-
msgid "
|
1744 |
-
msgstr ""
|
1745 |
|
1746 |
-
|
1747 |
-
|
1748 |
-
msgstr ""
|
1749 |
|
1750 |
-
|
1751 |
-
|
1752 |
-
msgstr ""
|
1753 |
|
1754 |
-
|
1755 |
-
|
1756 |
-
msgstr ""
|
1757 |
|
1758 |
-
|
1759 |
-
msgid "
|
1760 |
-
msgstr ""
|
1761 |
|
1762 |
-
|
1763 |
-
|
1764 |
-
msgstr ""
|
1765 |
|
1766 |
-
|
1767 |
-
|
1768 |
-
|
1769 |
|
1770 |
-
|
1771 |
-
|
1772 |
-
msgstr ""
|
1773 |
|
1774 |
-
|
1775 |
-
|
1776 |
-
msgstr ""
|
1777 |
|
1778 |
-
|
1779 |
-
|
1780 |
-
msgstr ""
|
1781 |
|
1782 |
-
|
1783 |
-
|
1784 |
-
msgstr ""
|
1785 |
|
1786 |
-
|
1787 |
-
msgid "
|
1788 |
-
msgstr ""
|
1789 |
|
1790 |
-
|
1791 |
-
|
1792 |
-
msgstr ""
|
1793 |
|
1794 |
-
|
1795 |
-
|
1796 |
-
|
|
|
1797 |
|
1798 |
-
|
1799 |
-
|
1800 |
-
msgstr ""
|
1801 |
|
1802 |
-
|
1803 |
-
|
1804 |
-
msgstr ""
|
1805 |
|
1806 |
-
|
1807 |
-
msgid "
|
1808 |
-
msgstr ""
|
1809 |
|
1810 |
-
|
1811 |
-
|
1812 |
-
msgstr ""
|
1813 |
|
1814 |
-
|
1815 |
-
|
1816 |
-
msgstr ""
|
1817 |
|
1818 |
-
|
1819 |
-
|
1820 |
-
msgstr ""
|
1821 |
|
1822 |
-
|
1823 |
-
msgid "
|
1824 |
-
msgstr ""
|
1825 |
|
1826 |
-
|
1827 |
-
msgid "
|
1828 |
-
msgstr ""
|
1829 |
|
1830 |
-
|
1831 |
-
msgid "
|
1832 |
-
msgstr ""
|
1833 |
|
1834 |
-
|
1835 |
-
|
1836 |
-
msgstr ""
|
1837 |
|
1838 |
-
|
1839 |
-
|
1840 |
-
msgstr ""
|
1841 |
|
1842 |
-
|
1843 |
-
|
1844 |
-
msgstr ""
|
1845 |
|
1846 |
-
|
1847 |
-
|
1848 |
-
msgstr ""
|
1849 |
|
1850 |
-
|
1851 |
-
|
1852 |
-
"Restricts search results to results originating in the above particular "
|
1853 |
-
"country."
|
1854 |
-
msgstr ""
|
1855 |
|
1856 |
-
|
1857 |
-
|
1858 |
-
msgstr "Schimba icoana site-ului"
|
1859 |
|
1860 |
-
|
1861 |
-
|
1862 |
-
"Now even the tablets and smartphone browsers also make use of your icons. "
|
1863 |
-
"This has led to an increasesd importance to having a good favicon."
|
1864 |
-
msgstr ""
|
1865 |
|
1866 |
-
|
1867 |
-
|
1868 |
-
msgid ""
|
1869 |
-
"You can use %shttp://convertico.com/%s to convert your photo to icon and "
|
1870 |
-
"upload it here after that."
|
1871 |
-
msgstr ""
|
1872 |
-
"Poti folosi %shttp://convertico.com/%s pentru a converti imaginea in icoana "
|
1873 |
-
"si poti incarca icoana aici"
|
1874 |
|
1875 |
-
|
1876 |
-
|
1877 |
-
msgstr "Tip fisiere JPEG,JPG,GIF sau PNG "
|
1878 |
|
1879 |
-
|
1880 |
-
msgid "
|
1881 |
-
msgstr "
|
1882 |
|
1883 |
-
|
1884 |
-
|
1885 |
-
msgstr "Upload"
|
1886 |
|
1887 |
-
|
1888 |
-
|
1889 |
-
"If you don't see the new icon in your browser, empty the browser cache and "
|
1890 |
-
"refresh the page."
|
1891 |
-
msgstr ""
|
1892 |
-
"Daca nu vezi noua icoana in browser, goleste cache-ul din browser si da "
|
1893 |
-
"refresh la pagina."
|
1894 |
|
1895 |
-
|
1896 |
-
msgid "
|
1897 |
-
msgstr ""
|
1898 |
|
1899 |
-
|
1900 |
-
|
1901 |
-
|
1902 |
-
msgstr ""
|
|
|
|
|
1903 |
|
1904 |
-
|
1905 |
-
|
1906 |
-
|
1907 |
-
|
1908 |
-
|
|
|
1909 |
|
1910 |
-
|
1911 |
-
|
1912 |
-
|
1913 |
-
msgstr ""
|
1914 |
|
1915 |
-
|
1916 |
-
|
1917 |
-
|
1918 |
-
|
|
|
|
|
|
|
1919 |
|
1920 |
-
|
1921 |
-
|
1922 |
-
msgstr "URL Google Plus:"
|
1923 |
|
1924 |
-
|
1925 |
-
|
1926 |
-
|
1927 |
-
msgstr "Google %sAnalytics ID%s:"
|
1928 |
|
1929 |
-
|
1930 |
-
|
1931 |
-
|
1932 |
-
msgstr "Facebook META code (pentru %sInsights%s):"
|
1933 |
|
1934 |
-
|
1935 |
-
msgid "
|
1936 |
-
|
|
|
|
|
|
|
|
|
1937 |
|
1938 |
-
#: themes/default/SQ_Menu.php:491
|
1939 |
#, fuzzy
|
1940 |
-
msgid "
|
1941 |
-
msgstr "
|
1942 |
|
1943 |
-
|
1944 |
-
|
1945 |
-
msgid "%sBest practices to help Google find, crawl, and index your site%s"
|
1946 |
-
msgstr ""
|
1947 |
|
1948 |
-
|
1949 |
-
|
1950 |
-
msgid "%sBing Webmaster Tools Help & How-To Center%s"
|
1951 |
-
msgstr ""
|
1952 |
|
1953 |
-
|
1954 |
-
|
1955 |
-
msgid "Google META verification code for %sWebmaster Tool%s:"
|
1956 |
-
msgstr "Cod META pentru %sGoogle Webmaster Tool%s"
|
1957 |
|
1958 |
-
|
1959 |
-
|
1960 |
-
|
1961 |
-
msgstr "
|
|
|
|
|
1962 |
|
1963 |
-
|
1964 |
-
|
1965 |
-
|
1966 |
-
msgstr "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1967 |
|
1968 |
#~ msgid "Squirrly article rank"
|
1969 |
#~ msgstr "Squirrly article rank"
|
@@ -2055,9 +3893,6 @@ msgstr "Bing META code (pentru %sWebmaster Tool%s):"
|
|
2055 |
#~ msgid "Beginner"
|
2056 |
#~ msgstr "Incepator"
|
2057 |
|
2058 |
-
#~ msgid "Advanced"
|
2059 |
-
#~ msgstr "Avansat"
|
2060 |
-
|
2061 |
#~ msgid "Select Advanced only if you have SEO knowledge."
|
2062 |
#~ msgstr "Alege Avansat doar daca ai cunostinte SEO"
|
2063 |
|
1 |
msgid ""
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: squirrly_seo\n"
|
4 |
+
"POT-Creation-Date: 2017-10-24 10:08+0300\n"
|
5 |
+
"PO-Revision-Date: 2017-10-24 10:08+0300\n"
|
6 |
"Last-Translator: Squirrly <contact@squirrly.co>\n"
|
7 |
"Language-Team: Squirrly UK <support@squirrly.co>\n"
|
8 |
"Language: ro_RO\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"X-Generator: Poedit 1.8.2\n"
|
13 |
"X-Poedit-KeywordsList: __;_e\n"
|
14 |
+
"X-Poedit-Basepath: d:/Work/localhost/wordpress/wp/wp-content/plugins/"
|
15 |
+
"squirrly-seo\n"
|
16 |
"X-Poedit-SourceCharset: UTF-8\n"
|
17 |
"X-Poedit-SearchPath-0: .\n"
|
18 |
|
19 |
+
#: classes/Error.php:16
|
20 |
msgid ""
|
21 |
"Function get_class does not exists! Is required for Squirrly to work "
|
22 |
"properly."
|
24 |
"Functia get_class nu exista! E necesara pentru a functiona corect pluginul "
|
25 |
"Squirrly"
|
26 |
|
27 |
+
#: classes/Error.php:19
|
28 |
msgid ""
|
29 |
"Function file_exists does not exists! Is required for Squirrly to work "
|
30 |
"properly."
|
32 |
"Functia file_exists nu exista! E necesara pentru a functiona corect pluginul "
|
33 |
"Squirrly"
|
34 |
|
35 |
+
#: classes/Error.php:23
|
36 |
msgid "The home directory is not set!"
|
37 |
msgstr "Directorul home nu este setat!"
|
38 |
|
39 |
+
#: classes/Error.php:27
|
40 |
msgid "The PHP version has to be greater then 4.0"
|
41 |
msgstr "Versiunea PHP trebuie sa fie mai mare de 4.0"
|
42 |
|
43 |
+
#: classes/Error.php:65
|
44 |
msgid "Turn off warnings!"
|
45 |
msgstr "Opreste avertizarile"
|
46 |
|
47 |
+
#: classes/Error.php:73
|
48 |
+
msgid "Don't bother me!"
|
49 |
+
msgstr ""
|
|
|
|
|
|
|
|
|
50 |
|
51 |
+
#: classes/Tools.php:59
|
52 |
msgid "Getting started"
|
53 |
msgstr "Ajutor"
|
54 |
|
55 |
+
#: classes/Tools.php:238
|
56 |
+
msgid "Format"
|
57 |
+
msgstr ""
|
58 |
+
|
59 |
+
#: classes/Tools.php:246 classes/Tools.php:262
|
60 |
+
msgid "Category"
|
61 |
+
msgstr ""
|
62 |
+
|
63 |
+
#: classes/Tools.php:254 classes/Tools.php:270
|
64 |
+
msgid "Tag"
|
65 |
+
msgstr ""
|
66 |
+
|
67 |
+
#: classes/Tools.php:278
|
68 |
+
msgid "Shipping Option"
|
69 |
+
msgstr ""
|
70 |
+
|
71 |
+
#: classes/Tools.php:286
|
72 |
+
msgid "Author at"
|
73 |
+
msgstr ""
|
74 |
+
|
75 |
+
#: classes/Tools.php:318
|
76 |
+
msgid "You searched for"
|
77 |
+
msgstr ""
|
78 |
+
|
79 |
+
#: classes/Tools.php:334
|
80 |
+
msgid "Page not found"
|
81 |
+
msgstr ""
|
82 |
|
83 |
+
#: classes/Tools.php:855
|
84 |
msgid "Fix it for me!"
|
85 |
msgstr "Repara-l"
|
86 |
|
87 |
+
#: classes/Tools.php:861
|
88 |
+
msgid "Activate the Squirrly SEO for your blog (recommended)"
|
89 |
+
msgstr ""
|
90 |
|
91 |
+
#: classes/Tools.php:872
|
92 |
msgid ""
|
93 |
+
"You have META Title Duplicates. Disable the Squirrly Title Optimization or "
|
94 |
+
"disable the other SEO Plugins"
|
95 |
+
msgstr ""
|
96 |
+
|
97 |
+
#: classes/Tools.php:880
|
98 |
+
msgid ""
|
99 |
+
"You have META Description Duplicates. Disable the Squirrly Description "
|
100 |
+
"Optimization or disable the other SEO Plugins"
|
101 |
msgstr ""
|
|
|
|
|
102 |
|
103 |
+
#: classes/Tools.php:888
|
104 |
msgid ""
|
105 |
"You have Open Graph META Duplicates. Disable the Squirrly SEO Open Graph or "
|
106 |
"disable the other SEO Plugins"
|
108 |
"Aveti duplicate in META Open Graph. Opriti Squirrly Seo Open Graph sau "
|
109 |
"dezactivati alte plugin-uri de SEO"
|
110 |
|
111 |
+
#: classes/Tools.php:896
|
112 |
msgid ""
|
113 |
"You have Twitter Card META Duplicates. Disable the Squirrly SEO Twitter Card "
|
114 |
"or disable the other SEO Plugins"
|
116 |
"Aveti duplicate in META Twitter Card. Opriti Squirrly Seo Twitter Card sau "
|
117 |
"dezactivati alte plugin-uri de SEO"
|
118 |
|
119 |
+
#: classes/Tools.php:905
|
120 |
msgid "You're blocking google from indexing your site!"
|
121 |
msgstr "Blochezi accesul la google spre indexarea site-ului"
|
122 |
|
123 |
+
#: classes/Tools.php:912
|
124 |
msgid ""
|
125 |
"It is highly recommended that you include the %postname% variable in the "
|
126 |
"permalink structure. <br />Go to Settings > Permalinks and add /%postname%/ "
|
130 |
">Mergi la Setari > Legaturi permanente si adauga /%postname%/ in campul "
|
131 |
"Structură personalizată"
|
132 |
|
133 |
+
#: classes/Tools.php:919
|
134 |
msgid ""
|
135 |
+
"It is highly recommended to change or remove the default Wordpress Tagline. "
|
136 |
+
"<br />Go to Settings > General > Tagline"
|
137 |
msgstr ""
|
138 |
|
139 |
+
#: classes/Tools.php:925
|
140 |
+
msgid "Great! We didn't find any issue in your site."
|
141 |
+
msgstr ""
|
142 |
|
143 |
+
#: classes/Tools.php:1070
|
144 |
+
msgid "Just another WordPress site"
|
145 |
+
msgstr ""
|
146 |
|
147 |
+
#: config/config.php:43
|
148 |
+
msgid "Displays the date of the post/page once it's published"
|
149 |
+
msgstr ""
|
150 |
+
|
151 |
+
#: config/config.php:44
|
152 |
+
msgid "Adds the title of the post/page once it’s published"
|
153 |
+
msgstr ""
|
154 |
+
|
155 |
+
#: config/config.php:45
|
156 |
+
msgid "Displays the number of the current page (i.e. 1 of 6)"
|
157 |
+
msgstr ""
|
158 |
+
|
159 |
+
#: config/config.php:46
|
160 |
+
msgid "Adds the title of a page's parent page"
|
161 |
+
msgstr ""
|
162 |
+
|
163 |
+
#: config/config.php:47
|
164 |
+
msgid "Adds the site's name to the post description"
|
165 |
+
msgstr ""
|
166 |
+
|
167 |
+
#: config/config.php:48
|
168 |
+
msgid "Adds the tagline/description of your site"
|
169 |
+
msgstr ""
|
170 |
+
|
171 |
+
#: config/config.php:49
|
172 |
+
msgid ""
|
173 |
+
"Will display an excerpt from the post/page (if not customized, the excerpt "
|
174 |
+
"will be auto-generated)"
|
175 |
+
msgstr ""
|
176 |
+
|
177 |
+
#: config/config.php:50
|
178 |
+
msgid "Will display an excerpt from the post/page (no auto-generation)"
|
179 |
+
msgstr ""
|
180 |
+
|
181 |
+
#: config/config.php:51
|
182 |
+
msgid "Adds the current tag(s) to the post description"
|
183 |
+
msgstr ""
|
184 |
+
|
185 |
+
#: config/config.php:52
|
186 |
+
msgid "Adds the post category (several categories will be comma-separated)"
|
187 |
+
msgstr ""
|
188 |
+
|
189 |
+
#: config/config.php:53
|
190 |
+
msgid "Adds the primary category of the post/page"
|
191 |
+
msgstr ""
|
192 |
+
|
193 |
+
#: config/config.php:54
|
194 |
+
msgid "Adds the category description to the post description"
|
195 |
+
msgstr ""
|
196 |
+
|
197 |
+
#: config/config.php:55
|
198 |
+
msgid "Adds the tag description"
|
199 |
+
msgstr ""
|
200 |
+
|
201 |
+
#: config/config.php:56
|
202 |
+
msgid "Adds the term description"
|
203 |
+
msgstr ""
|
204 |
+
|
205 |
+
#: config/config.php:57
|
206 |
+
msgid "Adds the term name"
|
207 |
+
msgstr ""
|
208 |
+
|
209 |
+
#: config/config.php:58
|
210 |
+
msgid "Displays the search phrase (if it appears in the post)"
|
211 |
+
msgstr ""
|
212 |
+
|
213 |
+
#: config/config.php:59
|
214 |
+
msgid "Places a separator between the elements of the post description"
|
215 |
+
msgstr ""
|
216 |
+
|
217 |
+
#: config/config.php:60
|
218 |
+
msgid "Replaces the publication date of a post/page with the modified one"
|
219 |
+
msgstr ""
|
220 |
|
221 |
+
#: config/config.php:61
|
222 |
+
msgid "Displays the author's nicename"
|
223 |
+
msgstr ""
|
224 |
+
|
225 |
+
#: config/config.php:62
|
226 |
+
msgid "Adds the author's biographical info to the post description"
|
227 |
+
msgstr ""
|
228 |
+
|
229 |
+
#: config/config.php:63
|
230 |
+
msgid "Displays the current date of a post/page"
|
231 |
+
msgstr ""
|
232 |
+
|
233 |
+
#: config/config.php:64
|
234 |
+
msgid "Adds the post's keyword to the post description"
|
235 |
+
msgstr ""
|
236 |
+
|
237 |
+
#: controllers/Api.php:40
|
238 |
+
msgid "Connection expired. Please try again"
|
239 |
+
msgstr ""
|
240 |
+
|
241 |
+
#: controllers/Api.php:54 controllers/Api.php:57 controllers/Api.php:60
|
242 |
+
msgid "Author not found"
|
243 |
+
msgstr ""
|
244 |
+
|
245 |
+
#: controllers/FrontMenu.php:32
|
246 |
+
msgid "You don't have enough pemission to edit this article"
|
247 |
+
msgstr ""
|
248 |
+
|
249 |
+
#: controllers/Menu.php:44 controllers/Menu.php:55
|
250 |
+
#, php-format
|
251 |
+
msgid ""
|
252 |
+
"Good news, %s is integrated in Squirrly SEO now and you don't have to run 2 "
|
253 |
+
"plugins anymore"
|
254 |
+
msgstr ""
|
255 |
+
|
256 |
+
#: controllers/Menu.php:99
|
257 |
+
msgid "See Your Rank on Google"
|
258 |
+
msgstr ""
|
259 |
+
|
260 |
+
#: controllers/Menu.php:151
|
261 |
+
msgid "Custom SEO"
|
262 |
+
msgstr ""
|
263 |
+
|
264 |
+
#: controllers/Menu.php:194
|
265 |
+
msgid ""
|
266 |
+
"Check out the Squirrly Analytics section. <a href=\"admin.php?page=sq_posts"
|
267 |
+
"\" title=\"Squirrly Analytics\">Click here</a>"
|
268 |
+
msgstr ""
|
269 |
+
|
270 |
+
#: controllers/Menu.php:213
|
271 |
+
msgid " Dashboard"
|
272 |
+
msgstr ""
|
273 |
+
|
274 |
+
#: controllers/Menu.php:214
|
275 |
+
msgid "First Step"
|
276 |
+
msgstr ""
|
277 |
+
|
278 |
+
#: controllers/Menu.php:214
|
279 |
+
msgid "Dashboard"
|
280 |
+
msgstr "Dashboard"
|
281 |
+
|
282 |
+
#: controllers/Menu.php:223
|
283 |
+
msgid " Performance Analytics"
|
284 |
+
msgstr ""
|
285 |
+
|
286 |
+
#: controllers/Menu.php:224
|
287 |
msgid "Performance <br />Analytics"
|
288 |
msgstr ""
|
289 |
|
290 |
+
#: controllers/Menu.php:232
|
291 |
+
msgid " Keyword Research"
|
292 |
msgstr ""
|
293 |
|
294 |
+
#: controllers/Menu.php:233
|
295 |
+
msgid "Keyword Research"
|
296 |
+
msgstr ""
|
297 |
+
|
298 |
+
#: controllers/Menu.php:240
|
299 |
+
msgid " Live Assistant"
|
300 |
+
msgstr ""
|
301 |
+
|
302 |
+
#: controllers/Menu.php:241
|
303 |
+
msgid "Live Assistant"
|
304 |
+
msgstr ""
|
305 |
+
|
306 |
+
#: controllers/Menu.php:247
|
307 |
+
msgid " Copywriting"
|
308 |
+
msgstr ""
|
309 |
+
|
310 |
+
#: controllers/Menu.php:248
|
311 |
+
msgid "Copywriting"
|
312 |
+
msgstr ""
|
313 |
+
|
314 |
+
#: controllers/Menu.php:256
|
315 |
+
msgid " SEO Audit"
|
316 |
+
msgstr ""
|
317 |
+
|
318 |
+
#: controllers/Menu.php:257
|
319 |
+
msgid "Site Audit"
|
320 |
msgstr ""
|
321 |
|
322 |
+
#: controllers/Menu.php:265
|
323 |
+
msgid " SEO Settings"
|
324 |
+
msgstr ""
|
325 |
|
326 |
+
#: controllers/Menu.php:266 view/BlockToolbar.php:4
|
327 |
#, fuzzy
|
328 |
msgid "SEO Settings"
|
329 |
msgstr "Setari"
|
330 |
|
331 |
+
#: controllers/Menu.php:274
|
332 |
+
msgid " Advanced Settings"
|
333 |
+
msgstr ""
|
334 |
+
|
335 |
+
#: controllers/Menu.php:275 view/BlockSettings.php:22
|
336 |
+
msgid "Advanced Settings"
|
337 |
+
msgstr ""
|
338 |
+
|
339 |
+
#: controllers/Menu.php:282
|
340 |
+
msgid " SEO Patterns"
|
341 |
+
msgstr ""
|
342 |
+
|
343 |
+
#: controllers/Menu.php:283 view/BlockToolbar.php:14
|
344 |
+
msgid "Patterns"
|
345 |
+
msgstr ""
|
346 |
+
|
347 |
+
#: controllers/Menu.php:290
|
348 |
+
msgid " Account Info"
|
349 |
+
msgstr ""
|
350 |
+
|
351 |
+
#: controllers/Menu.php:291
|
352 |
+
msgid "Account Info"
|
353 |
+
msgstr ""
|
354 |
+
|
355 |
+
#: controllers/Menu.php:298
|
356 |
+
msgid " Support"
|
357 |
+
msgstr ""
|
358 |
+
|
359 |
+
#: controllers/Menu.php:299 view/BlockSupport.php:18
|
360 |
+
msgid "Support"
|
361 |
+
msgstr "Suport"
|
362 |
+
|
363 |
+
#: controllers/Menu.php:306
|
364 |
+
msgid "Become an Affiliate with "
|
365 |
+
msgstr ""
|
366 |
+
|
367 |
+
#: controllers/Menu.php:307
|
368 |
+
msgid "Become an Affiliate"
|
369 |
+
msgstr ""
|
370 |
+
|
371 |
+
#: controllers/Menu.php:315
|
372 |
+
msgid "Import SEO "
|
373 |
+
msgstr ""
|
374 |
+
|
375 |
+
#: controllers/Menu.php:316 view/BlockImport.php:77
|
376 |
+
msgid "Import SEO"
|
377 |
+
msgstr ""
|
378 |
+
|
379 |
+
#: controllers/Menu.php:343
|
380 |
+
#, php-format
|
381 |
+
msgid "Go back and complete the Squirrly Tasks for today %sContinue%s"
|
382 |
+
msgstr ""
|
383 |
|
384 |
+
#: controllers/Menu.php:355
|
385 |
+
msgid "SEO Snippet"
|
386 |
+
msgstr ""
|
387 |
|
388 |
+
#: controllers/PostsList.php:102
|
389 |
msgid "Squirrly"
|
390 |
msgstr "Squirrly"
|
391 |
|
392 |
+
#: controllers/PostsList.php:129
|
393 |
msgid "Custom description: "
|
394 |
msgstr "Descrierea:"
|
395 |
|
396 |
+
#: controllers/PostsList.php:129
|
397 |
msgid "Custom title: "
|
398 |
msgstr "Titlul"
|
399 |
|
400 |
+
#: controllers/PostsList.php:167
|
401 |
msgid "SEO Analytics, by Squirrly"
|
402 |
msgstr "SEO Analytics, de la Squirrly"
|
403 |
|
404 |
+
#: controllers/PostsList.php:168 view/Blockseo.php:10
|
405 |
msgid "Update"
|
406 |
msgstr "Update"
|
407 |
|
408 |
+
#: controllers/PostsList.php:172
|
409 |
msgid "Not Public"
|
410 |
msgstr "Ciorna"
|
411 |
|
412 |
+
#: controllers/PostsList.php:173
|
413 |
msgid "Could not process"
|
414 |
msgstr "Nu s-a putut verifica"
|
415 |
|
416 |
+
#: controllers/PostsList.php:328 controllers/PostsList.php:346
|
417 |
+
#, php-format
|
418 |
+
msgid "Not in top 100 for: %s"
|
|
|
|
|
|
|
|
|
419 |
msgstr ""
|
420 |
|
421 |
+
#: controllers/PostsList.php:330 controllers/PostsList.php:348
|
422 |
+
msgid "The URL is Indexed"
|
423 |
+
msgstr ""
|
|
|
424 |
|
425 |
+
#: controllers/PostsList.php:332 controllers/PostsList.php:350
|
426 |
+
#: models/BlockPostsAnalytics.php:438
|
427 |
#, php-format
|
428 |
msgid "%s"
|
429 |
msgstr ""
|
430 |
|
431 |
+
#: core/BlockAffiliate.php:38
|
432 |
#, php-format
|
433 |
msgid "Error: %s"
|
434 |
msgstr "Eroare: %s"
|
435 |
|
436 |
+
#: core/BlockAffiliate.php:41
|
|
|
437 |
msgid "An error occured. Mabe a network error :("
|
438 |
msgstr "A aparut o eroare. Probabil o eroare de retea :("
|
439 |
|
440 |
+
#: core/BlockImport.php:32
|
441 |
+
msgid "All the Plugin settings were imported successfuly!"
|
442 |
+
msgstr ""
|
443 |
+
|
444 |
+
#: core/BlockImport.php:34
|
445 |
+
msgid "No settings found for this plugin/theme."
|
446 |
+
msgstr ""
|
447 |
+
|
448 |
+
#: core/BlockImport.php:56
|
449 |
+
#, php-format
|
450 |
+
msgid ""
|
451 |
+
"%s SEO records were imported successfuly! You can now deactivate the %s "
|
452 |
+
"plugin"
|
453 |
+
msgstr ""
|
454 |
+
|
455 |
+
#: core/BlockImport.php:58
|
456 |
+
#, php-format
|
457 |
+
msgid ""
|
458 |
+
"There are no SEO records with this plugin. You can now deactivate the %s "
|
459 |
+
"plugin"
|
460 |
+
msgstr ""
|
461 |
+
|
462 |
+
#: core/BlockSettingsSeo.php:26
|
463 |
+
#, php-format
|
464 |
+
msgid "You can now import into Squirrly SEO all the SEO Settings from %s"
|
465 |
+
msgstr ""
|
466 |
+
|
467 |
+
#: core/BlockSettingsSeo.php:35 core/Blockseo.php:13
|
468 |
+
msgid "Too short"
|
469 |
+
msgstr "Prea scurt"
|
470 |
+
|
471 |
+
#: core/BlockSettingsSeo.php:36 core/Blockseo.php:14
|
472 |
+
msgid "Too long"
|
473 |
+
msgstr "Prea lung"
|
474 |
+
|
475 |
+
#: core/BlockSettingsSeo.php:63
|
476 |
+
msgid "You don't have enough pemission to activate this feature"
|
477 |
+
msgstr ""
|
478 |
+
|
479 |
+
#: core/BlockSettingsSeo.php:435
|
480 |
+
msgid "Great! The backup is restored."
|
481 |
+
msgstr ""
|
482 |
+
|
483 |
+
#: core/BlockSettingsSeo.php:437 core/BlockSettingsSeo.php:440
|
484 |
+
#: core/BlockSettingsSeo.php:485 core/BlockSettingsSeo.php:488
|
485 |
+
msgid "Error! The backup is not valid."
|
486 |
+
msgstr ""
|
487 |
+
|
488 |
+
#: core/BlockSettingsSeo.php:443 core/BlockSettingsSeo.php:491
|
489 |
+
msgid "Error! You have to enter a previous saved backup file."
|
490 |
+
msgstr ""
|
491 |
+
|
492 |
+
#: core/BlockSettingsSeo.php:482
|
493 |
+
msgid "Great! The SEO backup is restored."
|
494 |
+
msgstr ""
|
495 |
+
|
496 |
+
#: core/BlockSettingsSeo.php:498
|
497 |
+
msgid "Great! Squirrly Data Settings is up to date now."
|
498 |
+
msgstr ""
|
499 |
+
|
500 |
+
#: core/BlockSupport.php:22
|
501 |
msgid "Plugin Feedback"
|
502 |
msgstr "Feedback Squirrly"
|
503 |
|
504 |
+
#: core/BlockSupport.php:58
|
505 |
msgid "Thank you for your feedback"
|
506 |
msgstr "Multumesc pentru feedback"
|
507 |
|
508 |
+
#: core/BlockSupport.php:61 core/BlockSupport.php:99
|
|
|
509 |
msgid "Could not send the email..."
|
510 |
msgstr "Nu s-a putut trimite email ..."
|
511 |
|
512 |
+
#: core/BlockSupport.php:65 core/BlockSupport.php:103
|
|
|
513 |
msgid "No message."
|
514 |
msgstr "Nici un mesaj."
|
515 |
|
516 |
+
#: core/BlockSupport.php:85
|
517 |
msgid "Plugin Support"
|
518 |
msgstr "Suport la plugin"
|
519 |
|
520 |
+
#: core/BlockSupport.php:96
|
521 |
#, fuzzy
|
522 |
msgid "Message sent. Thank you!"
|
523 |
msgstr "Mesajul a fost trimis..."
|
524 |
|
525 |
+
#: core/Blocklogin.php:81
|
526 |
#, php-format
|
527 |
msgid ""
|
528 |
"We found your email, so it means you already have a Squirrly.co account. "
|
533 |
"Conecteaza-te cu contul tau de Squirrly. Daca ai uitat parola atunci apasa "
|
534 |
"%saici%s"
|
535 |
|
536 |
+
#: core/Blocklogin.php:86
|
537 |
+
msgid ""
|
538 |
+
"Error: Couldn't connect to host :( . Please contact your site's webhost (or "
|
539 |
+
"webmaster) and request them to add http://api.squirrly.co/ to their IP "
|
540 |
+
"whitelist."
|
541 |
+
msgstr ""
|
542 |
+
|
543 |
+
#: core/Blocklogin.php:89
|
544 |
#, php-format
|
545 |
msgid ""
|
546 |
"Could not send your informations to squirrly. Please register %smanually%s."
|
547 |
msgstr ""
|
548 |
"Nu s-a putut trimite informatia la Squirrly. Inregistreaza-te %smanual%s."
|
549 |
|
550 |
+
#: core/Blocklogin.php:129
|
551 |
msgid "Wrong email or password!"
|
552 |
msgstr "Email sau Parola gresita!"
|
553 |
|
554 |
+
#: core/Blocklogin.php:132
|
555 |
msgid "You can use this account only for the URL you registered first!"
|
556 |
msgstr "Poti folosi acest cont doar pentru URL-ul inregistrat la inceput!"
|
557 |
|
558 |
+
#: core/Blocklogin.php:137
|
559 |
msgid "An error occured."
|
560 |
msgstr "A aparut o eroare."
|
561 |
|
562 |
+
#: core/Blocklogin.php:139
|
563 |
msgid "Both fields are required."
|
564 |
msgstr "Ambele campuri sunt obligatorii!"
|
565 |
|
566 |
+
#: core/Blockseo.php:15
|
567 |
+
msgid "snippet"
|
568 |
+
msgstr ""
|
569 |
+
|
570 |
+
#: core/Loading.php:21
|
571 |
+
msgid ""
|
572 |
+
"For Squirrly to work properly you have to use a higher version of Internet "
|
573 |
+
"Explorer. <br /> We recommend you to use Chrome or Mozilla."
|
574 |
+
msgstr ""
|
575 |
+
"Pentru a functiona Squirrly, trebui sa folosesti o versiune mai noua de "
|
576 |
+
"Internet explorer. <br /> Recomandam sa folosesti Chrome sau Mozilla."
|
577 |
+
|
578 |
+
#: core/Loading.php:47
|
579 |
msgid "Recent discussions:"
|
580 |
msgstr "Discutii recente:"
|
581 |
|
582 |
+
#: core/Loading.php:47
|
583 |
+
msgid "SEO Search Volume:"
|
584 |
+
msgstr ""
|
585 |
|
586 |
+
#: core/Loading.php:47
|
587 |
msgid "Competition:"
|
588 |
msgstr "Competitia:"
|
589 |
|
590 |
+
#: core/Loading.php:47
|
591 |
msgid "Trend:"
|
592 |
msgstr "Trend:"
|
593 |
|
594 |
+
#: core/Loading.php:48
|
595 |
+
msgid "Keyword:"
|
596 |
+
msgstr "Cuvant cheie:"
|
597 |
+
|
598 |
+
#: core/Loading.php:49
|
599 |
msgid "date"
|
600 |
msgstr "data"
|
601 |
|
602 |
+
#: core/Loading.php:50
|
603 |
msgid "Read it!"
|
604 |
msgstr "Citeste!"
|
605 |
|
606 |
+
#: core/Loading.php:51
|
607 |
msgid "Insert it!"
|
608 |
msgstr "Adauga!"
|
609 |
|
610 |
+
#: core/Loading.php:52
|
611 |
msgid "Reference"
|
612 |
msgstr "Referinta"
|
613 |
|
614 |
+
#: core/Loading.php:53
|
615 |
msgid "Insert as box"
|
616 |
msgstr "Adauga"
|
617 |
|
618 |
+
#: core/Loading.php:54
|
619 |
+
msgid "Insert Link"
|
620 |
+
msgstr ""
|
621 |
+
|
622 |
+
#: core/Loading.php:55
|
623 |
msgid "Not relevant?"
|
624 |
msgstr "Nu e ce doresti?"
|
625 |
|
626 |
+
#: core/Loading.php:56
|
627 |
msgid "Insert in your article"
|
628 |
msgstr "Adauga paragraf in articol"
|
629 |
|
630 |
+
#: core/Loading.php:57
|
631 |
+
msgid ":( An error occurred while processing your request. Please try again"
|
632 |
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
633 |
|
634 |
+
#: core/Loading.php:58
|
635 |
msgid "No results found!"
|
636 |
msgstr "Nu s-a gasit nimic ..."
|
637 |
|
638 |
+
#: core/Loading.php:59
|
639 |
+
msgid "Enter one more word to find relevant results"
|
640 |
+
msgstr ""
|
|
|
|
|
|
|
|
|
641 |
|
642 |
+
#: core/Loading.php:60
|
643 |
msgid "Takes too long to check this keyword ..."
|
644 |
msgstr "Ia prea mult timp sa verifice cuvantul ..."
|
645 |
|
646 |
+
#: core/Loading.php:61
|
647 |
msgid "Do a research!"
|
648 |
msgstr "Mai multe detalii!"
|
649 |
|
650 |
+
#: core/Loading.php:62
|
651 |
msgid "Do more research!"
|
652 |
msgstr "Mai multe detalii!"
|
653 |
|
654 |
+
#: core/Loading.php:63
|
655 |
#, php-format
|
656 |
msgid "[ ATTRIBUTE: Please check: %s to find out how to attribute this image ]"
|
657 |
msgstr ""
|
658 |
"[ ATTRIBUTE: Verificati: %s pentru a vedea conditile de atribuire a "
|
659 |
"imaginii ]"
|
660 |
|
661 |
+
#: core/Loading.php:64
|
662 |
msgid "Has creative commons attributes"
|
663 |
msgstr "Are conditii de atribuire"
|
664 |
|
665 |
+
#: core/Loading.php:65
|
666 |
msgid "No known copyright restrictions"
|
667 |
msgstr "Nu sunt restrictii de copyright cunoscute"
|
668 |
|
669 |
+
#: core/Loading.php:66
|
670 |
+
msgid ""
|
671 |
+
"You haven`t used Squirrly SEO to optimize your article. Do you want to "
|
672 |
+
"optimize for a keyword before publishing?"
|
673 |
+
msgstr ""
|
674 |
+
"Nu ai folosit Squirrly SEO pentru a optimiza articolul. Vrei sa il "
|
675 |
+
"optimizezi inainte de publicare?"
|
676 |
|
677 |
+
#: core/Loading.php:67
|
678 |
+
msgid "Keyword Research limit exceeded"
|
679 |
+
msgstr ""
|
680 |
|
681 |
+
#: core/Loading.php:68
|
682 |
+
msgid "Your Subscription has Expired"
|
683 |
+
msgstr ""
|
684 |
|
685 |
+
#: core/Loading.php:69
|
686 |
+
msgid "Add 20 Keyword Researches"
|
687 |
+
msgstr ""
|
|
|
688 |
|
689 |
+
#: core/Loading.php:70
|
690 |
+
msgid "There are no keywords saved in briefcase yet"
|
691 |
+
msgstr ""
|
692 |
|
693 |
+
#: core/Loading.php:71
|
694 |
+
#, php-format
|
695 |
+
msgid "Congratulations! Your article is 100% optimized!"
|
696 |
+
msgstr ""
|
697 |
|
698 |
+
#: core/Loading.php:72
|
699 |
+
#, php-format
|
700 |
+
msgid "appears too many times. Try to remove %s of them"
|
701 |
+
msgstr "apare de prea multe ori. Sterge %s cuvint(e) cheie"
|
702 |
|
703 |
+
#: core/Loading.php:73
|
704 |
+
#, php-format
|
705 |
+
msgid "write %s more words"
|
706 |
+
msgstr "mai adauga %s cuvinte"
|
707 |
|
708 |
+
#: core/Loading.php:74
|
709 |
+
#, php-format
|
710 |
+
msgid "Add the keyword in the %s of your article"
|
711 |
+
msgstr "Adauga cuvantul cheie la %s articolului"
|
712 |
+
|
713 |
+
#: core/Loading.php:75
|
714 |
+
msgid "Click to keep the highlight on"
|
715 |
msgstr ""
|
716 |
|
717 |
+
#: core/Loading.php:76
|
718 |
+
msgid "introduction"
|
719 |
+
msgstr ""
|
|
|
720 |
|
721 |
+
#: core/Loading.php:77
|
722 |
+
#, php-format
|
723 |
+
msgid "Write more words after the %s keyword"
|
724 |
+
msgstr "Scrie mai multe cuvinte dupa %s cuvant cheie"
|
725 |
|
726 |
+
#: core/Loading.php:78
|
727 |
+
msgid "or use synonyms"
|
728 |
+
msgstr "sau foloseste sinonime"
|
|
|
|
|
|
|
|
|
729 |
|
730 |
+
#: core/Loading.php:79
|
731 |
+
#, php-format
|
732 |
+
msgid "add %s more word(s)"
|
733 |
+
msgstr "Mai adauga %s cuvinte"
|
734 |
+
|
735 |
+
#: core/Loading.php:80
|
736 |
+
#, php-format
|
737 |
+
msgid "or remove %s word(s)"
|
738 |
+
msgstr "sau sterge %s cuvinte"
|
739 |
+
|
740 |
+
#: core/Loading.php:81
|
741 |
+
#, php-format
|
742 |
+
msgid "add %s more keyword(s)"
|
743 |
+
msgstr "mai adauga %s cuvint(e) cheie"
|
744 |
|
745 |
+
#: core/Loading.php:82
|
746 |
+
#, php-format
|
747 |
+
msgid "write %s more words to start calculating"
|
748 |
+
msgstr "Scrie %s cuvinte pentru a se putea verifica"
|
749 |
+
|
750 |
+
#: models/BlockPostsAnalytics.php:292
|
751 |
msgid "Type"
|
752 |
msgstr ""
|
753 |
|
754 |
+
#: models/BlockPostsAnalytics.php:295 view/FrontMenu.php:364
|
755 |
msgid "Author"
|
756 |
msgstr ""
|
757 |
|
758 |
+
#: models/BlockPostsAnalytics.php:298
|
|
|
759 |
msgid "Keywords"
|
760 |
msgstr "Cuvinte cheie:"
|
761 |
|
762 |
+
#: models/BlockPostsAnalytics.php:300
|
763 |
#, php-format
|
764 |
msgid "Google.%s Position"
|
765 |
msgstr ""
|
766 |
|
767 |
+
#: models/BlockPostsAnalytics.php:303 view/BlockAudit.php:48
|
|
|
|
|
|
|
|
|
768 |
msgid "Date"
|
769 |
msgstr "Data"
|
770 |
|
771 |
+
#: models/BlockPostsAnalytics.php:317
|
772 |
msgid "Reset Filters"
|
773 |
msgstr "Resetare Filtre"
|
774 |
|
775 |
+
#: models/BlockPostsAnalytics.php:322
|
776 |
+
msgid "Search Posts"
|
777 |
+
msgstr ""
|
778 |
+
|
779 |
+
#: models/BlockPostsAnalytics.php:390
|
780 |
#, php-format
|
781 |
msgid "Edit “%s”"
|
782 |
msgstr ""
|
783 |
|
784 |
+
#: models/BlockPostsAnalytics.php:393
|
785 |
msgid "Edit this item"
|
786 |
msgstr ""
|
787 |
|
788 |
+
#: models/BlockPostsAnalytics.php:393
|
789 |
msgid "Edit"
|
790 |
msgstr ""
|
791 |
|
792 |
+
#: models/BlockPostsAnalytics.php:398
|
793 |
#, php-format
|
794 |
msgid "Preview “%s”"
|
795 |
msgstr ""
|
796 |
|
797 |
+
#: models/BlockPostsAnalytics.php:398
|
798 |
msgid "Preview"
|
799 |
msgstr ""
|
800 |
|
801 |
+
#: models/BlockPostsAnalytics.php:400
|
802 |
#, php-format
|
803 |
msgid "View “%s”"
|
804 |
msgstr ""
|
805 |
|
806 |
+
#: models/BlockPostsAnalytics.php:400
|
807 |
msgid "View"
|
808 |
msgstr ""
|
809 |
|
810 |
+
#: models/BlockPostsAnalytics.php:422
|
811 |
msgid "No Tags"
|
812 |
msgstr ""
|
813 |
|
814 |
+
#: models/BlockPostsAnalytics.php:432
|
815 |
+
msgid "Could not receive data from google (Err: blocked IP)"
|
816 |
+
msgstr "Nu s-au putut lua informatii de la google (IP Blocat)"
|
|
|
|
|
|
|
|
|
817 |
|
818 |
+
#: models/BlockPostsAnalytics.php:434
|
819 |
+
msgid "Not in top 100 for: <br /> \""
|
820 |
msgstr ""
|
821 |
|
822 |
+
#: models/BlockPostsAnalytics.php:436
|
823 |
+
msgid "The URL is indexed"
|
|
|
824 |
msgstr ""
|
825 |
|
826 |
+
#: models/BlockPostsAnalytics.php:440
|
827 |
+
msgid "Force recheck"
|
828 |
msgstr ""
|
829 |
|
830 |
+
#: models/BlockPostsAnalytics.php:442
|
831 |
+
msgid "Not yet verified"
|
832 |
msgstr ""
|
833 |
|
834 |
+
#: models/BlockPostsAnalytics.php:442
|
835 |
+
msgid "Check now"
|
836 |
msgstr ""
|
837 |
|
838 |
+
#: models/BlockPostsAnalytics.php:445
|
839 |
+
#, php-format
|
840 |
+
msgid "Enable Ranking in %sAdvanced Settings%s"
|
841 |
msgstr ""
|
842 |
|
843 |
+
#: models/BlockPostsAnalytics.php:457
|
844 |
+
msgid "Unpublished"
|
845 |
msgstr ""
|
846 |
|
847 |
+
#: models/BlockPostsAnalytics.php:466
|
848 |
#, php-format
|
849 |
+
msgid "%s ago"
|
|
|
|
|
|
|
|
|
850 |
msgstr ""
|
851 |
|
852 |
+
#: models/BlockPostsAnalytics.php:468
|
853 |
+
msgid "Y/m/d"
|
854 |
msgstr ""
|
855 |
|
856 |
+
#: models/BlockPostsAnalytics.php:473
|
857 |
+
msgid "Published"
|
858 |
msgstr ""
|
859 |
|
860 |
+
#: models/BlockPostsAnalytics.php:476
|
861 |
+
msgid "Missed schedule"
|
|
|
|
|
|
|
862 |
msgstr ""
|
863 |
|
864 |
+
#: models/BlockPostsAnalytics.php:478
|
865 |
+
msgid "Scheduled"
|
|
|
|
|
866 |
msgstr ""
|
867 |
|
868 |
+
#: models/BlockPostsAnalytics.php:480
|
869 |
+
msgid "Last Modified"
|
870 |
msgstr ""
|
871 |
|
872 |
+
#: models/BlockSettingsSeo.php:71
|
873 |
msgid "The code for Google Webmaster Tool is incorrect."
|
874 |
msgstr "Codul google pentru Webmaster Tool este gresit."
|
875 |
|
876 |
+
#: models/BlockSettingsSeo.php:98
|
877 |
msgid "The code for Google Analytics is incorrect."
|
878 |
msgstr "Codul Google Analytics este incorect."
|
879 |
|
880 |
+
#: models/BlockSettingsSeo.php:144
|
881 |
msgid "The code for Facebook is incorrect."
|
882 |
msgstr "Codul Facbook este gresit."
|
883 |
|
884 |
+
#: models/BlockSettingsSeo.php:169
|
885 |
#, fuzzy
|
886 |
msgid "The code for Pinterest is incorrect."
|
887 |
msgstr "Codul Bing este gresit."
|
888 |
|
889 |
+
#: models/BlockSettingsSeo.php:194
|
890 |
msgid "The code for Bing is incorrect."
|
891 |
msgstr "Codul Bing este gresit."
|
892 |
|
893 |
+
#: models/BlockSettingsSeo.php:320
|
894 |
#, fuzzy
|
895 |
msgid "File type error: Only ICO, JPEG, JPG, GIF or PNG files are allowed."
|
896 |
msgstr "Eroare fisier: Doar fisierele JPEG,JPG,GIF sau PNG sunt permise"
|
897 |
|
898 |
+
#: models/BlockSettingsSeo.php:326
|
899 |
msgid "GD error: The GD library must be installed on your server."
|
900 |
msgstr ""
|
901 |
"Eroare librarie GD: Trebuie sa instalezi libraria GD pe server pentru a "
|
902 |
"putea adauga imaginea"
|
903 |
|
904 |
+
#: models/BlockSettingsSeo.php:332
|
905 |
msgid "Delete error: Could not delete the old favicon."
|
906 |
msgstr "Eroare Stergere: Nu se poate sterge icoana veche"
|
907 |
|
908 |
+
#: models/BlockSettingsSeo.php:339
|
909 |
msgid "Upload error: Could not upload the favicon."
|
910 |
msgstr "Eroare Upload: Nu se poate urca pe server imaginea"
|
911 |
|
912 |
+
#: models/BlockSettingsSeo.php:345
|
913 |
msgid "Permission error: Could not change the favicon permissions."
|
914 |
msgstr "Eroare Fisier: Nu se poate schimba permisiunea fisierului"
|
915 |
|
916 |
+
#: models/BlockSettingsSeo.php:367
|
917 |
msgid ""
|
918 |
"ICO Error: Could not create the ICO from file. Try with another file type."
|
919 |
msgstr "Eroare ICO: Nu se poate transforma imaginea in fisier ICO"
|
920 |
|
921 |
+
#: models/BlockSettingsSeo.php:386
|
922 |
msgid "The favicon has been updated."
|
923 |
msgstr "Icoana a fost adaugata pe server"
|
924 |
|
925 |
+
#: models/Post.php:69
|
926 |
msgid "Squirrly could not find any results for: "
|
927 |
msgstr "Squirrly nu a putut gasi rezultate pentru: "
|
928 |
|
929 |
+
#: models/Post.php:138
|
930 |
msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini."
|
931 |
msgstr ""
|
932 |
|
933 |
+
#: models/Post.php:139
|
934 |
msgid ""
|
935 |
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in "
|
936 |
"the HTML form."
|
937 |
msgstr ""
|
938 |
|
939 |
+
#: models/Post.php:140
|
940 |
msgid "The uploaded file was only partially uploaded."
|
941 |
msgstr ""
|
942 |
|
943 |
+
#: models/Post.php:141
|
944 |
msgid "No file was uploaded."
|
945 |
msgstr ""
|
946 |
|
947 |
+
#: models/Post.php:143
|
948 |
msgid "Missing a temporary folder."
|
949 |
msgstr ""
|
950 |
|
951 |
+
#: models/Post.php:144
|
952 |
msgid "Failed to write file to disk."
|
953 |
msgstr ""
|
954 |
|
955 |
+
#: models/Post.php:145
|
956 |
msgid "File upload stopped by extension."
|
957 |
msgstr ""
|
958 |
|
959 |
+
#: models/Post.php:162
|
960 |
msgid "Invalid form submission."
|
961 |
msgstr ""
|
962 |
|
963 |
+
#: models/Post.php:172
|
964 |
msgid "File is empty. Please upload something more substantial."
|
965 |
msgstr ""
|
966 |
|
967 |
+
#: models/Post.php:174
|
968 |
msgid ""
|
969 |
"File is empty. Please upload something more substantial. This error could "
|
970 |
"also be caused by uploads being disabled in your php.ini or by post_max_size "
|
971 |
"being defined as smaller than upload_max_filesize in php.ini."
|
972 |
msgstr ""
|
973 |
|
974 |
+
#: models/Post.php:180
|
975 |
msgid "Specified file failed upload test."
|
976 |
msgstr ""
|
977 |
|
978 |
+
#: models/Post.php:193
|
979 |
msgid "Sorry, this file type is not permitted for security reasons."
|
980 |
msgstr ""
|
981 |
|
982 |
+
#: models/Post.php:218
|
983 |
#, php-format
|
984 |
msgid "The uploaded file could not be moved to %s."
|
985 |
msgstr ""
|
986 |
|
987 |
+
#: models/PostsList.php:27
|
988 |
+
msgid "Optimized:"
|
|
|
|
|
|
|
|
|
989 |
msgstr ""
|
990 |
|
991 |
+
#: models/PostsList.php:28
|
992 |
msgid "See Analytics"
|
993 |
msgstr ""
|
994 |
|
995 |
+
#: models/PostsList.php:30
|
996 |
msgid "Optimize it with Squirrly to see the Analytics"
|
997 |
msgstr ""
|
998 |
|
999 |
+
#: models/PostsList.php:83
|
1000 |
msgid "This post's current position in Google"
|
1001 |
msgstr ""
|
1002 |
|
1003 |
+
#: models/PostsList.php:86
|
1004 |
msgid "The total traffic for the last 30 days, for the current post"
|
1005 |
msgstr ""
|
1006 |
|
1007 |
+
#: models/PostsList.php:89
|
1008 |
msgid "The total number of shares on social media channels for this post"
|
1009 |
msgstr ""
|
1010 |
|
1011 |
+
#: models/PostsList.php:92
|
1012 |
#, fuzzy
|
1013 |
msgid "The total authority for this post"
|
1014 |
msgstr "Nu sunt suficiente informatii pentru acest post"
|
1015 |
|
1016 |
+
#: models/PostsList.php:95
|
1017 |
msgid "The total number of inbound links to this post"
|
1018 |
msgstr ""
|
1019 |
|
1020 |
+
#: models/domain/Patterns.php:214
|
1021 |
+
msgid "Page"
|
1022 |
+
msgstr ""
|
|
|
1023 |
|
1024 |
+
#: models/domain/Patterns.php:215
|
1025 |
+
msgid "of"
|
1026 |
+
msgstr ""
|
|
|
1027 |
|
1028 |
+
#: models/services/Robots.php:13
|
1029 |
+
msgid "Squirrly SEO Robots"
|
1030 |
msgstr ""
|
1031 |
|
1032 |
+
#: models/services/Robots.php:16
|
1033 |
msgid ""
|
1034 |
+
"Your blog is not public. Please see Site Visibility on Settings > Reading."
|
|
|
1035 |
msgstr ""
|
1036 |
|
1037 |
+
#: models/services/Robots.php:31
|
1038 |
+
msgid "No Squirrly SEO Robots found."
|
|
|
|
|
1039 |
msgstr ""
|
1040 |
|
1041 |
+
#: squirrly.php:63
|
1042 |
+
msgid ""
|
1043 |
+
"For Squirrly to work, the PHP version has to be equal or greater then 5.1"
|
1044 |
+
msgstr "Versiunea PHP trebuie sa fie mai mare de 5.1"
|
1045 |
+
|
1046 |
+
#: view/BlockAccount.php:7 view/BlockAffiliate.php:7 view/BlockAudit.php:7
|
1047 |
+
#: view/BlockDashboard.php:6 view/BlockImport.php:7
|
1048 |
+
#: view/BlockKeywordResearch.php:7 view/BlockPatterns.php:7
|
1049 |
+
#: view/BlockPostsAnalytics.php:7 view/BlockSettings.php:7
|
1050 |
+
#: view/BlockSettingsSeo.php:7
|
1051 |
+
msgid "Connect to Squirrly Data Cloud"
|
1052 |
+
msgstr ""
|
1053 |
|
1054 |
+
#: view/BlockAccount.php:13 view/BlockAffiliate.php:13 view/BlockAudit.php:13
|
1055 |
+
#: view/BlockDashboard.php:28 view/BlockImport.php:13
|
1056 |
+
#: view/BlockKeywordResearch.php:13 view/BlockPatterns.php:13
|
1057 |
+
#: view/BlockPostsAnalytics.php:13 view/BlockSettings.php:13
|
1058 |
+
#: view/BlockSettingsSeo.php:13 view/Blocklogin.php:38
|
1059 |
+
msgid "START HERE"
|
1060 |
msgstr ""
|
1061 |
|
1062 |
+
#: view/BlockAccount.php:23
|
1063 |
+
#, fuzzy
|
1064 |
+
msgid "Squirrly account information"
|
1065 |
+
msgstr "Vezi Squirrly in actiune"
|
1066 |
+
|
1067 |
+
#: view/BlockAccount.php:25 view/BlockAffiliate.php:23
|
1068 |
#, fuzzy
|
1069 |
msgid "Go to dashboard"
|
1070 |
msgstr "dashboard"
|
1071 |
|
1072 |
+
#: view/BlockAccount.php:26
|
1073 |
+
msgid "See ALL of Your Activity so Far"
|
1074 |
+
msgstr ""
|
1075 |
+
|
1076 |
+
#: view/BlockAffiliate.php:21 view/BlockAffiliate.php:33
|
1077 |
+
msgid "Join our affiliate program"
|
1078 |
+
msgstr ""
|
1079 |
|
1080 |
+
#: view/BlockAffiliate.php:34
|
1081 |
#, php-format
|
1082 |
msgid "%sHow I Started Making Money With the Squirrly Affiliate Program%s"
|
1083 |
msgstr ""
|
1084 |
|
1085 |
+
#: view/BlockAffiliate.php:37
|
1086 |
msgid "Affiliate Benefits"
|
1087 |
msgstr "Beneficii afiliere"
|
1088 |
|
1089 |
+
#: view/BlockAffiliate.php:42
|
1090 |
#, php-format
|
1091 |
+
msgid "- Up to recurring 45%s commission"
|
1092 |
+
msgstr ""
|
1093 |
|
1094 |
+
#: view/BlockAffiliate.php:47
|
1095 |
msgid "- No cost"
|
1096 |
msgstr "- Fara costuri"
|
1097 |
|
1098 |
+
#: view/BlockAffiliate.php:52
|
1099 |
msgid "- Monthly payments in your Paypal account"
|
1100 |
msgstr "- Platy lunare in contul tau de Paypal"
|
1101 |
|
1102 |
+
#: view/BlockAffiliate.php:61
|
1103 |
+
#, php-format
|
1104 |
+
msgid ""
|
1105 |
+
"Before joining our affiliate program, please read the Terms of Use %shttps://"
|
1106 |
+
"www.squirrly.co/terms/%s."
|
1107 |
+
msgstr ""
|
1108 |
+
|
1109 |
+
#: view/BlockAffiliate.php:69
|
1110 |
msgid ""
|
1111 |
"To redirect users to your site, just change \"squirrly.co\" with your domain."
|
1112 |
msgstr ""
|
1113 |
"Pentru a redirecta userii spre site-ul tau, schimba doar \"squirrly.co\" cu "
|
1114 |
"domeniul tau"
|
1115 |
|
1116 |
+
#: view/BlockAffiliate.php:72
|
1117 |
msgid "Generate affiliate link"
|
1118 |
msgstr "Generare link de afiliat"
|
1119 |
|
1120 |
+
#: view/BlockAffiliate.php:81
|
1121 |
msgid ""
|
1122 |
"Your affiliate account is set and ready to go. Above you have the affiliate "
|
1123 |
"link. "
|
1124 |
msgstr ""
|
1125 |
"Linkul tau de afiliere e gata. Mai sus aveti link-ul care il puteti folosi"
|
1126 |
|
1127 |
+
#: view/BlockAffiliate.php:83
|
1128 |
#, php-format
|
1129 |
msgid "Check your affiliate page: %sAffiliate page%s"
|
1130 |
msgstr "Verifica pagina ta de afiliat: %sAffiliate page%s"
|
1131 |
|
1132 |
+
#: view/BlockAffiliate.php:86
|
|
|
|
|
|
|
|
|
|
|
1133 |
msgid ""
|
1134 |
"After you connect to Squirrly you can begin to use your free Squirrly "
|
1135 |
"affiliate link immediately!"
|
1137 |
"Dupa ce te conectezi la Squirrly vei putea incepe sa folosesti link-ul tau "
|
1138 |
"de afiliat"
|
1139 |
|
1140 |
+
#: view/BlockAffiliate.php:96
|
1141 |
msgid "Squirrly banners you can use"
|
1142 |
msgstr "Bannere Squirrly"
|
1143 |
|
1144 |
+
#: view/BlockAffiliate.php:121
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1145 |
msgid "<< START HERE >>"
|
1146 |
msgstr ""
|
1147 |
|
1148 |
+
#: view/BlockAnalytics.php:55
|
1149 |
msgid "Moz Inbound Links"
|
1150 |
msgstr ""
|
1151 |
|
1152 |
+
#: view/BlockAnalytics.php:62
|
1153 |
+
msgid "Ahrefs Inbound Links"
|
1154 |
+
msgstr ""
|
1155 |
+
|
1156 |
+
#: view/BlockAnalytics.php:74
|
1157 |
msgid "Moz Authority"
|
1158 |
msgstr ""
|
1159 |
|
1160 |
+
#: view/BlockAnalytics.php:79
|
1161 |
msgid "Moz Rank"
|
1162 |
msgstr ""
|
1163 |
|
1164 |
+
#: view/BlockAnalytics.php:86
|
1165 |
#, fuzzy
|
1166 |
msgid "Google Page Rank"
|
1167 |
msgstr "URL Google Plus:"
|
1168 |
|
1169 |
+
#: view/BlockAnalytics.php:92
|
1170 |
+
msgid "Ahrefs Rank"
|
1171 |
+
msgstr ""
|
|
|
1172 |
|
1173 |
+
#: view/BlockAnalytics.php:108
|
1174 |
msgid "Facebook shares"
|
1175 |
msgstr ""
|
1176 |
|
1177 |
+
#: view/BlockAnalytics.php:113
|
1178 |
msgid "Facebook likes"
|
1179 |
msgstr ""
|
1180 |
|
1181 |
+
#: view/BlockAnalytics.php:118
|
1182 |
#, fuzzy
|
1183 |
msgid "Twitter shares"
|
1184 |
msgstr "Twitter"
|
1185 |
|
1186 |
+
#: view/BlockAnalytics.php:123
|
1187 |
#, fuzzy
|
1188 |
msgid "Google+ shares"
|
1189 |
msgstr "Rezultate Google pentru:"
|
1190 |
|
1191 |
+
#: view/BlockAnalytics.php:128
|
1192 |
msgid "LinkedIn Shares"
|
1193 |
msgstr ""
|
1194 |
|
1195 |
+
#: view/BlockAnalytics.php:133
|
1196 |
msgid "StumbleUpon shares"
|
1197 |
msgstr ""
|
1198 |
|
1199 |
+
#: view/BlockAnalytics.php:138
|
1200 |
msgid "Reddit shares"
|
1201 |
msgstr ""
|
1202 |
|
1203 |
+
#: view/BlockAnalytics.php:170
|
1204 |
msgid "Nicely done! Now you can focus on the other tasks"
|
1205 |
msgstr ""
|
1206 |
|
1207 |
+
#: view/BlockAnalytics.php:170
|
1208 |
msgid ""
|
1209 |
"I know you can improve this. Please follow the documentation for a quicker "
|
1210 |
"progress"
|
1211 |
msgstr ""
|
1212 |
|
1213 |
+
#: view/BlockAnalytics.php:243
|
1214 |
+
msgid "Visits"
|
1215 |
+
msgstr "Vizite"
|
1216 |
+
|
1217 |
+
#: view/BlockAnalytics.php:256
|
1218 |
#, fuzzy
|
1219 |
msgid "Current: "
|
1220 |
msgstr "Pozitia curenta"
|
1221 |
|
1222 |
+
#: view/BlockAnalytics.php:257
|
1223 |
msgid "Lowest: "
|
1224 |
msgstr ""
|
1225 |
|
1226 |
+
#: view/BlockAnalytics.php:258
|
1227 |
msgid "Highest: "
|
1228 |
msgstr ""
|
1229 |
|
1230 |
+
#: view/BlockAnalytics.php:262
|
1231 |
#, fuzzy
|
1232 |
msgid "last 30 days"
|
1233 |
msgstr "Ultimele 30 zile"
|
1234 |
|
1235 |
+
#: view/BlockAudit.php:24
|
1236 |
+
msgid "Squirrly Site Audit"
|
|
|
|
|
1237 |
msgstr ""
|
1238 |
|
1239 |
+
#: view/BlockAudit.php:31
|
1240 |
+
msgid "What the Audit offers:"
|
1241 |
+
msgstr ""
|
1242 |
|
1243 |
+
#: view/BlockAudit.php:32
|
1244 |
+
#, php-format
|
1245 |
msgid ""
|
1246 |
+
"%sTracks all the areas of your Content Marketing Strategy:%s: Blogging, "
|
1247 |
+
"Traffic, SEO, Social Signals, Links, Authority. Every single week, you get a "
|
1248 |
+
"new report by email."
|
1249 |
msgstr ""
|
1250 |
|
1251 |
+
#: view/BlockAudit.php:33
|
1252 |
+
#, php-format
|
1253 |
msgid ""
|
1254 |
+
"%sIt gives you professional advice on how to fix issues in those 6 areas%s. "
|
1255 |
+
"You can easily find out how to improve your content marketing strategy."
|
|
|
1256 |
msgstr ""
|
1257 |
|
1258 |
+
#: view/BlockAudit.php:34
|
1259 |
+
#, php-format
|
|
|
|
|
|
|
|
|
1260 |
msgid ""
|
1261 |
+
"%sMonitors your progress, week by week.%s You’ll get to see if your site "
|
1262 |
+
"audit has improved since you last checked it. "
|
1263 |
msgstr ""
|
1264 |
|
1265 |
+
#: view/BlockAudit.php:35
|
1266 |
+
#, php-format
|
1267 |
+
msgid "%sAnalyze any single article.%s See how it improves over time."
|
1268 |
msgstr ""
|
1269 |
|
1270 |
+
#: view/BlockAudit.php:36
|
1271 |
+
#, php-format
|
1272 |
+
msgid "%sLearn More About The Site Audit%s"
|
1273 |
+
msgstr ""
|
1274 |
|
1275 |
+
#: view/BlockAudit.php:37
|
1276 |
+
#, php-format
|
1277 |
+
msgid "%sRequest an Audit Now%s"
|
1278 |
msgstr ""
|
1279 |
|
1280 |
+
#: view/BlockAudit.php:43
|
1281 |
+
msgid "\"Your current site audit score:"
|
1282 |
+
msgstr ""
|
|
|
1283 |
|
1284 |
+
#: view/BlockAudit.php:47
|
1285 |
+
msgid "Score"
|
1286 |
+
msgstr ""
|
1287 |
+
|
1288 |
+
#: view/BlockAudit.php:50
|
1289 |
+
msgid "See the Audit"
|
1290 |
msgstr ""
|
1291 |
|
1292 |
+
#: view/BlockAudit.php:53
|
1293 |
msgid ""
|
1294 |
+
"It seems that no audit has been generated yet. You can request an audit down "
|
1295 |
+
"below. It should be ready in 5-10 minutes."
|
1296 |
msgstr ""
|
1297 |
|
1298 |
+
#: view/BlockAudit.php:55
|
1299 |
+
msgid "Request an Audit Now"
|
1300 |
+
msgstr ""
|
1301 |
|
1302 |
+
#: view/BlockAudit.php:62
|
1303 |
+
msgid "This is an example of a Site Audit"
|
1304 |
+
msgstr ""
|
1305 |
|
1306 |
+
#: view/BlockCopyright.php:9
|
1307 |
+
msgid "Squirrly Copywriting Options"
|
1308 |
+
msgstr ""
|
1309 |
|
1310 |
+
#: view/BlockCopyright.php:11
|
1311 |
+
msgid ""
|
1312 |
+
"Referencing other articles, ideas, and relevant Tweets adds value to your "
|
1313 |
+
"original content. This established journalist practice makes the content "
|
1314 |
+
"more trustworthy and helps readers shape a well-rounded understanding of the "
|
1315 |
+
"subject."
|
1316 |
+
msgstr ""
|
1317 |
|
1318 |
+
#: view/BlockCopyright.php:20
|
1319 |
+
msgid ""
|
1320 |
+
"The toolkit's intended purpose is to help you save time and find the best "
|
1321 |
+
"sources to include in your articles. "
|
1322 |
+
msgstr ""
|
1323 |
|
1324 |
+
#: view/BlockCopyright.php:24
|
1325 |
+
msgid ""
|
1326 |
+
"Squirrly has never encouraged and will never encourage users to create "
|
1327 |
+
"duplicate content."
|
1328 |
+
msgstr ""
|
1329 |
|
1330 |
+
#: view/BlockCopyright.php:25
|
1331 |
+
msgid ""
|
1332 |
+
"Squirrly will not take responsibility if an user copies an entire article "
|
1333 |
+
"from another source."
|
1334 |
+
msgstr ""
|
1335 |
|
1336 |
+
#: view/BlockCopyright.php:27
|
1337 |
+
msgid "Best Practices for Using the Inspiration Box from Squirrly: "
|
1338 |
+
msgstr ""
|
1339 |
|
1340 |
+
#: view/BlockCopyright.php:31
|
1341 |
+
msgid ""
|
1342 |
+
"Focus on creating original content. Citing sources should complement your "
|
1343 |
+
"original ideas"
|
1344 |
+
msgstr ""
|
1345 |
|
1346 |
+
#: view/BlockCopyright.php:32
|
1347 |
+
msgid "Try to limit yourself to 2 or 3 quotes per article"
|
1348 |
msgstr ""
|
1349 |
|
1350 |
+
#: view/BlockCopyright.php:33
|
1351 |
+
msgid "Always include a link to your sources"
|
1352 |
msgstr ""
|
1353 |
|
1354 |
+
#: view/BlockCopyright.php:39 view/BlockCopyright.php:50
|
1355 |
+
msgid "Use Squirrly's Inspiration box"
|
1356 |
msgstr ""
|
1357 |
|
1358 |
+
#: view/BlockCopyright.php:42 view/BlockCopyright.php:47
|
1359 |
+
msgid ""
|
1360 |
+
"I've read and understood how to correctly use the Inspiration Box from "
|
1361 |
+
"Squirrly."
|
1362 |
msgstr ""
|
1363 |
|
1364 |
+
#: view/BlockCustomerService.php:5
|
1365 |
+
msgid "Squirrly Customer Service"
|
1366 |
msgstr ""
|
1367 |
|
1368 |
+
#: view/BlockCustomerService.php:12
|
1369 |
+
msgid "Support Channels"
|
1370 |
+
msgstr ""
|
1371 |
|
1372 |
+
#: view/BlockCustomerService.php:13
|
1373 |
+
#, php-format
|
1374 |
+
msgid ""
|
1375 |
+
"%sHowto.squirrly.co%s > Knowledge Base. Find out how to get the most out of "
|
1376 |
+
"Squirrly SEO"
|
1377 |
+
msgstr ""
|
1378 |
|
1379 |
+
#: view/BlockCustomerService.php:14
|
1380 |
+
#, php-format
|
1381 |
+
msgid ""
|
1382 |
+
"%sPlugin.squirrly.co%s >> Case studies, ideas on how to better use Squirrly "
|
1383 |
+
"SEO for Content Marketing"
|
1384 |
+
msgstr ""
|
1385 |
|
1386 |
+
#: view/BlockCustomerService.php:15
|
1387 |
+
#, php-format
|
1388 |
+
msgid ""
|
1389 |
+
"%sFacebook page%s >> You can send us your support requests in private "
|
1390 |
+
"messages"
|
1391 |
+
msgstr ""
|
1392 |
|
1393 |
+
#: view/BlockCustomerService.php:16
|
1394 |
+
#, php-format
|
1395 |
+
msgid "%sSupport Community%s >> Join us on Google Plus"
|
1396 |
+
msgstr ""
|
1397 |
|
1398 |
+
#: view/BlockCustomerService.php:17
|
1399 |
+
#, php-format
|
1400 |
+
msgid "%sLive Chat%s >> on Youtube. Thursday 4 PM"
|
1401 |
+
msgstr ""
|
1402 |
|
1403 |
+
#: view/BlockCustomerService.php:18
|
1404 |
+
#, php-format
|
1405 |
+
msgid "%sNew Lessons%s >> Mon. and Tue. on Twitter"
|
1406 |
+
msgstr ""
|
1407 |
|
1408 |
+
#: view/BlockCustomerService.php:19
|
1409 |
+
#, php-format
|
1410 |
+
msgid "%sEmail Support%s >> 8 AM to 4 PM (London Time): Mon-Fri.."
|
1411 |
+
msgstr ""
|
1412 |
|
1413 |
+
#: view/BlockCustomerService.php:25 view/BlockSupport.php:21
|
1414 |
+
msgid "Need Help with Squirrly SEO?"
|
1415 |
+
msgstr "Ai nevoie de ajutor cu Squirrly SEO?"
|
1416 |
|
1417 |
+
#: view/BlockCustomerService.php:33 view/BlockSupport.php:27
|
1418 |
+
msgid "Send Question"
|
1419 |
+
msgstr "Trimite"
|
1420 |
|
1421 |
+
#: view/BlockDashboard.php:11
|
1422 |
+
msgid "Restore Squirrly Settings"
|
1423 |
+
msgstr ""
|
1424 |
|
1425 |
+
#: view/BlockDashboard.php:16 view/BlockImport.php:110
|
1426 |
+
msgid "Upload the file with the saved Squirrly Settings"
|
1427 |
+
msgstr ""
|
1428 |
|
1429 |
+
#: view/BlockDashboard.php:21 view/BlockImport.php:115
|
1430 |
+
#: view/BlockImport.php:137
|
1431 |
+
msgid "Restore Backup"
|
1432 |
+
msgstr ""
|
1433 |
|
1434 |
+
#: view/BlockDashboard.php:27
|
1435 |
+
msgid "Connect to Squirrly and start optimizing your site"
|
1436 |
+
msgstr ""
|
1437 |
|
1438 |
+
#: view/BlockDashboard.php:35
|
1439 |
+
msgid "Squirrly dashboard"
|
1440 |
+
msgstr "Dashboard Squirrly"
|
1441 |
|
1442 |
+
#: view/BlockDashboard.php:44
|
1443 |
+
#, php-format
|
1444 |
+
msgid ""
|
1445 |
+
"%sHelp Center%s - learn more about Squirrly SEO features and unhinge your "
|
1446 |
+
"SEO potential"
|
1447 |
+
msgstr ""
|
1448 |
|
1449 |
+
#: view/BlockDashboard.php:49
|
1450 |
+
msgid "Now with a fresh one right out of our Squirrly Labs!"
|
1451 |
+
msgstr ""
|
1452 |
|
1453 |
+
#: view/BlockDashboard.php:52
|
1454 |
+
msgid "Get It Here"
|
1455 |
+
msgstr ""
|
1456 |
|
1457 |
+
#: view/BlockDashboard.php:128
|
1458 |
+
msgid "Next Feature"
|
1459 |
+
msgstr ""
|
1460 |
|
1461 |
+
#: view/BlockDashboard.php:129
|
1462 |
+
msgid "Previous Feature"
|
1463 |
+
msgstr ""
|
1464 |
|
1465 |
+
#: view/BlockImport.php:22 view/BlockPatterns.php:22
|
1466 |
+
msgid "SEO Patterns"
|
1467 |
+
msgstr ""
|
1468 |
|
1469 |
+
#: view/BlockImport.php:34
|
1470 |
+
msgid "Import SEO settings from other SEO plugins or themes"
|
1471 |
+
msgstr ""
|
1472 |
|
1473 |
+
#: view/BlockImport.php:35
|
1474 |
+
msgid ""
|
1475 |
+
"If you were already using an SEO plugin, then you can import all the SEO "
|
1476 |
+
"settings in Squirrly. Just follow the steps presented on the right side."
|
1477 |
+
msgstr ""
|
1478 |
|
1479 |
+
#: view/BlockImport.php:42
|
1480 |
+
msgid "Select the plugin or theme you want to import the Settings from."
|
1481 |
+
msgstr ""
|
1482 |
|
1483 |
+
#: view/BlockImport.php:56
|
1484 |
+
msgid "Import Settings"
|
1485 |
+
msgstr ""
|
1486 |
|
1487 |
+
#: view/BlockImport.php:58 view/BlockImport.php:79
|
1488 |
+
msgid "We couldn't find any SEO plugin or theme to import from."
|
1489 |
+
msgstr ""
|
1490 |
|
1491 |
+
#: view/BlockImport.php:65
|
1492 |
+
msgid "Select the plugin or theme you want to import the SEO settings from."
|
1493 |
+
msgstr ""
|
1494 |
|
1495 |
+
#: view/BlockImport.php:86
|
1496 |
+
msgid ""
|
1497 |
+
"Note! If you import the SEO settings from other plugins or themes, you will "
|
1498 |
+
"lose all the settings that you had in Squirrly SEO. Make sure you backup "
|
1499 |
+
"your settings from the panel below before you do this. "
|
1500 |
+
msgstr ""
|
1501 |
|
1502 |
+
#: view/BlockImport.php:91
|
1503 |
+
msgid "Backup & Restore Squirrly SEO Settings"
|
1504 |
+
msgstr ""
|
1505 |
|
1506 |
+
#: view/BlockImport.php:92
|
1507 |
+
msgid ""
|
1508 |
+
"You can now download your Squirrly settings in an sql file before you go "
|
1509 |
+
"ahead and import the SEO settings from another plugin. That way, you can "
|
1510 |
+
"always go back to your Squirrly settings. "
|
1511 |
msgstr ""
|
1512 |
|
1513 |
+
#: view/BlockImport.php:99
|
1514 |
+
msgid "Backup & Restore Squirrly Settings"
|
1515 |
+
msgstr ""
|
1516 |
|
1517 |
+
#: view/BlockImport.php:103
|
1518 |
+
msgid "Backup Settings"
|
1519 |
+
msgstr ""
|
1520 |
|
1521 |
+
#: view/BlockImport.php:104
|
1522 |
+
msgid "Restore Settings"
|
1523 |
+
msgstr ""
|
1524 |
|
1525 |
+
#: view/BlockImport.php:115 view/BlockImport.php:137
|
1526 |
+
msgid "Are you sure you want to restore your settings?"
|
1527 |
+
msgstr ""
|
1528 |
|
1529 |
+
#: view/BlockImport.php:120
|
1530 |
+
msgid "Backup & Restore all the pages optimized with Squirrly SEO"
|
1531 |
+
msgstr ""
|
1532 |
|
1533 |
+
#: view/BlockImport.php:124
|
1534 |
+
msgid "Backup SEO"
|
1535 |
+
msgstr ""
|
1536 |
|
1537 |
+
#: view/BlockImport.php:125
|
1538 |
+
msgid "Restore SEO"
|
1539 |
+
msgstr ""
|
1540 |
|
1541 |
+
#: view/BlockImport.php:131
|
1542 |
+
msgid "Upload the file with the saved Squirrly SEO SQL file"
|
1543 |
+
msgstr ""
|
1544 |
|
1545 |
+
#: view/BlockImport.php:152
|
1546 |
+
msgid "Click to reset all the saved setting to default."
|
1547 |
+
msgstr ""
|
1548 |
|
1549 |
+
#: view/BlockImport.php:156
|
1550 |
+
msgid "Are you sure you want to remove all the saved settings?"
|
1551 |
+
msgstr ""
|
1552 |
|
1553 |
+
#: view/BlockImport.php:156
|
1554 |
+
msgid "Reset Settings"
|
1555 |
+
msgstr ""
|
1556 |
|
1557 |
+
#: view/BlockImport.php:162
|
1558 |
+
msgid ""
|
1559 |
+
"Note! Make sure you backup your data first in case you change your mind."
|
1560 |
+
msgstr ""
|
1561 |
|
1562 |
+
#: view/BlockKeywordResearch.php:27
|
1563 |
+
msgid "Squirrly Keyword Research"
|
1564 |
+
msgstr " Cercetare cuvinte cheie"
|
1565 |
|
1566 |
+
#: view/BlockLiveAssistant.php:9 view/Blockseo.php:7
|
1567 |
+
msgid "Squirrly Live Assistant"
|
1568 |
+
msgstr ""
|
|
|
1569 |
|
1570 |
+
#: view/BlockLiveAssistant.php:11
|
1571 |
+
#, php-format
|
1572 |
+
msgid ""
|
1573 |
+
"Using the Live Assistant from Squirrly SEO is like having a consultant "
|
1574 |
+
"sitting right next to you. It helps you get a 100% optimized page for both "
|
1575 |
+
"Humans and Search Engines."
|
1576 |
+
msgstr ""
|
1577 |
|
1578 |
+
#: view/BlockLiveAssistant.php:20
|
1579 |
+
msgid ""
|
1580 |
+
"You just have to type in the keyword you want the page to be optimized for."
|
1581 |
+
msgstr ""
|
1582 |
+
|
1583 |
+
#: view/BlockLiveAssistant.php:25
|
1584 |
+
msgid "Use Squirrly Live Assistant"
|
1585 |
+
msgstr ""
|
1586 |
+
|
1587 |
+
#: view/BlockPatterns.php:36
|
1588 |
+
msgid ""
|
1589 |
+
"Control how post types are displayed on your site and within search engine "
|
1590 |
+
"results and social media feeds."
|
1591 |
+
msgstr ""
|
1592 |
|
1593 |
+
#: view/BlockPatterns.php:37
|
1594 |
+
msgid ""
|
1595 |
+
"In Squirrly, each post type in your site comes with a predefined posting "
|
1596 |
+
"pattern when displayed onto your website. However, based on your site's "
|
1597 |
+
"purpose and needs, you can also decide what information these patterns will "
|
1598 |
+
"include."
|
1599 |
+
msgstr ""
|
1600 |
|
1601 |
+
#: view/BlockPatterns.php:38
|
1602 |
msgid ""
|
1603 |
+
"Once you set up a pattern for a particular post type, only the content "
|
1604 |
+
"required by your custom sequence will be displayed."
|
1605 |
msgstr ""
|
1606 |
|
1607 |
+
#: view/BlockPatterns.php:39
|
1608 |
+
#, php-format
|
1609 |
msgid ""
|
1610 |
+
"Squirrly lets you see how the customized patterns will apply when posts/"
|
1611 |
+
"pages are shared across social media or search engine feeds. You just need "
|
1612 |
+
"to go to the %sSquirrly SEO Snippet%s box, press <strong>Edit Snippet</"
|
1613 |
+
"strong> and you'll get a live preview after you customize the meta "
|
1614 |
+
"information."
|
1615 |
+
msgstr ""
|
1616 |
+
|
1617 |
+
#: view/BlockPatterns.php:43
|
1618 |
+
msgid "Set the custom patterns for each post type"
|
1619 |
+
msgstr ""
|
1620 |
+
|
1621 |
+
#: view/BlockPatterns.php:51
|
1622 |
+
msgid "+ Add Post Type"
|
1623 |
+
msgstr ""
|
1624 |
+
|
1625 |
+
#: view/BlockPatterns.php:51
|
1626 |
+
msgid "Add a post type from your Wordpress website"
|
1627 |
+
msgstr ""
|
1628 |
+
|
1629 |
+
#: view/BlockPatterns.php:54
|
1630 |
+
msgid "Add Post Type"
|
1631 |
+
msgstr ""
|
1632 |
+
|
1633 |
+
#: view/BlockPatterns.php:71
|
1634 |
+
msgid "Add"
|
1635 |
+
msgstr ""
|
1636 |
+
|
1637 |
+
#: view/BlockPatterns.php:81
|
1638 |
+
#, php-format
|
1639 |
+
msgid "Are you sure you want to remove the post type: %s"
|
1640 |
+
msgstr ""
|
1641 |
+
|
1642 |
+
#: view/BlockPatterns.php:81
|
1643 |
+
msgid "Remove Post Type"
|
1644 |
+
msgstr ""
|
1645 |
+
|
1646 |
+
#: view/BlockPatterns.php:86 view/FrontMenu.php:134
|
1647 |
+
msgid "Title"
|
1648 |
+
msgstr ""
|
1649 |
+
|
1650 |
+
#: view/BlockPatterns.php:92 view/FrontMenu.php:182
|
1651 |
+
msgid "Description"
|
1652 |
+
msgstr ""
|
1653 |
+
|
1654 |
+
#: view/BlockPatterns.php:98
|
1655 |
+
msgid "Separator"
|
1656 |
+
msgstr ""
|
1657 |
+
|
1658 |
+
#: view/BlockPatterns.php:113
|
1659 |
+
msgid "Let Google Index it"
|
1660 |
msgstr ""
|
1661 |
|
1662 |
+
#: view/BlockPatterns.php:118 view/BlockPatterns.php:132
|
1663 |
+
#: view/BlockPatterns.php:149 view/BlockSettings.php:135
|
1664 |
+
#: view/BlockSettings.php:146 view/BlockSettings.php:157
|
1665 |
+
#: view/BlockSettings.php:168 view/BlockSettings.php:180
|
1666 |
+
#: view/BlockSettings.php:192 view/BlockSettings.php:355
|
1667 |
+
#: view/BlockSettingsSeo.php:53 view/BlockSettingsSeo.php:95
|
1668 |
+
#: view/BlockSettingsSeo.php:112 view/BlockSettingsSeo.php:128
|
1669 |
+
#: view/BlockSettingsSeo.php:144 view/BlockSettingsSeo.php:160
|
1670 |
+
#: view/BlockSettingsSeo.php:176 view/BlockSettingsSeo.php:192
|
1671 |
+
#: view/BlockSettingsSeo.php:220 view/BlockSettingsSeo.php:236
|
1672 |
+
#: view/BlockSettingsSeo.php:252 view/BlockSettingsSeo.php:271
|
1673 |
+
#: view/BlockSettingsSeo.php:546 view/BlockSettingsSeo.php:578
|
1674 |
+
#: view/BlockSettingsSeo.php:586 view/BlockSettingsSeo.php:684
|
1675 |
+
#: view/BlockSettingsSeo.php:1030 view/FrontMenu.php:49 view/FrontMenu.php:508
|
1676 |
+
#: view/FrontMenu.php:521 view/FrontMenu.php:534
|
1677 |
msgid "Yes"
|
1678 |
msgstr "Da"
|
1679 |
|
1680 |
+
#: view/BlockPatterns.php:120 view/BlockPatterns.php:134
|
1681 |
+
#: view/BlockPatterns.php:151 view/BlockSettings.php:137
|
1682 |
+
#: view/BlockSettings.php:148 view/BlockSettings.php:159
|
1683 |
+
#: view/BlockSettings.php:170 view/BlockSettings.php:182
|
1684 |
+
#: view/BlockSettings.php:194 view/BlockSettings.php:357
|
1685 |
+
#: view/BlockSettingsSeo.php:55 view/BlockSettingsSeo.php:97
|
1686 |
+
#: view/BlockSettingsSeo.php:114 view/BlockSettingsSeo.php:130
|
1687 |
+
#: view/BlockSettingsSeo.php:146 view/BlockSettingsSeo.php:162
|
1688 |
+
#: view/BlockSettingsSeo.php:178 view/BlockSettingsSeo.php:194
|
1689 |
+
#: view/BlockSettingsSeo.php:222 view/BlockSettingsSeo.php:238
|
1690 |
+
#: view/BlockSettingsSeo.php:254 view/BlockSettingsSeo.php:273
|
1691 |
+
#: view/BlockSettingsSeo.php:548 view/BlockSettingsSeo.php:580
|
1692 |
+
#: view/BlockSettingsSeo.php:588 view/BlockSettingsSeo.php:686
|
1693 |
+
#: view/BlockSettingsSeo.php:1032 view/FrontMenu.php:51 view/FrontMenu.php:510
|
1694 |
+
#: view/FrontMenu.php:523 view/FrontMenu.php:536
|
1695 |
msgid "No"
|
1696 |
msgstr "Nu"
|
1697 |
|
1698 |
+
#: view/BlockPatterns.php:127
|
1699 |
+
msgid "Pass Link Juice"
|
1700 |
+
msgstr ""
|
1701 |
+
|
1702 |
+
#: view/BlockPatterns.php:141
|
1703 |
+
msgid "Do SEO"
|
1704 |
+
msgstr ""
|
1705 |
+
|
1706 |
+
#: view/BlockPatterns.php:185 view/BlockSettingsSeo.php:29
|
1707 |
+
#: view/BlockSettingsSeo.php:1082
|
1708 |
+
msgid "Save SEO"
|
1709 |
+
msgstr ""
|
1710 |
|
1711 |
+
#: view/BlockPostsAnalytics.php:24
|
1712 |
#, php-format
|
1713 |
msgid ""
|
1714 |
+
"The IP %s is calling the rank too often and google stopped the calls for %s "
|
1715 |
+
"mins. Lower the Rank check rate in Squirrly > Advanced > Rank Option. %sMore "
|
1716 |
+
"details%s"
|
1717 |
msgstr ""
|
1718 |
|
1719 |
+
#: view/BlockPostsAnalytics.php:29
|
1720 |
+
#, php-format
|
1721 |
+
msgid ""
|
1722 |
+
"To be able to check the RANK please activate cURL for PHP on your server "
|
1723 |
+
"%sDetails%s"
|
1724 |
+
msgstr ""
|
1725 |
|
1726 |
+
#: view/BlockPostsAnalytics.php:33
|
1727 |
+
#, php-format
|
1728 |
msgid ""
|
1729 |
+
"To be able to check the RANK please set the \"open_basedir\" to NULL on your "
|
1730 |
+
"server %sDetails%s"
|
1731 |
msgstr ""
|
|
|
|
|
1732 |
|
1733 |
+
#: view/BlockPostsAnalytics.php:38
|
1734 |
+
#, php-format
|
1735 |
msgid ""
|
1736 |
+
"To see the Google Ranking for each article you need to select how many pages "
|
1737 |
+
"to be checked by google rank every hour from %sSquirrly > Advanced > Google "
|
1738 |
+
"Rank Option%s. "
|
1739 |
msgstr ""
|
|
|
|
|
1740 |
|
1741 |
+
#: view/BlockPostsAnalytics.php:47
|
1742 |
#, fuzzy
|
1743 |
+
msgid "Squirrly Analytics"
|
1744 |
msgstr "Optiuni Squirrly"
|
1745 |
|
1746 |
+
#: view/BlockPostsAnalytics.php:48
|
1747 |
+
msgid ""
|
1748 |
+
"Don't see all your pages here? Make sure you optimize them with Squirrly, so "
|
1749 |
+
"that we can track them, and display you the analytics"
|
1750 |
+
msgstr ""
|
1751 |
+
|
1752 |
+
#: view/BlockSettings.php:24 view/BlockSettings.php:405
|
1753 |
+
msgid "Save settings"
|
1754 |
+
msgstr "Salveaza setari"
|
1755 |
+
|
1756 |
+
#: view/BlockSettings.php:41
|
1757 |
+
msgid "Post/Page Edit"
|
1758 |
+
msgstr ""
|
1759 |
+
|
1760 |
+
#: view/BlockSettings.php:42
|
1761 |
#, php-format
|
1762 |
+
msgid "%sThe right method in working with Squirrly, SEO plugin%s"
|
1763 |
msgstr ""
|
1764 |
|
1765 |
+
#: view/BlockSettings.php:43
|
1766 |
#, php-format
|
1767 |
+
msgid "%sGetting inspired with Squirrly WordPress SEO plugin%s"
|
1768 |
+
msgstr ""
|
1769 |
+
|
1770 |
+
#: view/BlockSettings.php:45
|
1771 |
+
#, php-format
|
1772 |
+
msgid "%sThere is a New SEO Live Assistant from Squirrly%s"
|
1773 |
msgstr ""
|
1774 |
|
1775 |
+
#: view/BlockSettings.php:46
|
1776 |
#, php-format
|
1777 |
+
msgid "%sHow to create Human friendly content with the WordPress SEO plugin?%s"
|
1778 |
+
msgstr ""
|
1779 |
+
|
1780 |
+
#: view/BlockSettings.php:52
|
1781 |
+
msgid "Inspiration Box G17"
|
1782 |
+
msgstr ""
|
1783 |
+
|
1784 |
+
#: view/BlockSettings.php:55 view/BlockSettings.php:56
|
1785 |
+
#: view/BlockSettings.php:69 view/BlockSettings.php:70
|
1786 |
+
#: view/BlockSettings.php:83 view/BlockSettings.php:84
|
1787 |
+
#: view/BlockSettingsSeo.php:66 view/BlockSettingsSeo.php:78
|
1788 |
+
#: view/BlockSettingsSeo.php:287 view/BlockSettingsSeo.php:526
|
1789 |
+
#: view/BlockSettingsSeo.php:852 view/BlockSettingsSeo.php:946
|
1790 |
+
#: view/BlockSettingsSeo.php:958 view/BlockSettingsSeo.php:970
|
1791 |
+
msgid "see how this improved since 2016"
|
1792 |
+
msgstr ""
|
1793 |
+
|
1794 |
+
#: view/BlockSettings.php:66
|
1795 |
+
msgid "Keyword Research G17"
|
1796 |
+
msgstr ""
|
1797 |
+
|
1798 |
+
#: view/BlockSettings.php:80
|
1799 |
+
msgid "Inner Links G17"
|
1800 |
+
msgstr ""
|
1801 |
+
|
1802 |
+
#: view/BlockSettings.php:93
|
1803 |
+
msgid "Load Squirrly Live Assistant for"
|
1804 |
+
msgstr ""
|
1805 |
+
|
1806 |
+
#: view/BlockSettings.php:97 view/BlockSettingsSeo.php:707
|
1807 |
+
msgid "Posts"
|
1808 |
+
msgstr ""
|
1809 |
+
|
1810 |
+
#: view/BlockSettings.php:100 view/BlockSettingsSeo.php:736
|
1811 |
+
msgid "Pages"
|
1812 |
+
msgstr ""
|
1813 |
+
|
1814 |
+
#: view/BlockSettings.php:104 view/BlockSettingsSeo.php:721
|
1815 |
+
msgid "Products"
|
1816 |
+
msgstr ""
|
1817 |
+
|
1818 |
+
#: view/BlockSettings.php:140
|
1819 |
msgid ""
|
1820 |
+
"Show <strong>Squirrly Tooltips</strong> when posting a new article (e.g. "
|
1821 |
+
"\"Enter a keyword\")."
|
1822 |
msgstr ""
|
1823 |
|
1824 |
+
#: view/BlockSettings.php:151
|
1825 |
+
msgid ""
|
1826 |
+
"Always show <strong>Keyword Research</strong> about the selected keyword."
|
1827 |
+
msgstr ""
|
1828 |
|
1829 |
+
#: view/BlockSettings.php:162
|
|
|
1830 |
msgid ""
|
1831 |
+
"Send optimization data to Squirrly API when the post is saved (don't use "
|
1832 |
+
"cron)"
|
1833 |
msgstr ""
|
|
|
|
|
1834 |
|
1835 |
+
#: view/BlockSettings.php:173
|
1836 |
+
msgid "Use <strong> the NEW version of the SEO Live Assistant</strong>."
|
1837 |
+
msgstr ""
|
1838 |
|
1839 |
+
#: view/BlockSettings.php:185
|
1840 |
+
msgid ""
|
1841 |
+
"Download <strong>remote images</strong> in your <strong>Media Library</"
|
1842 |
+
"strong> for the new posts."
|
1843 |
+
msgstr ""
|
1844 |
|
1845 |
+
#: view/BlockSettings.php:197
|
1846 |
+
msgid ""
|
1847 |
+
"Correct my <strong>feed links</strong> and <strong>images</strong> (convert "
|
1848 |
+
"from relative to absolute)."
|
1849 |
+
msgstr ""
|
1850 |
+
|
1851 |
+
#: view/BlockSettings.php:207
|
1852 |
+
msgid "Google Rank Options"
|
1853 |
+
msgstr ""
|
1854 |
|
1855 |
+
#: view/BlockSettings.php:208
|
1856 |
#, php-format
|
1857 |
+
msgid "%sCountry targeting%s"
|
1858 |
msgstr ""
|
1859 |
|
1860 |
+
#: view/BlockSettings.php:209
|
1861 |
+
#, php-format
|
1862 |
+
msgid "%sPowerful SEO Tool For Strong Google Rankings%s"
|
1863 |
+
msgstr ""
|
1864 |
|
1865 |
+
#: view/BlockSettings.php:216
|
|
|
1866 |
msgid ""
|
1867 |
+
"Select the Google extension for which Squirrly will check the Google rank."
|
|
|
1868 |
msgstr ""
|
|
|
|
|
1869 |
|
1870 |
+
#: view/BlockSettings.php:221
|
1871 |
+
msgid "Default"
|
1872 |
+
msgstr ""
|
1873 |
|
1874 |
+
#: view/BlockSettings.php:222
|
1875 |
+
msgid "American Samoa"
|
1876 |
+
msgstr ""
|
1877 |
|
1878 |
+
#: view/BlockSettings.php:223
|
1879 |
+
msgid "Anguilla"
|
1880 |
+
msgstr ""
|
1881 |
|
1882 |
+
#: view/BlockSettings.php:224
|
1883 |
+
msgid "Antigua and Barbuda"
|
1884 |
+
msgstr ""
|
1885 |
|
1886 |
+
#: view/BlockSettings.php:225
|
1887 |
+
msgid "Argentina"
|
1888 |
+
msgstr ""
|
1889 |
+
|
1890 |
+
#: view/BlockSettings.php:226
|
1891 |
+
msgid "Australia"
|
1892 |
+
msgstr ""
|
1893 |
+
|
1894 |
+
#: view/BlockSettings.php:227
|
1895 |
+
msgid "Austria"
|
1896 |
+
msgstr ""
|
1897 |
+
|
1898 |
+
#: view/BlockSettings.php:228
|
1899 |
+
msgid "Azerbaijan"
|
1900 |
+
msgstr ""
|
1901 |
+
|
1902 |
+
#: view/BlockSettings.php:229
|
1903 |
+
msgid "Belgium"
|
1904 |
+
msgstr ""
|
1905 |
+
|
1906 |
+
#: view/BlockSettings.php:230
|
1907 |
+
msgid "Brazil"
|
1908 |
+
msgstr ""
|
1909 |
+
|
1910 |
+
#: view/BlockSettings.php:231
|
1911 |
+
msgid "British Virgin Islands"
|
1912 |
+
msgstr ""
|
1913 |
+
|
1914 |
+
#: view/BlockSettings.php:232
|
1915 |
+
msgid "Burundi"
|
1916 |
+
msgstr ""
|
1917 |
+
|
1918 |
+
#: view/BlockSettings.php:233
|
1919 |
+
msgid "Bulgaria"
|
1920 |
+
msgstr ""
|
1921 |
+
|
1922 |
+
#: view/BlockSettings.php:234
|
1923 |
+
msgid "Canada"
|
1924 |
+
msgstr ""
|
1925 |
+
|
1926 |
+
#: view/BlockSettings.php:235
|
1927 |
+
msgid "Chad"
|
1928 |
+
msgstr ""
|
1929 |
+
|
1930 |
+
#: view/BlockSettings.php:236
|
1931 |
+
msgid "Chile"
|
1932 |
+
msgstr ""
|
1933 |
+
|
1934 |
+
#: view/BlockSettings.php:237
|
1935 |
+
msgid "Colombia"
|
1936 |
+
msgstr ""
|
1937 |
+
|
1938 |
+
#: view/BlockSettings.php:238
|
1939 |
+
msgid "Costa Rica"
|
1940 |
+
msgstr ""
|
1941 |
+
|
1942 |
+
#: view/BlockSettings.php:239
|
1943 |
+
msgid "Côte d'Ivoire"
|
1944 |
+
msgstr ""
|
1945 |
+
|
1946 |
+
#: view/BlockSettings.php:240
|
1947 |
+
msgid "Cuba"
|
1948 |
+
msgstr ""
|
1949 |
+
|
1950 |
+
#: view/BlockSettings.php:241
|
1951 |
+
msgid "Czech Republic"
|
1952 |
+
msgstr ""
|
1953 |
+
|
1954 |
+
#: view/BlockSettings.php:242
|
1955 |
+
msgid "Dem. Rep. of the Congo"
|
1956 |
+
msgstr ""
|
1957 |
|
1958 |
+
#: view/BlockSettings.php:243
|
1959 |
+
msgid "Denmark"
|
1960 |
+
msgstr ""
|
1961 |
+
|
1962 |
+
#: view/BlockSettings.php:244
|
1963 |
+
msgid "Djibouti"
|
1964 |
+
msgstr ""
|
1965 |
+
|
1966 |
+
#: view/BlockSettings.php:245
|
1967 |
+
msgid "Dominican Republic"
|
1968 |
+
msgstr ""
|
1969 |
+
|
1970 |
+
#: view/BlockSettings.php:246
|
1971 |
+
msgid "Ecuador"
|
1972 |
+
msgstr ""
|
1973 |
+
|
1974 |
+
#: view/BlockSettings.php:247
|
1975 |
+
msgid "El Salvador"
|
1976 |
+
msgstr ""
|
1977 |
+
|
1978 |
+
#: view/BlockSettings.php:248
|
1979 |
+
msgid "Estonia"
|
1980 |
+
msgstr ""
|
1981 |
|
1982 |
+
#: view/BlockSettings.php:249
|
1983 |
+
msgid "Federated States of Micronesia"
|
1984 |
+
msgstr ""
|
1985 |
+
|
1986 |
+
#: view/BlockSettings.php:250
|
1987 |
+
msgid "Fiji"
|
1988 |
+
msgstr ""
|
1989 |
+
|
1990 |
+
#: view/BlockSettings.php:251
|
1991 |
+
msgid "Finland"
|
1992 |
+
msgstr ""
|
1993 |
+
|
1994 |
+
#: view/BlockSettings.php:252
|
1995 |
#, fuzzy
|
1996 |
+
msgid "France"
|
1997 |
+
msgstr "Renunta"
|
1998 |
|
1999 |
+
#: view/BlockSettings.php:253
|
2000 |
+
msgid "The Gambia"
|
2001 |
+
msgstr ""
|
2002 |
|
2003 |
+
#: view/BlockSettings.php:254
|
2004 |
+
msgid "Georgia"
|
|
|
|
|
2005 |
msgstr ""
|
|
|
|
|
2006 |
|
2007 |
+
#: view/BlockSettings.php:255
|
2008 |
+
msgid "Germany"
|
2009 |
+
msgstr ""
|
2010 |
|
2011 |
+
#: view/BlockSettings.php:256
|
2012 |
+
msgid "Gibraltar"
|
|
|
2013 |
msgstr ""
|
2014 |
|
2015 |
+
#: view/BlockSettings.php:257
|
2016 |
+
msgid "Greece"
|
|
|
2017 |
msgstr ""
|
2018 |
|
2019 |
+
#: view/BlockSettings.php:258
|
2020 |
+
msgid "Greenland"
|
|
|
2021 |
msgstr ""
|
2022 |
|
2023 |
+
#: view/BlockSettings.php:259
|
2024 |
+
msgid "Guernsey"
|
|
|
2025 |
msgstr ""
|
2026 |
|
2027 |
+
#: view/BlockSettings.php:260
|
2028 |
+
msgid "Honduras"
|
2029 |
+
msgstr ""
|
2030 |
|
2031 |
+
#: view/BlockSettings.php:261
|
2032 |
+
msgid "Hong Kong"
|
|
|
2033 |
msgstr ""
|
|
|
|
|
2034 |
|
2035 |
+
#: view/BlockSettings.php:262
|
2036 |
+
msgid "Hungary"
|
|
|
2037 |
msgstr ""
|
|
|
|
|
2038 |
|
2039 |
+
#: view/BlockSettings.php:263
|
2040 |
+
msgid "India"
|
2041 |
+
msgstr ""
|
2042 |
+
|
2043 |
+
#: view/BlockSettings.php:264
|
2044 |
+
msgid "Indonesia"
|
2045 |
+
msgstr ""
|
2046 |
+
|
2047 |
+
#: view/BlockSettings.php:265
|
2048 |
+
msgid "Ireland"
|
2049 |
+
msgstr ""
|
2050 |
+
|
2051 |
+
#: view/BlockSettings.php:266
|
2052 |
+
msgid "Isle of Man"
|
2053 |
+
msgstr ""
|
2054 |
+
|
2055 |
+
#: view/BlockSettings.php:267
|
2056 |
+
msgid "Israel"
|
2057 |
msgstr ""
|
2058 |
|
2059 |
+
#: view/BlockSettings.php:268
|
2060 |
+
msgid "Italy"
|
2061 |
+
msgstr ""
|
2062 |
+
|
2063 |
+
#: view/BlockSettings.php:269
|
2064 |
+
msgid "Jamaica"
|
2065 |
+
msgstr ""
|
2066 |
+
|
2067 |
+
#: view/BlockSettings.php:270
|
2068 |
+
msgid "Japan"
|
2069 |
+
msgstr ""
|
2070 |
+
|
2071 |
+
#: view/BlockSettings.php:271
|
2072 |
+
msgid "Jersey"
|
2073 |
+
msgstr ""
|
2074 |
+
|
2075 |
+
#: view/BlockSettings.php:272
|
2076 |
+
msgid "Kazakhstan"
|
2077 |
+
msgstr ""
|
2078 |
+
|
2079 |
+
#: view/BlockSettings.php:273
|
2080 |
+
msgid "Korea"
|
2081 |
+
msgstr ""
|
2082 |
+
|
2083 |
+
#: view/BlockSettings.php:274
|
2084 |
+
msgid "Latvia"
|
2085 |
+
msgstr ""
|
2086 |
+
|
2087 |
+
#: view/BlockSettings.php:275
|
2088 |
+
msgid "Lesotho"
|
2089 |
+
msgstr ""
|
2090 |
+
|
2091 |
+
#: view/BlockSettings.php:276
|
2092 |
+
msgid "Liechtenstein"
|
2093 |
+
msgstr ""
|
2094 |
+
|
2095 |
+
#: view/BlockSettings.php:277
|
2096 |
+
msgid "Lithuania"
|
2097 |
+
msgstr ""
|
2098 |
+
|
2099 |
+
#: view/BlockSettings.php:278
|
2100 |
+
msgid "Luxembourg"
|
2101 |
+
msgstr ""
|
2102 |
+
|
2103 |
+
#: view/BlockSettings.php:279
|
2104 |
+
msgid "Malawi"
|
2105 |
+
msgstr ""
|
2106 |
+
|
2107 |
+
#: view/BlockSettings.php:280
|
2108 |
+
msgid "Malaysia"
|
2109 |
+
msgstr ""
|
2110 |
+
|
2111 |
+
#: view/BlockSettings.php:281
|
2112 |
+
msgid "Malta"
|
2113 |
+
msgstr ""
|
2114 |
+
|
2115 |
+
#: view/BlockSettings.php:282
|
2116 |
+
msgid "Mauritius"
|
2117 |
+
msgstr ""
|
2118 |
+
|
2119 |
+
#: view/BlockSettings.php:283
|
2120 |
+
msgid "México"
|
2121 |
+
msgstr ""
|
2122 |
+
|
2123 |
+
#: view/BlockSettings.php:284
|
2124 |
+
msgid "Montserrat"
|
2125 |
+
msgstr ""
|
2126 |
+
|
2127 |
+
#: view/BlockSettings.php:285
|
2128 |
+
msgid "Namibia"
|
2129 |
+
msgstr ""
|
2130 |
+
|
2131 |
+
#: view/BlockSettings.php:286
|
2132 |
+
msgid "Nepal"
|
2133 |
+
msgstr ""
|
2134 |
+
|
2135 |
+
#: view/BlockSettings.php:287
|
2136 |
+
msgid "Netherlands"
|
2137 |
+
msgstr ""
|
2138 |
+
|
2139 |
+
#: view/BlockSettings.php:288
|
2140 |
+
msgid "New Zealand"
|
2141 |
+
msgstr ""
|
2142 |
+
|
2143 |
+
#: view/BlockSettings.php:289
|
2144 |
+
msgid "Nicaragua"
|
2145 |
+
msgstr ""
|
2146 |
+
|
2147 |
+
#: view/BlockSettings.php:290
|
2148 |
+
msgid "Norfolk Island"
|
2149 |
+
msgstr ""
|
2150 |
+
|
2151 |
+
#: view/BlockSettings.php:291
|
2152 |
+
msgid "Norway"
|
2153 |
+
msgstr ""
|
2154 |
+
|
2155 |
+
#: view/BlockSettings.php:292
|
2156 |
+
msgid "Pakistan"
|
2157 |
+
msgstr ""
|
2158 |
+
|
2159 |
+
#: view/BlockSettings.php:293
|
2160 |
+
msgid "Panamá"
|
2161 |
+
msgstr ""
|
2162 |
+
|
2163 |
+
#: view/BlockSettings.php:294
|
2164 |
+
msgid "Paraguay"
|
2165 |
+
msgstr ""
|
2166 |
+
|
2167 |
+
#: view/BlockSettings.php:295
|
2168 |
+
msgid "Perú"
|
2169 |
+
msgstr ""
|
2170 |
+
|
2171 |
+
#: view/BlockSettings.php:296
|
2172 |
+
msgid "Philippines"
|
2173 |
+
msgstr ""
|
2174 |
+
|
2175 |
+
#: view/BlockSettings.php:297
|
2176 |
+
msgid "Pitcairn Islands"
|
2177 |
+
msgstr ""
|
2178 |
+
|
2179 |
+
#: view/BlockSettings.php:298
|
2180 |
+
msgid "Poland"
|
2181 |
+
msgstr ""
|
2182 |
+
|
2183 |
+
#: view/BlockSettings.php:299
|
2184 |
+
msgid "Portugal"
|
2185 |
+
msgstr ""
|
2186 |
+
|
2187 |
+
#: view/BlockSettings.php:300
|
2188 |
+
msgid "Puerto Rico"
|
2189 |
+
msgstr ""
|
2190 |
+
|
2191 |
+
#: view/BlockSettings.php:301
|
2192 |
+
msgid "Rep. of the Congo"
|
2193 |
+
msgstr ""
|
2194 |
+
|
2195 |
+
#: view/BlockSettings.php:302
|
2196 |
+
msgid "Romania"
|
2197 |
+
msgstr ""
|
2198 |
+
|
2199 |
+
#: view/BlockSettings.php:303
|
2200 |
+
msgid "Russia"
|
2201 |
+
msgstr ""
|
2202 |
+
|
2203 |
+
#: view/BlockSettings.php:304
|
2204 |
+
msgid "Rwanda"
|
2205 |
+
msgstr ""
|
2206 |
+
|
2207 |
+
#: view/BlockSettings.php:305
|
2208 |
+
msgid "Saint Helena"
|
2209 |
+
msgstr ""
|
2210 |
+
|
2211 |
+
#: view/BlockSettings.php:306
|
2212 |
+
msgid "San Marino"
|
2213 |
+
msgstr ""
|
2214 |
+
|
2215 |
+
#: view/BlockSettings.php:307
|
2216 |
+
msgid "Saudi Arabia"
|
2217 |
+
msgstr ""
|
2218 |
+
|
2219 |
+
#: view/BlockSettings.php:308
|
2220 |
+
msgid "Singapore"
|
2221 |
+
msgstr ""
|
2222 |
+
|
2223 |
+
#: view/BlockSettings.php:309
|
2224 |
+
msgid "Slovakia"
|
2225 |
+
msgstr ""
|
2226 |
+
|
2227 |
+
#: view/BlockSettings.php:310
|
2228 |
+
msgid "South Africa"
|
2229 |
+
msgstr ""
|
2230 |
+
|
2231 |
+
#: view/BlockSettings.php:311
|
2232 |
+
msgid "Spain"
|
2233 |
+
msgstr ""
|
2234 |
+
|
2235 |
+
#: view/BlockSettings.php:312
|
2236 |
+
msgid "Sri Lanka"
|
2237 |
+
msgstr ""
|
2238 |
+
|
2239 |
+
#: view/BlockSettings.php:313
|
2240 |
+
msgid "Sweden"
|
2241 |
+
msgstr ""
|
2242 |
+
|
2243 |
+
#: view/BlockSettings.php:314
|
2244 |
+
msgid "Switzerland"
|
2245 |
+
msgstr ""
|
2246 |
+
|
2247 |
+
#: view/BlockSettings.php:315
|
2248 |
+
msgid "Taiwan"
|
2249 |
+
msgstr ""
|
2250 |
+
|
2251 |
+
#: view/BlockSettings.php:316
|
2252 |
+
msgid "Thailand"
|
2253 |
+
msgstr ""
|
2254 |
+
|
2255 |
+
#: view/BlockSettings.php:317
|
2256 |
+
msgid "Trinidad and Tobago"
|
2257 |
+
msgstr ""
|
2258 |
+
|
2259 |
+
#: view/BlockSettings.php:318
|
2260 |
+
msgid "Turkey"
|
2261 |
+
msgstr ""
|
2262 |
+
|
2263 |
+
#: view/BlockSettings.php:319
|
2264 |
+
msgid "Ukraine"
|
2265 |
+
msgstr ""
|
2266 |
+
|
2267 |
+
#: view/BlockSettings.php:320
|
2268 |
+
msgid "United Arab Emirates"
|
2269 |
+
msgstr ""
|
2270 |
+
|
2271 |
+
#: view/BlockSettings.php:321
|
2272 |
+
msgid "United Kingdom"
|
2273 |
+
msgstr ""
|
2274 |
+
|
2275 |
+
#: view/BlockSettings.php:322
|
2276 |
+
msgid "United States"
|
2277 |
+
msgstr ""
|
2278 |
+
|
2279 |
+
#: view/BlockSettings.php:323
|
2280 |
+
msgid "Uruguay"
|
2281 |
+
msgstr ""
|
2282 |
+
|
2283 |
+
#: view/BlockSettings.php:324
|
2284 |
+
msgid "Uzbekistan"
|
2285 |
+
msgstr ""
|
2286 |
+
|
2287 |
+
#: view/BlockSettings.php:325
|
2288 |
+
msgid "Vanuatu"
|
2289 |
+
msgstr ""
|
2290 |
+
|
2291 |
+
#: view/BlockSettings.php:326
|
2292 |
+
msgid "Venezuela"
|
2293 |
+
msgstr ""
|
2294 |
+
|
2295 |
+
#: view/BlockSettings.php:327
|
2296 |
+
msgid "Vietnam"
|
2297 |
+
msgstr ""
|
2298 |
+
|
2299 |
+
#: view/BlockSettings.php:331
|
2300 |
+
#, php-format
|
2301 |
+
msgid ""
|
2302 |
+
"Select how many pages to be checked in the Performance Analytics section "
|
2303 |
+
"every hour. %s(not recommended for shared hosting plan)%s"
|
2304 |
+
msgstr ""
|
2305 |
+
|
2306 |
+
#: view/BlockSettings.php:338
|
2307 |
+
msgid "page"
|
2308 |
+
msgstr ""
|
2309 |
+
|
2310 |
+
#: view/BlockSettings.php:340
|
2311 |
+
msgid "pages"
|
2312 |
+
msgstr ""
|
2313 |
+
|
2314 |
+
#: view/BlockSettings.php:346
|
2315 |
+
msgid "h"
|
2316 |
+
msgstr ""
|
2317 |
+
|
2318 |
+
#: view/BlockSettings.php:360
|
2319 |
+
msgid ""
|
2320 |
+
"Restricts search results to results originating in the above particular "
|
2321 |
+
"country."
|
2322 |
+
msgstr ""
|
2323 |
+
|
2324 |
+
#: view/BlockSettings.php:370
|
2325 |
+
msgid "Robots.txt Editor"
|
2326 |
+
msgstr ""
|
2327 |
+
|
2328 |
+
#: view/BlockSettings.php:371
|
2329 |
+
#, php-format
|
2330 |
+
msgid "%sLearn about robots.txt files%s"
|
2331 |
+
msgstr ""
|
2332 |
+
|
2333 |
+
#: view/BlockSettings.php:372
|
2334 |
+
#, php-format
|
2335 |
+
msgid "%sHow to use Robots.txt%s"
|
2336 |
+
msgstr ""
|
2337 |
+
|
2338 |
+
#: view/BlockSettings.php:378
|
2339 |
+
msgid "Edit the Robots.txt data"
|
2340 |
+
msgstr ""
|
2341 |
+
|
2342 |
+
#: view/BlockSettings.php:391
|
2343 |
+
msgid ""
|
2344 |
+
"Does not physically create the robots.txt file. The best option for "
|
2345 |
+
"Multisites."
|
2346 |
+
msgstr ""
|
2347 |
+
|
2348 |
+
#: view/BlockSettings.php:396
|
2349 |
+
msgid "Save Robots"
|
2350 |
+
msgstr ""
|
2351 |
+
|
2352 |
+
#: view/BlockSettingsSeo.php:27
|
2353 |
+
msgid "SEO"
|
2354 |
+
msgstr ""
|
2355 |
+
|
2356 |
+
#: view/BlockSettingsSeo.php:31 view/BlockSettingsSeo.php:204
|
2357 |
+
msgid "Check for SEO issues in your site"
|
2358 |
+
msgstr ""
|
2359 |
+
|
2360 |
+
#: view/BlockSettingsSeo.php:46
|
2361 |
+
msgid "Let Squirrly SEO Optimize This Blog"
|
2362 |
+
msgstr ""
|
2363 |
+
|
2364 |
+
#: view/BlockSettingsSeo.php:47
|
2365 |
+
#, php-format
|
2366 |
+
msgid "%sIs Squirrly SEO better than WordPress SEO by Yoast?%s"
|
2367 |
+
msgstr ""
|
2368 |
+
|
2369 |
+
#: view/BlockSettingsSeo.php:49
|
2370 |
+
msgid ""
|
2371 |
+
"Activate the built-in SEO settings from Squirrly by switching Yes below. "
|
2372 |
+
"<strong>Works well with Multisites and Ecommerce.</strong>"
|
2373 |
+
msgstr ""
|
2374 |
+
|
2375 |
+
#: view/BlockSettingsSeo.php:63
|
2376 |
+
msgid "New SEO Settings For Google 2017"
|
2377 |
+
msgstr ""
|
2378 |
+
|
2379 |
+
#: view/BlockSettingsSeo.php:75
|
2380 |
+
msgid "Fastest SEO Plugin in 2017"
|
2381 |
+
msgstr ""
|
2382 |
+
|
2383 |
+
#: view/BlockSettingsSeo.php:86
|
2384 |
+
msgid "What does Squirrly automatically do for SEO?"
|
2385 |
+
msgstr "Ce face Squirrly in mod automat pentru SEO?"
|
2386 |
+
|
2387 |
+
#: view/BlockSettingsSeo.php:100
|
2388 |
+
#, php-format
|
2389 |
+
msgid ""
|
2390 |
+
"adds <strong>%scanonical link%s</strong>, <strong>%srel=\"prev\" and rel="
|
2391 |
+
"\"next\"%s</strong> metas in Header"
|
2392 |
+
msgstr ""
|
2393 |
+
|
2394 |
+
#: view/BlockSettingsSeo.php:117
|
2395 |
+
msgid "adds the required METAs (<strong>Dublin Core, Language</strong>, etc.)"
|
2396 |
+
msgstr ""
|
2397 |
+
|
2398 |
+
#: view/BlockSettingsSeo.php:133
|
2399 |
+
#, php-format
|
2400 |
+
msgid "adds the <strong>%sXML Sitemap%s</strong> for search engines: %s"
|
2401 |
+
msgstr ""
|
2402 |
+
|
2403 |
+
#: view/BlockSettingsSeo.php:149
|
2404 |
+
#, php-format
|
2405 |
+
msgid "adds <strong>Feed style</strong> to your blog feed (eg. %s/feed)"
|
2406 |
+
msgstr ""
|
2407 |
+
|
2408 |
+
#: view/BlockSettingsSeo.php:165
|
2409 |
+
#, php-format
|
2410 |
+
msgid ""
|
2411 |
+
"adds the <strong>%sfavicon.ico%s</strong> and the <strong>%sicons for "
|
2412 |
+
"tablets and smartphones%s</strong>"
|
2413 |
+
msgstr ""
|
2414 |
+
|
2415 |
+
#: view/BlockSettingsSeo.php:181
|
2416 |
+
#, php-format
|
2417 |
+
msgid "adds the <strong>%sJson-LD%s</strong> metas for Semantic SEO"
|
2418 |
+
msgstr ""
|
2419 |
+
|
2420 |
+
#: view/BlockSettingsSeo.php:197
|
2421 |
+
#, php-format
|
2422 |
+
msgid ""
|
2423 |
+
"adds the <strong>%sNoindex%s</strong>, <strong>%sNofollow%s</strong> metas "
|
2424 |
+
"for your desired pages"
|
2425 |
+
msgstr ""
|
2426 |
+
|
2427 |
+
#: view/BlockSettingsSeo.php:201
|
2428 |
+
msgid ""
|
2429 |
+
"Note! By switching the <strong>Json-LD</strong>, <strong>XML Sitemap</"
|
2430 |
+
"strong> and <strong>Favicon</strong> on, you open new options below"
|
2431 |
+
msgstr ""
|
2432 |
+
|
2433 |
+
#: view/BlockSettingsSeo.php:210
|
2434 |
+
msgid "First Page Optimization"
|
2435 |
+
msgstr ""
|
2436 |
+
|
2437 |
+
#: view/BlockSettingsSeo.php:211
|
2438 |
+
#, php-format
|
2439 |
+
msgid "%sThe best SEO approach to Meta information%s"
|
2440 |
+
msgstr ""
|
2441 |
+
|
2442 |
+
#: view/BlockSettingsSeo.php:212
|
2443 |
+
msgid "Optimize the <strong>Titles</strong>"
|
2444 |
+
msgstr ""
|
2445 |
+
|
2446 |
+
#: view/BlockSettingsSeo.php:227
|
2447 |
+
#, php-format
|
2448 |
+
msgid "Optimize %sDescriptions%s "
|
2449 |
+
msgstr ""
|
2450 |
+
|
2451 |
+
#: view/BlockSettingsSeo.php:243
|
2452 |
+
#, php-format
|
2453 |
+
msgid "Optimize %sKeywords%s "
|
2454 |
+
msgstr ""
|
2455 |
+
|
2456 |
+
#: view/BlockSettingsSeo.php:259
|
2457 |
+
msgid "SEO for all post/pages"
|
2458 |
+
msgstr ""
|
2459 |
+
|
2460 |
+
#: view/BlockSettingsSeo.php:260
|
2461 |
+
#, php-format
|
2462 |
+
msgid ""
|
2463 |
+
"To customize the Title and Description for all the Posts and Pages in your "
|
2464 |
+
"site use the %sSquirrly Snippet Tool%s"
|
2465 |
+
msgstr ""
|
2466 |
+
|
2467 |
+
#: view/BlockSettingsSeo.php:262
|
2468 |
+
msgid "Add the Post tags in <strong>Keyword META</strong>."
|
2469 |
+
msgstr ""
|
2470 |
+
|
2471 |
+
#: view/BlockSettingsSeo.php:284
|
2472 |
+
msgid "Squirrly Snippet G17-True Render"
|
2473 |
+
msgstr ""
|
2474 |
+
|
2475 |
+
#: view/BlockSettingsSeo.php:308
|
2476 |
+
msgid "First Page Optimization:"
|
2477 |
+
msgstr ""
|
2478 |
+
|
2479 |
+
#: view/BlockSettingsSeo.php:314
|
2480 |
+
msgid "Title:"
|
2481 |
+
msgstr "Titlu:"
|
2482 |
+
|
2483 |
+
#: view/BlockSettingsSeo.php:319
|
2484 |
+
msgid "Tips: Length 10-75 chars"
|
2485 |
+
msgstr "Atentie: Lungimea 10-75 caractere"
|
2486 |
+
|
2487 |
+
#: view/BlockSettingsSeo.php:323
|
2488 |
+
msgid "Description:"
|
2489 |
+
msgstr "Descrierea:"
|
2490 |
+
|
2491 |
+
#: view/BlockSettingsSeo.php:327
|
2492 |
+
msgid "Tips: Length 70-165 chars"
|
2493 |
+
msgstr "Atentie: Lungimea 70-165 caractere"
|
2494 |
+
|
2495 |
+
#: view/BlockSettingsSeo.php:330
|
2496 |
+
msgid "Keywords:"
|
2497 |
+
msgstr "Cuvinte cheie:"
|
2498 |
+
|
2499 |
+
#: view/BlockSettingsSeo.php:331
|
2500 |
+
msgid "Tips: use 2-4 keywords"
|
2501 |
+
msgstr ""
|
2502 |
+
|
2503 |
+
#: view/BlockSettingsSeo.php:334
|
2504 |
+
msgid "OG Image:"
|
2505 |
+
msgstr ""
|
2506 |
+
|
2507 |
+
#: view/BlockSettingsSeo.php:335
|
2508 |
+
msgid "Select Open Graph Image"
|
2509 |
+
msgstr ""
|
2510 |
+
|
2511 |
+
#: view/BlockSettingsSeo.php:340
|
2512 |
+
msgid "First Page Preview (Title, Description, Keywords)"
|
2513 |
+
msgstr ""
|
2514 |
+
|
2515 |
+
#: view/BlockSettingsSeo.php:342
|
2516 |
+
msgid "Squirrly Snippet"
|
2517 |
+
msgstr "Snipet Squirrly"
|
2518 |
+
|
2519 |
+
#: view/BlockSettingsSeo.php:354
|
2520 |
+
msgid ""
|
2521 |
+
"If you don't see any changes in your Google snippet, check if other SEO "
|
2522 |
+
"themes or plugins affect Squirrly."
|
2523 |
+
msgstr ""
|
2524 |
+
|
2525 |
+
#: view/BlockSettingsSeo.php:358
|
2526 |
+
#, php-format
|
2527 |
+
msgid ""
|
2528 |
+
"Use the %s<strong>Squirrly Snippet Tool</strong>%s while editing a Post/Page "
|
2529 |
+
"to customize the Title and the Description."
|
2530 |
+
msgstr ""
|
2531 |
+
|
2532 |
+
#: view/BlockSettingsSeo.php:367
|
2533 |
+
#, fuzzy
|
2534 |
+
msgid "Social Media Options"
|
2535 |
+
msgstr "Optiuni Squirrly"
|
2536 |
+
|
2537 |
+
#: view/BlockSettingsSeo.php:369
|
2538 |
+
msgid "Select the language you're using on Social Media"
|
2539 |
+
msgstr ""
|
2540 |
+
|
2541 |
+
#: view/BlockSettingsSeo.php:515
|
2542 |
+
#, php-format
|
2543 |
+
msgid "%sHow to pop out in Social Media with your links%s"
|
2544 |
+
msgstr ""
|
2545 |
+
|
2546 |
+
#: view/BlockSettingsSeo.php:516
|
2547 |
+
#, php-format
|
2548 |
+
msgid "%sGet busy with Facebook’s new Search Engine functions%s"
|
2549 |
+
msgstr ""
|
2550 |
+
|
2551 |
+
#: view/BlockSettingsSeo.php:517
|
2552 |
+
#, php-format
|
2553 |
+
msgid ""
|
2554 |
+
"%sHow I Added Twitter Cards in My WordPress for Better Inbound Marketing%s"
|
2555 |
+
msgstr ""
|
2556 |
+
|
2557 |
+
#: view/BlockSettingsSeo.php:523
|
2558 |
+
msgid "Open Graph G17 - 2017 Settings"
|
2559 |
+
msgstr ""
|
2560 |
+
|
2561 |
+
#: view/BlockSettingsSeo.php:535
|
2562 |
+
msgid "Squirrly Adds the Best Codes for Open Graph and Twitter Cards"
|
2563 |
+
msgstr ""
|
2564 |
+
|
2565 |
+
#: view/BlockSettingsSeo.php:551
|
2566 |
+
#, php-format
|
2567 |
+
msgid ""
|
2568 |
+
"Add the Social Open Graph protocol so that your Facebook shares look good. "
|
2569 |
+
"%sCheck here%s. "
|
2570 |
+
msgstr ""
|
2571 |
+
|
2572 |
+
#: view/BlockSettingsSeo.php:555
|
2573 |
+
msgid "Facebook App ID"
|
2574 |
+
msgstr ""
|
2575 |
+
|
2576 |
+
#: view/BlockSettingsSeo.php:556
|
2577 |
+
#, php-format
|
2578 |
+
msgid "Add the %sFacebook App%s ID "
|
2579 |
+
msgstr ""
|
2580 |
+
|
2581 |
+
#: view/BlockSettingsSeo.php:573
|
2582 |
+
msgid "You need to add your <strong>Twitter account</strong> below"
|
2583 |
+
msgstr ""
|
2584 |
+
|
2585 |
+
#: view/BlockSettingsSeo.php:583
|
2586 |
+
msgid "Add the <strong>Twitter card</strong> in your tweets. "
|
2587 |
+
msgstr "Adauga <strong>titlul</strong> corect in pagina acasa"
|
2588 |
+
|
2589 |
+
#: view/BlockSettingsSeo.php:591
|
2590 |
+
#, php-format
|
2591 |
+
msgid ""
|
2592 |
+
"Use <strong>Twitter %ssummary_large_image%s</strong> for your Twitter Card. "
|
2593 |
+
msgstr ""
|
2594 |
+
|
2595 |
+
#: view/BlockSettingsSeo.php:603
|
2596 |
+
msgid "Social Media Accounts"
|
2597 |
+
msgstr ""
|
2598 |
+
|
2599 |
+
#: view/BlockSettingsSeo.php:604
|
2600 |
+
#, php-format
|
2601 |
+
msgid "%sLink your Google+ profile to the content you create%s"
|
2602 |
+
msgstr ""
|
2603 |
+
|
2604 |
+
#: view/BlockSettingsSeo.php:605
|
2605 |
+
#, php-format
|
2606 |
+
msgid ""
|
2607 |
+
"%sTwitter account is mandatory for <strong>Twitter Card Validation</strong>%s"
|
2608 |
+
msgstr ""
|
2609 |
+
|
2610 |
+
#: view/BlockSettingsSeo.php:606
|
2611 |
+
#, php-format
|
2612 |
+
msgid ""
|
2613 |
+
"%sAdd all your social accounts for <strong>JSON-LD Semantic SEO</strong>%s"
|
2614 |
+
msgstr ""
|
2615 |
+
|
2616 |
+
#: view/BlockSettingsSeo.php:607 view/BlockSettingsSeo.php:843
|
2617 |
+
#, php-format
|
2618 |
+
msgid "%sSpecify your social profiles to Google%s"
|
2619 |
+
msgstr ""
|
2620 |
+
|
2621 |
+
#: view/BlockSettingsSeo.php:615
|
2622 |
+
msgid "Your Twitter Account:"
|
2623 |
+
msgstr ""
|
2624 |
+
|
2625 |
+
#: view/BlockSettingsSeo.php:622
|
2626 |
+
msgid "Google Plus Profile:"
|
2627 |
+
msgstr ""
|
2628 |
+
|
2629 |
+
#: view/BlockSettingsSeo.php:629
|
2630 |
+
msgid "Facebook Profile:"
|
2631 |
+
msgstr ""
|
2632 |
+
|
2633 |
+
#: view/BlockSettingsSeo.php:636
|
2634 |
+
msgid "Linkedin Profile:"
|
2635 |
+
msgstr ""
|
2636 |
+
|
2637 |
+
#: view/BlockSettingsSeo.php:643
|
2638 |
+
msgid "Pinterest Profile:"
|
2639 |
+
msgstr ""
|
2640 |
+
|
2641 |
+
#: view/BlockSettingsSeo.php:650
|
2642 |
+
msgid "Instagram Profile:"
|
2643 |
+
msgstr ""
|
2644 |
+
|
2645 |
+
#: view/BlockSettingsSeo.php:657
|
2646 |
+
msgid "Youtube Profile:"
|
2647 |
+
msgstr ""
|
2648 |
+
|
2649 |
+
#: view/BlockSettingsSeo.php:667
|
2650 |
+
msgid "XML Sitemap for Google"
|
2651 |
+
msgstr ""
|
2652 |
+
|
2653 |
+
#: view/BlockSettingsSeo.php:668
|
2654 |
+
msgid ""
|
2655 |
+
"Squirrly Sitemap is the fastest way to tell Google about the pages on your "
|
2656 |
+
"site. <strong>Supports Multisites, Google News, Images, Videos, Custom Post "
|
2657 |
+
"Types, Custom Taxonomies and Ecommerce products</strong>"
|
2658 |
+
msgstr ""
|
2659 |
+
|
2660 |
+
#: view/BlockSettingsSeo.php:669
|
2661 |
+
#, php-format
|
2662 |
+
msgid "%sHow to submit your sitemap.xml in Google Webmaster Tool%s"
|
2663 |
+
msgstr ""
|
2664 |
+
|
2665 |
+
#: view/BlockSettingsSeo.php:670
|
2666 |
+
#, php-format
|
2667 |
+
msgid ""
|
2668 |
+
"%s10 Vital To Dos to Feed Your SEO Content Machine After You Post Articles%s"
|
2669 |
+
msgstr ""
|
2670 |
+
|
2671 |
+
#: view/BlockSettingsSeo.php:671
|
2672 |
+
#, php-format
|
2673 |
+
msgid ""
|
2674 |
+
"For Google News Sitemap, ensure that your site is included in %sGoogle News%s"
|
2675 |
+
msgstr ""
|
2676 |
+
|
2677 |
+
#: view/BlockSettingsSeo.php:680
|
2678 |
+
msgid "XML Sitemap Options"
|
2679 |
+
msgstr ""
|
2680 |
+
|
2681 |
+
#: view/BlockSettingsSeo.php:689
|
2682 |
+
msgid "Ping your sitemap to Google and Bing when a new post is published"
|
2683 |
+
msgstr ""
|
2684 |
+
|
2685 |
+
#: view/BlockSettingsSeo.php:695
|
2686 |
+
msgid "Build Sitemaps for"
|
2687 |
+
msgstr ""
|
2688 |
+
|
2689 |
+
#: view/BlockSettingsSeo.php:703
|
2690 |
+
msgid "Google News"
|
2691 |
+
msgstr ""
|
2692 |
+
|
2693 |
+
#: view/BlockSettingsSeo.php:715
|
2694 |
+
msgid "Categories"
|
2695 |
+
msgstr ""
|
2696 |
+
|
2697 |
+
#: view/BlockSettingsSeo.php:729
|
2698 |
+
msgid "Tags"
|
2699 |
+
msgstr ""
|
2700 |
+
|
2701 |
+
#: view/BlockSettingsSeo.php:744
|
2702 |
+
msgid "Archive"
|
2703 |
+
msgstr ""
|
2704 |
+
|
2705 |
+
#: view/BlockSettingsSeo.php:752
|
2706 |
+
msgid "Custom Taxonomies"
|
2707 |
+
msgstr ""
|
2708 |
+
|
2709 |
+
#: view/BlockSettingsSeo.php:759
|
2710 |
+
msgid "Custom Posts"
|
2711 |
+
msgstr ""
|
2712 |
+
|
2713 |
+
#: view/BlockSettingsSeo.php:763
|
2714 |
+
#, php-format
|
2715 |
+
msgid ""
|
2716 |
+
"Select only the Post Types that have links in them. Your sitemap will be %s"
|
2717 |
+
msgstr ""
|
2718 |
+
|
2719 |
+
#: view/BlockSettingsSeo.php:767
|
2720 |
+
msgid "Include in Sitemaps"
|
2721 |
+
msgstr ""
|
2722 |
+
|
2723 |
+
#: view/BlockSettingsSeo.php:770
|
2724 |
+
msgid "<strong>Images</strong> from posts/pages"
|
2725 |
+
msgstr ""
|
2726 |
+
|
2727 |
+
#: view/BlockSettingsSeo.php:773
|
2728 |
+
msgid "<strong>Videos</strong> (embeded and local media)"
|
2729 |
+
msgstr ""
|
2730 |
+
|
2731 |
+
#: view/BlockSettingsSeo.php:778
|
2732 |
+
msgid "How often do you update your site?"
|
2733 |
+
msgstr ""
|
2734 |
+
|
2735 |
+
#: view/BlockSettingsSeo.php:780
|
2736 |
+
msgid "every day"
|
2737 |
+
msgstr ""
|
2738 |
+
|
2739 |
+
#: view/BlockSettingsSeo.php:781
|
2740 |
+
msgid "1-3 times per week"
|
2741 |
+
msgstr ""
|
2742 |
+
|
2743 |
+
#: view/BlockSettingsSeo.php:782
|
2744 |
+
msgid "1-3 times per month"
|
2745 |
+
msgstr ""
|
2746 |
+
|
2747 |
+
#: view/BlockSettingsSeo.php:783
|
2748 |
+
msgid "1-3 times per year"
|
2749 |
+
msgstr ""
|
2750 |
+
|
2751 |
+
#: view/BlockSettingsSeo.php:787
|
2752 |
+
msgid "Feed Pagination: How many Posts per page to show in sitemap?"
|
2753 |
+
msgstr ""
|
2754 |
+
|
2755 |
+
#: view/BlockSettingsSeo.php:802
|
2756 |
+
msgid "Change the Website Icon"
|
2757 |
+
msgstr "Schimba icoana site-ului"
|
2758 |
+
|
2759 |
+
#: view/BlockSettingsSeo.php:803
|
2760 |
+
msgid ""
|
2761 |
+
"Now, even tablet & smartphone browsers make use of your icons. This makes "
|
2762 |
+
"having a good favicon even more important."
|
2763 |
+
msgstr ""
|
2764 |
+
|
2765 |
+
#: view/BlockSettingsSeo.php:804
|
2766 |
+
#, php-format
|
2767 |
+
msgid ""
|
2768 |
+
"You can use %shttp://convertico.com/%s to convert your photo to icon and "
|
2769 |
+
"upload it here after that."
|
2770 |
+
msgstr ""
|
2771 |
+
"Poti folosi %shttp://convertico.com/%s pentru a converti imaginea in icoana "
|
2772 |
+
"si poti incarca icoana aici"
|
2773 |
+
|
2774 |
+
#: view/BlockSettingsSeo.php:810
|
2775 |
+
msgid "Upload file:"
|
2776 |
+
msgstr "Urca fisier:"
|
2777 |
+
|
2778 |
+
#: view/BlockSettingsSeo.php:823 view/FrontMenu.php:305 view/FrontMenu.php:446
|
2779 |
+
msgid "Upload"
|
2780 |
+
msgstr "Upload"
|
2781 |
+
|
2782 |
+
#: view/BlockSettingsSeo.php:827
|
2783 |
+
msgid ""
|
2784 |
+
"If you don't see the new icon in your browser, empty the browser cache and "
|
2785 |
+
"refresh the page."
|
2786 |
+
msgstr ""
|
2787 |
+
"Daca nu vezi noua icoana in browser, goleste cache-ul din browser si da "
|
2788 |
+
"refresh la pagina."
|
2789 |
+
|
2790 |
+
#: view/BlockSettingsSeo.php:829
|
2791 |
+
msgid "File types: JPG, JPEG, GIF and PNG."
|
2792 |
+
msgstr "Tip fisiere JPEG,JPG,GIF sau PNG "
|
2793 |
+
|
2794 |
+
#: view/BlockSettingsSeo.php:831
|
2795 |
+
msgid ""
|
2796 |
+
"Does not physically create the favicon.ico file. The best option for "
|
2797 |
+
"Multisites."
|
2798 |
+
msgstr ""
|
2799 |
+
|
2800 |
+
#: view/BlockSettingsSeo.php:839
|
2801 |
+
msgid "JSON-LD for Semantic SEO"
|
2802 |
+
msgstr ""
|
2803 |
+
|
2804 |
+
#: view/BlockSettingsSeo.php:840
|
2805 |
+
msgid ""
|
2806 |
+
"Squirrly will automatically add the JSON-LD Structured Data in your site."
|
2807 |
+
msgstr ""
|
2808 |
+
|
2809 |
+
#: view/BlockSettingsSeo.php:841
|
2810 |
+
#, php-format
|
2811 |
+
msgid "%sJSON-LD's Big Day at Google%s"
|
2812 |
+
msgstr ""
|
2813 |
+
|
2814 |
+
#: view/BlockSettingsSeo.php:842
|
2815 |
+
#, php-format
|
2816 |
+
msgid "%sGoogle Testing Tool%s"
|
2817 |
+
msgstr ""
|
2818 |
+
|
2819 |
+
#: view/BlockSettingsSeo.php:849
|
2820 |
+
msgid "JSON-LD G17 -2x More Options"
|
2821 |
+
msgstr ""
|
2822 |
+
|
2823 |
+
#: view/BlockSettingsSeo.php:866
|
2824 |
+
msgid "Your site type:"
|
2825 |
+
msgstr ""
|
2826 |
+
|
2827 |
+
#: view/BlockSettingsSeo.php:868
|
2828 |
+
msgid "Organization"
|
2829 |
+
msgstr ""
|
2830 |
+
|
2831 |
+
#: view/BlockSettingsSeo.php:869
|
2832 |
+
msgid "Personal"
|
2833 |
+
msgstr ""
|
2834 |
+
|
2835 |
+
#: view/BlockSettingsSeo.php:875
|
2836 |
+
msgid "Your Organization Name:"
|
2837 |
+
msgstr ""
|
2838 |
+
|
2839 |
+
#: view/BlockSettingsSeo.php:876
|
2840 |
+
msgid "Your Name:"
|
2841 |
+
msgstr ""
|
2842 |
+
|
2843 |
+
#: view/BlockSettingsSeo.php:880
|
2844 |
+
msgid "Job Title:"
|
2845 |
+
msgstr ""
|
2846 |
+
|
2847 |
+
#: view/BlockSettingsSeo.php:884
|
2848 |
+
msgid "Logo Url:"
|
2849 |
+
msgstr ""
|
2850 |
+
|
2851 |
+
#: view/BlockSettingsSeo.php:885
|
2852 |
+
msgid "Image Url:"
|
2853 |
+
msgstr ""
|
2854 |
+
|
2855 |
+
#: view/BlockSettingsSeo.php:886
|
2856 |
+
msgid "Select Image"
|
2857 |
+
msgstr ""
|
2858 |
+
|
2859 |
+
#: view/BlockSettingsSeo.php:890
|
2860 |
+
msgid "Contact Phone:"
|
2861 |
+
msgstr ""
|
2862 |
+
|
2863 |
+
#: view/BlockSettingsSeo.php:894
|
2864 |
+
msgid "Contact Type:"
|
2865 |
+
msgstr ""
|
2866 |
+
|
2867 |
+
#: view/BlockSettingsSeo.php:896
|
2868 |
+
msgid "Customer Service"
|
2869 |
+
msgstr ""
|
2870 |
+
|
2871 |
+
#: view/BlockSettingsSeo.php:897
|
2872 |
+
msgid "Technical Support"
|
2873 |
+
msgstr ""
|
2874 |
+
|
2875 |
+
#: view/BlockSettingsSeo.php:898
|
2876 |
+
msgid "Billing Support"
|
2877 |
+
msgstr ""
|
2878 |
+
|
2879 |
+
#: view/BlockSettingsSeo.php:899
|
2880 |
+
msgid "Bill Payment"
|
2881 |
+
msgstr ""
|
2882 |
+
|
2883 |
+
#: view/BlockSettingsSeo.php:900
|
2884 |
+
msgid "Sales"
|
2885 |
+
msgstr ""
|
2886 |
+
|
2887 |
+
#: view/BlockSettingsSeo.php:901
|
2888 |
+
msgid "Reservations"
|
2889 |
+
msgstr ""
|
2890 |
+
|
2891 |
+
#: view/BlockSettingsSeo.php:902
|
2892 |
+
msgid "Credit Card Support"
|
2893 |
+
msgstr ""
|
2894 |
+
|
2895 |
+
#: view/BlockSettingsSeo.php:903
|
2896 |
+
msgid "Emergency"
|
2897 |
+
msgstr ""
|
2898 |
+
|
2899 |
+
#: view/BlockSettingsSeo.php:904
|
2900 |
+
msgid "Baggage Tracking"
|
2901 |
+
msgstr ""
|
2902 |
+
|
2903 |
+
#: view/BlockSettingsSeo.php:905
|
2904 |
+
msgid "Roadside Assistance"
|
2905 |
+
msgstr ""
|
2906 |
+
|
2907 |
+
#: view/BlockSettingsSeo.php:906
|
2908 |
+
msgid "Package Tracking"
|
2909 |
+
msgstr ""
|
2910 |
+
|
2911 |
+
#: view/BlockSettingsSeo.php:911
|
2912 |
+
msgid "Short Description:"
|
2913 |
+
msgstr ""
|
2914 |
+
|
2915 |
+
#: view/BlockSettingsSeo.php:919
|
2916 |
+
msgid "Add your social accounts for Json-LD"
|
2917 |
+
msgstr ""
|
2918 |
+
|
2919 |
+
#: view/BlockSettingsSeo.php:924
|
2920 |
+
msgid "How the search results will look like once Google grabs your data."
|
2921 |
+
msgstr ""
|
2922 |
+
|
2923 |
+
#: view/BlockSettingsSeo.php:933 view/BlockToolbar.php:8
|
2924 |
+
msgid "Tracking Tools"
|
2925 |
+
msgstr ""
|
2926 |
+
|
2927 |
+
#: view/BlockSettingsSeo.php:934
|
2928 |
+
#, php-format
|
2929 |
+
msgid "%sHow to Get the Most Out of Google Analytics%s"
|
2930 |
+
msgstr ""
|
2931 |
+
|
2932 |
+
#: view/BlockSettingsSeo.php:935
|
2933 |
+
#, php-format
|
2934 |
+
msgid "%sWhat is Facebook Pixel?%s"
|
2935 |
+
msgstr ""
|
2936 |
+
|
2937 |
+
#: view/BlockSettingsSeo.php:936
|
2938 |
+
#, php-format
|
2939 |
+
msgid "%sA Beginner’s Guide to Facebook Insights%s"
|
2940 |
+
msgstr ""
|
2941 |
+
|
2942 |
+
#: view/BlockSettingsSeo.php:943
|
2943 |
+
msgid "Google Tracking G17"
|
2944 |
+
msgstr ""
|
2945 |
+
|
2946 |
+
#: view/BlockSettingsSeo.php:955
|
2947 |
+
msgid "Facebook Tracking G17"
|
2948 |
+
msgstr ""
|
2949 |
+
|
2950 |
+
#: view/BlockSettingsSeo.php:967
|
2951 |
+
msgid "Rich Pins G17"
|
2952 |
+
msgstr ""
|
2953 |
+
|
2954 |
+
#: view/BlockSettingsSeo.php:984 view/BlockSettingsSeo.php:994
|
2955 |
+
#: view/BlockSettingsSeo.php:1007
|
2956 |
+
#, php-format
|
2957 |
+
msgid "Facebook Admin ID (for %sInsights%s ):"
|
2958 |
+
msgstr ""
|
2959 |
+
|
2960 |
+
#: view/BlockSettingsSeo.php:987 view/BlockSettingsSeo.php:997
|
2961 |
+
#: view/BlockSettingsSeo.php:1010
|
2962 |
+
msgid "Facebook ID or https://www.facebook.com/YourProfileName"
|
2963 |
+
msgstr ""
|
2964 |
+
|
2965 |
+
#: view/BlockSettingsSeo.php:1002
|
2966 |
+
msgid "Add a Facebook Admin ID"
|
2967 |
+
msgstr ""
|
2968 |
+
|
2969 |
+
#: view/BlockSettingsSeo.php:1016
|
2970 |
+
#, fuzzy, php-format
|
2971 |
+
msgid "Google %sAnalytics ID%s:"
|
2972 |
+
msgstr "Google %sAnalytics ID%s:"
|
2973 |
+
|
2974 |
+
#: view/BlockSettingsSeo.php:1021
|
2975 |
+
#, php-format
|
2976 |
+
msgid "Facebook %sPixel ID%s:"
|
2977 |
+
msgstr ""
|
2978 |
+
|
2979 |
+
#: view/BlockSettingsSeo.php:1035
|
2980 |
+
#, php-format
|
2981 |
+
msgid ""
|
2982 |
+
"Load <strong>%sGoogle Analytics AMP%s</strong> and <strong>%sFacebook Pixel "
|
2983 |
+
"AMP%s</strong> tracking%s(Warning! The tracking works only for AMP Themes.%s)"
|
2984 |
+
msgstr ""
|
2985 |
+
|
2986 |
+
#: view/BlockSettingsSeo.php:1042
|
2987 |
+
msgid "Measure Your Success"
|
2988 |
+
msgstr ""
|
2989 |
+
|
2990 |
+
#: view/BlockSettingsSeo.php:1043
|
2991 |
+
#, php-format
|
2992 |
+
msgid "%sHow to set the Google Webmaster Tool%s"
|
2993 |
+
msgstr ""
|
2994 |
+
|
2995 |
+
#: view/BlockSettingsSeo.php:1044
|
2996 |
+
#, php-format
|
2997 |
+
msgid "%sBest practices to help Google find, crawl, and index your site%s"
|
2998 |
+
msgstr ""
|
2999 |
+
|
3000 |
+
#: view/BlockSettingsSeo.php:1045
|
3001 |
+
#, php-format
|
3002 |
+
msgid "%sBing Webmaster Tools Help & How-To Center%s"
|
3003 |
+
msgstr ""
|
3004 |
+
|
3005 |
+
#: view/BlockSettingsSeo.php:1046
|
3006 |
+
#, php-format
|
3007 |
+
msgid "%sRich Pins Validator%s"
|
3008 |
+
msgstr ""
|
3009 |
+
|
3010 |
+
#: view/BlockSettingsSeo.php:1052
|
3011 |
+
#, fuzzy, php-format
|
3012 |
+
msgid "Google META verification code for %sWebmaster Tool%s:"
|
3013 |
+
msgstr "Cod META pentru %sGoogle Webmaster Tool%s"
|
3014 |
+
|
3015 |
+
#: view/BlockSettingsSeo.php:1058
|
3016 |
+
#, fuzzy, php-format
|
3017 |
+
msgid "Bing META code (for %sWebmaster Tool%s ):"
|
3018 |
+
msgstr "Bing META code (pentru %sWebmaster Tool%s):"
|
3019 |
+
|
3020 |
+
#: view/BlockSettingsSeo.php:1065
|
3021 |
+
#, fuzzy, php-format
|
3022 |
+
msgid "Alexa META code (for %sAlexa Tool%s ):"
|
3023 |
+
msgstr "Bing META code (pentru %sWebmaster Tool%s):"
|
3024 |
+
|
3025 |
+
#: view/BlockSettingsSeo.php:1071
|
3026 |
+
#, php-format
|
3027 |
+
msgid "Pinterest Website Validator Code: (validate %sRich Pins%s )"
|
3028 |
+
msgstr ""
|
3029 |
+
|
3030 |
+
#: view/BlockSupport.php:7
|
3031 |
+
msgid "Go to Profile"
|
3032 |
+
msgstr "Profilul tau din Squirrly"
|
3033 |
+
|
3034 |
+
#: view/BlockSupport.php:7 view/BlockSupport.php:8
|
3035 |
+
msgid "Profile"
|
3036 |
+
msgstr "Profil"
|
3037 |
+
|
3038 |
+
#: view/BlockSupport.php:32 view/BlockSupport.php:87
|
3039 |
+
msgid "For more support:"
|
3040 |
+
msgstr ""
|
3041 |
+
|
3042 |
+
#: view/BlockSupport.php:33 view/BlockSupport.php:88
|
3043 |
+
#, php-format
|
3044 |
+
msgid "10 AM to 4 PM (GMT): Mon-Fri %sby email%s."
|
3045 |
+
msgstr ""
|
3046 |
+
|
3047 |
+
#: view/BlockSupport.php:34 view/BlockSupport.php:90
|
3048 |
+
#, php-format
|
3049 |
+
msgid "%sLive Chat%s on Youtube. Thursday 4 PM."
|
3050 |
+
msgstr ""
|
3051 |
+
|
3052 |
+
#: view/BlockSupport.php:35 view/BlockSupport.php:91
|
3053 |
+
#, php-format
|
3054 |
+
msgid "Google Plus %sSupport Community%s."
|
3055 |
+
msgstr ""
|
3056 |
+
|
3057 |
+
#: view/BlockSupport.php:36 view/BlockSupport.php:92
|
3058 |
+
#, php-format
|
3059 |
+
msgid "New Lessons Mon. and Tue. on %sTwitter%s."
|
3060 |
+
msgstr ""
|
3061 |
+
|
3062 |
+
#: view/BlockSupport.php:48
|
3063 |
+
msgid "How was your Squirrly experience today?"
|
3064 |
+
msgstr "Cum a fost experienta de azi cu Squirrly?"
|
3065 |
+
|
3066 |
+
#: view/BlockSupport.php:57
|
3067 |
+
msgid "How was Squirrly today?"
|
3068 |
+
msgstr "Cum a fost Squirrly azi?"
|
3069 |
+
|
3070 |
+
#: view/BlockSupport.php:62
|
3071 |
+
msgid "Angry"
|
3072 |
+
msgstr ""
|
3073 |
+
|
3074 |
+
#: view/BlockSupport.php:62
|
3075 |
+
msgid "Annoying"
|
3076 |
+
msgstr ""
|
3077 |
+
|
3078 |
+
#: view/BlockSupport.php:65
|
3079 |
+
msgid "Sad"
|
3080 |
+
msgstr ""
|
3081 |
+
|
3082 |
+
#: view/BlockSupport.php:65
|
3083 |
+
msgid "Bad"
|
3084 |
+
msgstr ""
|
3085 |
+
|
3086 |
+
#: view/BlockSupport.php:68
|
3087 |
+
msgid "Happy"
|
3088 |
+
msgstr ""
|
3089 |
+
|
3090 |
+
#: view/BlockSupport.php:68
|
3091 |
+
msgid "Nice"
|
3092 |
+
msgstr ""
|
3093 |
+
|
3094 |
+
#: view/BlockSupport.php:71
|
3095 |
+
msgid "Excited"
|
3096 |
+
msgstr ""
|
3097 |
+
|
3098 |
+
#: view/BlockSupport.php:71
|
3099 |
+
msgid "Great"
|
3100 |
+
msgstr ""
|
3101 |
+
|
3102 |
+
#: view/BlockSupport.php:74
|
3103 |
+
msgid "Love it"
|
3104 |
+
msgstr ""
|
3105 |
+
|
3106 |
+
#: view/BlockSupport.php:80
|
3107 |
+
msgid "Please tell us why?"
|
3108 |
+
msgstr "De ce?"
|
3109 |
+
|
3110 |
+
#: view/BlockSupport.php:83
|
3111 |
+
msgid "Send feedback"
|
3112 |
+
msgstr "Trimite"
|
3113 |
+
|
3114 |
+
#: view/BlockSupport.php:89
|
3115 |
+
#, php-format
|
3116 |
+
msgid "%sSupport button%s here in WordPress (^^)"
|
3117 |
+
msgstr ""
|
3118 |
+
|
3119 |
+
#: view/BlockSupport.php:97
|
3120 |
+
msgid "Thank you! You can send us a happy face tomorow too."
|
3121 |
+
msgstr "Multumim! Ne poti trimite o fata vesela si maine."
|
3122 |
+
|
3123 |
+
#: view/BlockToolbar.php:5
|
3124 |
+
msgid "Structured Data"
|
3125 |
+
msgstr ""
|
3126 |
+
|
3127 |
+
#: view/BlockToolbar.php:6
|
3128 |
+
msgid "Social Media"
|
3129 |
+
msgstr ""
|
3130 |
+
|
3131 |
+
#: view/BlockToolbar.php:7
|
3132 |
+
msgid "Site Icon"
|
3133 |
+
msgstr ""
|
3134 |
+
|
3135 |
+
#: view/BlockToolbar.php:9
|
3136 |
+
msgid "Connections"
|
3137 |
+
msgstr ""
|
3138 |
+
|
3139 |
+
#: view/BlockToolbar.php:10
|
3140 |
+
msgid "Sitemap XML"
|
3141 |
+
msgstr ""
|
3142 |
+
|
3143 |
+
#: view/BlockToolbar.php:11
|
3144 |
+
msgid "Ranking Options"
|
3145 |
+
msgstr ""
|
3146 |
+
|
3147 |
+
#: view/BlockToolbar.php:12
|
3148 |
+
msgid "Advanced"
|
3149 |
+
msgstr "Avansat"
|
3150 |
+
|
3151 |
+
#: view/BlockToolbar.php:13
|
3152 |
+
msgid "Robots.txt"
|
3153 |
+
msgstr ""
|
3154 |
+
|
3155 |
+
#: view/BlockToolbar.php:15
|
3156 |
+
msgid "Import"
|
3157 |
+
msgstr ""
|
3158 |
+
|
3159 |
+
#: view/Blocklogin.php:2
|
3160 |
+
msgid "Squirrly.co Login"
|
3161 |
+
msgstr "Conectare la Squirrly"
|
3162 |
+
|
3163 |
+
#: view/Blocklogin.php:9
|
3164 |
+
msgid "Email:"
|
3165 |
+
msgstr "Email:"
|
3166 |
+
|
3167 |
+
#: view/Blocklogin.php:11
|
3168 |
+
msgid "Password:"
|
3169 |
+
msgstr "Parola:"
|
3170 |
+
|
3171 |
+
#: view/Blocklogin.php:13
|
3172 |
+
msgid "Login"
|
3173 |
+
msgstr "Logare"
|
3174 |
+
|
3175 |
+
#: view/Blocklogin.php:15
|
3176 |
+
msgid "Register"
|
3177 |
+
msgstr "Cont nou"
|
3178 |
+
|
3179 |
+
#: view/Blocklogin.php:15
|
3180 |
+
msgid "Register to Squirrly.co"
|
3181 |
+
msgstr "Inregistreaza-te la Squirrly.co"
|
3182 |
+
|
3183 |
+
#: view/Blocklogin.php:16
|
3184 |
+
msgid "Lost password?"
|
3185 |
+
msgstr "Ai uitat parola?"
|
3186 |
+
|
3187 |
+
#: view/Blocklogin.php:16
|
3188 |
+
msgid "Lost password"
|
3189 |
+
msgstr "Am uitat parola"
|
3190 |
+
|
3191 |
+
#: view/Blocklogin.php:21
|
3192 |
+
msgid "Enter your email"
|
3193 |
+
msgstr "Adauga adresa email"
|
3194 |
+
|
3195 |
+
#: view/Blocklogin.php:23
|
3196 |
+
msgid "Your Email:"
|
3197 |
+
msgstr ""
|
3198 |
+
|
3199 |
+
#: view/Blocklogin.php:31
|
3200 |
+
#, php-format
|
3201 |
+
msgid "I Agree with the %sSquirrly Terms%s"
|
3202 |
+
msgstr ""
|
3203 |
+
|
3204 |
+
#: view/Blocklogin.php:33
|
3205 |
+
msgid "Sign Up"
|
3206 |
+
msgstr "Sign Up"
|
3207 |
+
|
3208 |
+
#: view/Blocklogin.php:34
|
3209 |
+
msgid "I already have an account"
|
3210 |
+
msgstr "Am deja un cont"
|
3211 |
+
|
3212 |
+
#: view/Blocklogin.php:35
|
3213 |
+
msgid "This email connects you to Squirrly.co"
|
3214 |
+
msgstr "Acest email te conecteaza la Squirrly"
|
3215 |
+
|
3216 |
+
#: view/Blocklogin.php:46
|
3217 |
+
msgid "The email address is invalid!"
|
3218 |
+
msgstr "Adresa de email este invalida!"
|
3219 |
+
|
3220 |
+
#: view/Blocklogin.php:47
|
3221 |
+
msgid "Click on Sign Up button and try again ..."
|
3222 |
+
msgstr "Apasa butonul Sign Up pentru a incerca din nou ..."
|
3223 |
+
|
3224 |
+
#: view/Blocklogin.php:48
|
3225 |
+
msgid "An error occured while logging in!"
|
3226 |
+
msgstr "A aparut o eroare la logare."
|
3227 |
+
|
3228 |
+
#: view/Blocklogin.php:49
|
3229 |
+
msgid "Connecting ..."
|
3230 |
+
msgstr "Conectare ..."
|
3231 |
+
|
3232 |
+
#: view/Blocklogin.php:59
|
3233 |
+
msgid "Congratulations! You are ready to use all the features from Squirrly"
|
3234 |
+
msgstr ""
|
3235 |
+
|
3236 |
+
#: view/Blocksearch.php:2
|
3237 |
+
msgid "Waiting for your editor to load .. "
|
3238 |
+
msgstr ""
|
3239 |
+
|
3240 |
+
#: view/Blocksearch.php:3
|
3241 |
+
msgid ""
|
3242 |
+
"Javascript is disabled! You need to activate the javascript in order to use "
|
3243 |
+
"Squirrly SEO."
|
3244 |
+
msgstr ""
|
3245 |
+
|
3246 |
+
#: view/Blocksearch.php:6
|
3247 |
+
msgid "Optimize for Keyword"
|
3248 |
+
msgstr "Optimizare dupa cuvant cheie"
|
3249 |
+
|
3250 |
+
#: view/Blocksearch.php:7
|
3251 |
+
msgid "Squirrly Briefcase"
|
3252 |
+
msgstr ""
|
3253 |
+
|
3254 |
+
#: view/Blocksearch.php:14
|
3255 |
+
msgid "Add keyword to briefcase ..."
|
3256 |
+
msgstr ""
|
3257 |
+
|
3258 |
+
#: view/Blocksearch.php:28
|
3259 |
+
msgid "Enter a keyword"
|
3260 |
+
msgstr "Adauga cuvant"
|
3261 |
+
|
3262 |
+
#: view/Blocksearch.php:29
|
3263 |
+
msgid "for Squirrly Live SEO optimization"
|
3264 |
+
msgstr "Pentru optimizare cu Squirrly SEO"
|
3265 |
+
|
3266 |
+
#: view/Blocksearch.php:44
|
3267 |
+
msgid "Do a research"
|
3268 |
+
msgstr "Mai multe detalii"
|
3269 |
+
|
3270 |
+
#: view/Blocksearch.php:45
|
3271 |
+
msgid "Use this keyword"
|
3272 |
+
msgstr "Foloseste acest cuvant"
|
3273 |
+
|
3274 |
+
#: view/Blocksearch.php:49
|
3275 |
+
msgid "Enter a keyword above!"
|
3276 |
+
msgstr "Adauga cuvinte cheie mai sus!"
|
3277 |
+
|
3278 |
+
#: view/Blocksearch.php:50
|
3279 |
+
msgid "I have more then one keyword!"
|
3280 |
+
msgstr "Am mai multe cuvinte!"
|
3281 |
+
|
3282 |
+
#: view/Blocksearch.php:56
|
3283 |
+
msgid "Images"
|
3284 |
+
msgstr "Imagini"
|
3285 |
+
|
3286 |
+
#: view/Blocksearch.php:57
|
3287 |
+
msgid "Twitter"
|
3288 |
+
msgstr "Twitter"
|
3289 |
+
|
3290 |
+
#: view/Blocksearch.php:58
|
3291 |
+
msgid "Wiki"
|
3292 |
+
msgstr "Wiki"
|
3293 |
+
|
3294 |
+
#: view/Blocksearch.php:59
|
3295 |
+
msgid "Blogs"
|
3296 |
+
msgstr "Bloguri"
|
3297 |
+
|
3298 |
+
#: view/Blocksearch.php:60
|
3299 |
+
msgid "My articles"
|
3300 |
+
msgstr "Articolele mele"
|
3301 |
+
|
3302 |
+
#: view/Blocksearch.php:68
|
3303 |
+
msgid "Show only Copyright Free images"
|
3304 |
+
msgstr "Arata doar imagini fara copyright"
|
3305 |
+
|
3306 |
+
#: view/Blockseo.php:13
|
3307 |
+
msgid "Split Window"
|
3308 |
msgstr ""
|
3309 |
|
3310 |
+
#: view/FrontMenu.php:38
|
3311 |
+
msgid "Saved!"
|
|
|
3312 |
msgstr ""
|
3313 |
|
3314 |
+
#: view/FrontMenu.php:39
|
3315 |
+
msgid "Saved! This is how the preview looks like"
|
3316 |
msgstr ""
|
3317 |
|
3318 |
+
#: view/FrontMenu.php:45
|
3319 |
+
msgid "Activate Squirrly SEO for this page"
|
3320 |
msgstr ""
|
3321 |
|
3322 |
+
#: view/FrontMenu.php:61
|
3323 |
+
msgid "META"
|
3324 |
msgstr ""
|
3325 |
|
3326 |
+
#: view/FrontMenu.php:64
|
3327 |
+
msgid "FACEBOOK"
|
3328 |
msgstr ""
|
3329 |
|
3330 |
+
#: view/FrontMenu.php:67
|
3331 |
+
msgid "TWITTER"
|
3332 |
msgstr ""
|
3333 |
|
3334 |
+
#: view/FrontMenu.php:70
|
3335 |
+
msgid "ADVANCED"
|
3336 |
msgstr ""
|
3337 |
|
3338 |
+
#: view/FrontMenu.php:83
|
3339 |
+
msgid "How this page will appear on Search Engines"
|
3340 |
msgstr ""
|
3341 |
|
3342 |
+
#: view/FrontMenu.php:88
|
3343 |
+
msgid "Edit Snippet"
|
3344 |
msgstr ""
|
3345 |
|
3346 |
+
#: view/FrontMenu.php:103 view/FrontMenu.php:294 view/FrontMenu.php:434
|
3347 |
+
msgid "Cancel"
|
3348 |
+
msgstr "Renunta"
|
3349 |
|
3350 |
+
#: view/FrontMenu.php:104 view/FrontMenu.php:295 view/FrontMenu.php:435
|
3351 |
+
#: view/FrontMenu.php:496
|
3352 |
+
msgid "Save"
|
3353 |
msgstr ""
|
3354 |
|
3355 |
+
#: view/FrontMenu.php:111
|
3356 |
+
msgid "SEO Title"
|
3357 |
msgstr ""
|
3358 |
|
3359 |
+
#: view/FrontMenu.php:114 view/FrontMenu.php:164
|
3360 |
+
msgid "Pattern: "
|
3361 |
msgstr ""
|
3362 |
|
3363 |
+
#: view/FrontMenu.php:119
|
3364 |
+
msgid "Current Title"
|
3365 |
msgstr ""
|
3366 |
|
3367 |
+
#: view/FrontMenu.php:124
|
3368 |
+
msgid "Default Title"
|
3369 |
msgstr ""
|
3370 |
|
3371 |
+
#: view/FrontMenu.php:144 view/FrontMenu.php:191
|
3372 |
+
msgid "Pattern"
|
3373 |
msgstr ""
|
3374 |
|
3375 |
+
#: view/FrontMenu.php:161
|
3376 |
+
msgid "META Description"
|
3377 |
msgstr ""
|
3378 |
|
3379 |
+
#: view/FrontMenu.php:168
|
3380 |
+
msgid "Current Description"
|
3381 |
msgstr ""
|
3382 |
|
3383 |
+
#: view/FrontMenu.php:173
|
3384 |
+
msgid "Default Description"
|
3385 |
msgstr ""
|
3386 |
|
3387 |
+
#: view/FrontMenu.php:207
|
3388 |
+
msgid "Meta Keywords"
|
3389 |
msgstr ""
|
3390 |
|
3391 |
+
#: view/FrontMenu.php:211
|
3392 |
+
msgid "+ Add keyword"
|
3393 |
+
msgstr "Adauga cuvant cheie"
|
3394 |
|
3395 |
+
#: view/FrontMenu.php:219
|
3396 |
+
msgid "Canonical link"
|
3397 |
msgstr ""
|
3398 |
|
3399 |
+
#: view/FrontMenu.php:222
|
3400 |
+
msgid "Found: "
|
3401 |
msgstr ""
|
3402 |
|
3403 |
+
#: view/FrontMenu.php:228
|
3404 |
+
msgid "Current"
|
3405 |
msgstr ""
|
3406 |
|
3407 |
+
#: view/FrontMenu.php:234
|
3408 |
+
msgid "Default Link"
|
3409 |
msgstr ""
|
3410 |
|
3411 |
+
#: view/FrontMenu.php:245
|
3412 |
+
msgid ""
|
3413 |
+
"To edit the snippet, you have to activate Squirrly SEO for this page first"
|
3414 |
msgstr ""
|
3415 |
|
3416 |
+
#: view/FrontMenu.php:246 view/FrontMenu.php:389 view/FrontMenu.php:489
|
3417 |
+
#: view/FrontMenu.php:545
|
3418 |
+
msgid "or Click here"
|
3419 |
msgstr ""
|
3420 |
|
3421 |
+
#: view/FrontMenu.php:254
|
3422 |
+
msgid "How this page appears on Facebook"
|
3423 |
msgstr ""
|
3424 |
|
3425 |
+
#: view/FrontMenu.php:259
|
3426 |
+
msgid "Edit Open Graph"
|
3427 |
msgstr ""
|
3428 |
|
3429 |
+
#: view/FrontMenu.php:267 view/FrontMenu.php:408
|
3430 |
+
msgid "The image size must be at least 500 pixels wide"
|
3431 |
msgstr ""
|
3432 |
|
3433 |
+
#: view/FrontMenu.php:281 view/FrontMenu.php:422
|
3434 |
+
msgid ""
|
3435 |
+
"This is the Featured Image. You can changin it if you edit the snippet and "
|
3436 |
+
"upload anothe image."
|
|
|
|
|
|
|
3437 |
msgstr ""
|
3438 |
|
3439 |
+
#: view/FrontMenu.php:301
|
3440 |
+
msgid "Media Image"
|
3441 |
msgstr ""
|
3442 |
|
3443 |
+
#: view/FrontMenu.php:306 view/FrontMenu.php:447
|
3444 |
+
msgid "Image size must be at least 500 pixels wide"
|
3445 |
msgstr ""
|
3446 |
|
3447 |
+
#: view/FrontMenu.php:320
|
3448 |
+
msgid "OG Title"
|
3449 |
msgstr ""
|
3450 |
|
3451 |
+
#: view/FrontMenu.php:333
|
3452 |
+
msgid "OG Description"
|
3453 |
msgstr ""
|
3454 |
|
3455 |
+
#: view/FrontMenu.php:346
|
3456 |
+
msgid "Author Link"
|
3457 |
msgstr ""
|
3458 |
|
3459 |
+
#: view/FrontMenu.php:351
|
3460 |
+
msgid "if there are more authors, separate their facebook links with commas"
|
3461 |
msgstr ""
|
3462 |
|
3463 |
+
#: view/FrontMenu.php:357
|
3464 |
+
msgid "Page type"
|
3465 |
msgstr ""
|
3466 |
|
3467 |
+
#: view/FrontMenu.php:361
|
3468 |
+
msgid "Website"
|
3469 |
msgstr ""
|
3470 |
|
3471 |
+
#: view/FrontMenu.php:367
|
3472 |
+
msgid "Article"
|
3473 |
msgstr ""
|
3474 |
|
3475 |
+
#: view/FrontMenu.php:370
|
3476 |
+
msgid "Book"
|
3477 |
msgstr ""
|
3478 |
|
3479 |
+
#: view/FrontMenu.php:373
|
3480 |
+
msgid "Music"
|
3481 |
msgstr ""
|
3482 |
|
3483 |
+
#: view/FrontMenu.php:376
|
3484 |
+
msgid "Product"
|
3485 |
msgstr ""
|
3486 |
|
3487 |
+
#: view/FrontMenu.php:379
|
3488 |
+
msgid "Video"
|
3489 |
msgstr ""
|
3490 |
|
3491 |
+
#: view/FrontMenu.php:388
|
3492 |
+
msgid ""
|
3493 |
+
"To edit the Open Graph, you have to activate Squirrly SEO for this page first"
|
3494 |
msgstr ""
|
3495 |
|
3496 |
+
#: view/FrontMenu.php:397
|
3497 |
+
msgid "How this page appears on Twitter"
|
3498 |
msgstr ""
|
3499 |
|
3500 |
+
#: view/FrontMenu.php:400
|
3501 |
+
msgid "Edit Twitter Card"
|
3502 |
msgstr ""
|
3503 |
|
3504 |
+
#: view/FrontMenu.php:442
|
3505 |
+
msgid "Twitter Image"
|
3506 |
msgstr ""
|
3507 |
|
3508 |
+
#: view/FrontMenu.php:460
|
3509 |
+
msgid "Twitter Card Title"
|
3510 |
msgstr ""
|
3511 |
|
3512 |
+
#: view/FrontMenu.php:473
|
3513 |
+
msgid "Twitter Card Description"
|
3514 |
msgstr ""
|
3515 |
|
3516 |
+
#: view/FrontMenu.php:488
|
3517 |
+
msgid ""
|
3518 |
+
"To edit the Twitter Card, you have to activate Squirrly SEO for this page "
|
3519 |
+
"first"
|
3520 |
msgstr ""
|
3521 |
|
3522 |
+
#: view/FrontMenu.php:503
|
3523 |
+
msgid "Let Google Index This Page"
|
3524 |
msgstr ""
|
3525 |
|
3526 |
+
#: view/FrontMenu.php:516
|
3527 |
+
msgid "Pass Link Juice to This Page"
|
3528 |
msgstr ""
|
3529 |
|
3530 |
+
#: view/FrontMenu.php:529
|
3531 |
+
msgid "Show it in Sitemap.xml"
|
3532 |
msgstr ""
|
3533 |
|
3534 |
+
#: view/FrontMenu.php:544
|
3535 |
+
msgid "To edit, you have to activate Squirrly SEO for this page first."
|
3536 |
msgstr ""
|
3537 |
|
3538 |
+
#: view/FrontMenu.php:564
|
3539 |
+
msgid "post type"
|
3540 |
msgstr ""
|
3541 |
|
3542 |
+
#: view/FrontMenu.php:566
|
3543 |
+
msgid "og type"
|
3544 |
msgstr ""
|
3545 |
|
3546 |
+
#: view/FrontMenu.php:588
|
3547 |
+
msgid "No data for this URL. You can change the SEO in Frontend"
|
3548 |
msgstr ""
|
3549 |
|
3550 |
+
#: view/FrontMenu.php:608
|
3551 |
+
msgid "Enable Squirrly SEO to load Squirrly Snippet"
|
3552 |
msgstr ""
|
3553 |
|
3554 |
+
#: view/FrontMenu.php:632
|
3555 |
+
#, php-format
|
3556 |
+
msgid "%sPlease connect to Squirrly first%s"
|
3557 |
msgstr ""
|
3558 |
|
3559 |
+
#~ msgid ":( I lost my squirrel. Please reload the page."
|
3560 |
+
#~ msgstr ":( Am pierdut veverita. Te rog sa dai refresh la pagina."
|
|
|
3561 |
|
3562 |
+
#~ msgid "Join Squirrly today!"
|
3563 |
+
#~ msgstr "Alatura-te lui Squirrly!"
|
|
|
3564 |
|
3565 |
+
#~ msgid "- Recurring 45%s commission"
|
3566 |
+
#~ msgstr "- Comision 45%s din abonament"
|
|
|
3567 |
|
3568 |
+
#~ msgid "Tips: 2-4 keywords"
|
3569 |
+
#~ msgstr "Atentie: 2-4 cuvinte cheie"
|
|
|
3570 |
|
3571 |
+
#~ msgid ""
|
3572 |
+
#~ "If you don't see any changes in custom optimization, check if another SEO "
|
3573 |
+
#~ "plugin affects Squirrly SEO"
|
3574 |
+
#~ msgstr ""
|
3575 |
+
#~ "Daca nu sunt modificari in titlu prin aceasta optimizate, verifica daca "
|
3576 |
+
#~ "nu e afectat de alte pluginuri instalate."
|
3577 |
|
3578 |
+
#~ msgid "Add the keyword in the %sintroduction%s of your article"
|
3579 |
+
#~ msgstr "Adauga keyword-ul in %s "
|
|
|
3580 |
|
3581 |
+
#~ msgid "Notice: "
|
3582 |
+
#~ msgstr "Atentie:"
|
|
|
3583 |
|
3584 |
+
#~ msgid "Note: "
|
3585 |
+
#~ msgstr "Atentie:"
|
|
|
3586 |
|
3587 |
+
#~ msgid "Let Squirrly optimize your SEO automatically (recommended)"
|
3588 |
+
#~ msgstr "Lasa Squirrly sa optimizeze SEO automat (recomandat)"
|
|
|
3589 |
|
3590 |
+
#~ msgid ""
|
3591 |
+
#~ "You have META Description Duplicates. Disable the Squirrly SEO "
|
3592 |
+
#~ "Description or disable the other SEO Plugins"
|
3593 |
+
#~ msgstr ""
|
3594 |
+
#~ "Aveti duplicate in META Descriere. Opriti Squirrly Seo Description sau "
|
3595 |
+
#~ "dezactivati alte plugin-uri de SEO"
|
3596 |
|
3597 |
+
#~ msgid " getting started"
|
3598 |
+
#~ msgstr "ajutor"
|
|
|
3599 |
|
3600 |
+
#~ msgid " dashboard"
|
3601 |
+
#~ msgstr "dashboard"
|
|
|
3602 |
|
3603 |
+
#, fuzzy
|
3604 |
+
#~ msgid " post list"
|
3605 |
+
#~ msgstr "Vezi in "
|
3606 |
|
3607 |
+
#~ msgid " settings"
|
3608 |
+
#~ msgstr "setari"
|
|
|
3609 |
|
3610 |
+
#~ msgid "Make money with "
|
3611 |
+
#~ msgstr "Castiga bani cu"
|
|
|
3612 |
|
3613 |
+
#~ msgid "Make money"
|
3614 |
+
#~ msgstr "Castiga Bani"
|
|
|
3615 |
|
3616 |
+
#, fuzzy
|
3617 |
+
#~ msgid "URL Indexed"
|
3618 |
+
#~ msgstr "Indexare Google"
|
3619 |
|
3620 |
+
#~ msgid "Exact search:"
|
3621 |
+
#~ msgstr "Cautari exacte:"
|
|
|
3622 |
|
3623 |
+
#~ msgid "For Squirrly to work, you have to have tinymce editor installed!"
|
3624 |
+
#~ msgstr ""
|
3625 |
+
#~ "Pentru ca Squirrly sa functioneze, trebuie sa ai editorul TinyMCE instalat"
|
3626 |
|
3627 |
+
#~ msgid "Switch to Visual editor!"
|
3628 |
+
#~ msgstr "Schimba in Editor Vizual!"
|
|
|
3629 |
|
3630 |
+
#~ msgid "Use more words in one keyword"
|
3631 |
+
#~ msgstr "Am mai multe cuvinte"
|
|
|
3632 |
|
3633 |
+
#~ msgid "Save changes"
|
3634 |
+
#~ msgstr "Salveaza"
|
|
|
3635 |
|
3636 |
+
#~ msgid "Reset"
|
3637 |
+
#~ msgstr "Resetare"
|
|
|
3638 |
|
3639 |
+
#, fuzzy
|
3640 |
+
#~ msgid "Customize Meta"
|
3641 |
+
#~ msgstr "Modificare META"
|
3642 |
|
3643 |
+
#~ msgid "manage keywords"
|
3644 |
+
#~ msgstr "administrare cuvinte cheie"
|
|
|
3645 |
|
3646 |
+
#~ msgid ""
|
3647 |
+
#~ "Click the Update button (to the right) to see the snippet from your "
|
3648 |
+
#~ "website."
|
3649 |
+
#~ msgstr "Click pe butonul Update pentru a vedea snipetul site-ului"
|
3650 |
|
3651 |
+
#~ msgid "Enter a title above for the snippet to get data."
|
3652 |
+
#~ msgstr "Adauga un titlu pentru a putea vedea datele in snipet"
|
|
|
3653 |
|
3654 |
+
#~ msgid "Monthly Traffic"
|
3655 |
+
#~ msgstr "Trafic lunar"
|
|
|
3656 |
|
3657 |
+
#, fuzzy
|
3658 |
+
#~ msgid "[stop showing this message]"
|
3659 |
+
#~ msgstr "u afisa aceasta pagina"
|
3660 |
|
3661 |
+
#~ msgid "%sTerms of Use for our Affiliate Program%s"
|
3662 |
+
#~ msgstr "%sTermeni si conditii de afiliere%s"
|
|
|
3663 |
|
3664 |
+
#~ msgid "Go to settings"
|
3665 |
+
#~ msgstr "Mergi la setari"
|
|
|
3666 |
|
3667 |
+
#~ msgid "See dashboard"
|
3668 |
+
#~ msgstr "Vezi Dashboard"
|
|
|
3669 |
|
3670 |
+
#, fuzzy
|
3671 |
+
#~ msgid "Squirrly Audit Score"
|
3672 |
+
#~ msgstr "Squirrly article rank"
|
3673 |
|
3674 |
+
#, fuzzy
|
3675 |
+
#~ msgid "Connect to Squirrly.co"
|
3676 |
+
#~ msgstr "Inregistreaza-te la Squirrly.co"
|
3677 |
|
3678 |
+
#, fuzzy
|
3679 |
+
#~ msgid "See all the Squirrly SEO features at: "
|
3680 |
+
#~ msgstr "Ai nevoie de ajutor cu Squirrly SEO?"
|
3681 |
|
3682 |
+
#~ msgid "Go to:"
|
3683 |
+
#~ msgstr "Mergi la:"
|
|
|
3684 |
|
3685 |
+
#~ msgid "support page"
|
3686 |
+
#~ msgstr "pagina suport"
|
|
|
3687 |
|
3688 |
+
#~ msgid "Your E-mail:"
|
3689 |
+
#~ msgstr "Emailul tau:"
|
|
|
3690 |
|
3691 |
+
#~ msgid "Congratulations! Now write a new article with:"
|
3692 |
+
#~ msgstr "Felicitari! Acum scrie un nou articol cu:"
|
|
|
3693 |
|
3694 |
+
#~ msgid "Clear"
|
3695 |
+
#~ msgstr "Alta cautare"
|
|
|
|
|
|
|
3696 |
|
3697 |
+
#~ msgid "Do the research"
|
3698 |
+
#~ msgstr "Trimite >>"
|
|
|
3699 |
|
3700 |
+
#~ msgid "Enter even more keywords."
|
3701 |
+
#~ msgstr "Adauga mai multe cuvinte"
|
|
|
|
|
|
|
3702 |
|
3703 |
+
#~ msgid "Let some keywords for the next time as well!"
|
3704 |
+
#~ msgstr "Mai lasa cuvinte si pentru viitor!"
|
|
|
|
|
|
|
|
|
|
|
|
|
3705 |
|
3706 |
+
#~ msgid "News"
|
3707 |
+
#~ msgstr "News"
|
|
|
3708 |
|
3709 |
+
#, fuzzy
|
3710 |
+
#~ msgid "Squirrly SEO Live Assistant"
|
3711 |
+
#~ msgstr "Asistent SEO Live"
|
3712 |
|
3713 |
+
#~ msgid "Squirrly settings"
|
3714 |
+
#~ msgstr "Setari Squirrly"
|
|
|
3715 |
|
3716 |
+
#~ msgid "Let Squirrly automatically optimize my blog"
|
3717 |
+
#~ msgstr "Lasa Squirrly sa imi optimizeze blogul automat"
|
|
|
|
|
|
|
|
|
|
|
3718 |
|
3719 |
+
#, fuzzy
|
3720 |
+
#~ msgid "Add the <strong>%sXML Sitemap%s</strong> for search engines"
|
3721 |
+
#~ msgstr "Adauga <strong>Harta XML</strong> pentru motoarele de cautare"
|
3722 |
|
3723 |
+
#~ msgid ""
|
3724 |
+
#~ "Add the required METAs for home page (<strong>icon, author, language, dc "
|
3725 |
+
#~ "publisher</strong>, etc.)"
|
3726 |
+
#~ msgstr ""
|
3727 |
+
#~ "Adauga cerintele META in pagina acasa (<strong>icon, author, language, dc "
|
3728 |
+
#~ "publisher</strong>, etc.)"
|
3729 |
|
3730 |
+
#~ msgid ""
|
3731 |
+
#~ "Add the <strong>favicon</strong> and the <strong>icon for Apple devices</"
|
3732 |
+
#~ "strong>."
|
3733 |
+
#~ msgstr ""
|
3734 |
+
#~ "Adauga <strong>favicon</strong> si <strong>icoana pentru dispozitivele "
|
3735 |
+
#~ "Apple</strong>."
|
3736 |
|
3737 |
+
#, fuzzy
|
3738 |
+
#~ msgid "What does Squirrly automatically do for Social Media?"
|
3739 |
+
#~ msgstr "Ce face Squirrly in mod automat pentru SEO?"
|
|
|
3740 |
|
3741 |
+
#, fuzzy
|
3742 |
+
#~ msgid ""
|
3743 |
+
#~ "Add the <strong>Social Open Graph objects</strong> for a good looking "
|
3744 |
+
#~ "share. "
|
3745 |
+
#~ msgstr ""
|
3746 |
+
#~ "Adauga <strong>Facebook meta objects</strong> pentru o afisare mai "
|
3747 |
+
#~ "frumoasa in Facebook"
|
3748 |
|
3749 |
+
#~ msgid "Your twitter account: "
|
3750 |
+
#~ msgstr "Contul tau de twitter:"
|
|
|
3751 |
|
3752 |
+
#, fuzzy
|
3753 |
+
#~ msgid "First page optimization"
|
3754 |
+
#~ msgstr "Optimizare cu Squirrly SEO"
|
|
|
3755 |
|
3756 |
+
#, fuzzy
|
3757 |
+
#~ msgid "Add meta <strong>title</strong> in Home Page"
|
3758 |
+
#~ msgstr "Adauga <strong>titlul</strong> corect in pagina acasa"
|
|
|
3759 |
|
3760 |
+
#, fuzzy
|
3761 |
+
#~ msgid ""
|
3762 |
+
#~ "Add meta <strong>description</strong> and <strong>keywords</strong> in "
|
3763 |
+
#~ "Home Page"
|
3764 |
+
#~ msgstr ""
|
3765 |
+
#~ "Aadauga <strong>descrierea</strong> si <strong>cuvintele cheie</strong> "
|
3766 |
+
#~ "corecte in prima pagina"
|
3767 |
|
|
|
3768 |
#, fuzzy
|
3769 |
+
#~ msgid "You First Page Preview (Title, Description, Keywords)"
|
3770 |
+
#~ msgstr "Optimizare prima pagina (Titlu, Descriere, Cuvinte cheie)"
|
3771 |
|
3772 |
+
#~ msgid "Check with google ..."
|
3773 |
+
#~ msgstr "Verificat cu google ..."
|
|
|
|
|
3774 |
|
3775 |
+
#~ msgid "Squirrly Options"
|
3776 |
+
#~ msgstr "Optiuni Squirrly"
|
|
|
|
|
3777 |
|
3778 |
+
#~ msgid "Let Squirrly warn me if there are errors related to SEO settings"
|
3779 |
+
#~ msgstr "Lasa Squirrly sa ma anunte daca sunt erori SEO in setari"
|
|
|
|
|
3780 |
|
3781 |
+
#~ msgid ""
|
3782 |
+
#~ "Show <strong>\"Enter a keyword\"</strong> bubble when posting a new "
|
3783 |
+
#~ "article."
|
3784 |
+
#~ msgstr ""
|
3785 |
+
#~ "Afiseaza balonul <strong>\"Adauga un keyword\"</strong>cand se posteaza "
|
3786 |
+
#~ "un nou articol."
|
3787 |
|
3788 |
+
#~ msgid ""
|
3789 |
+
#~ "Always show <strong>Keyword Informations</strong> about the selected "
|
3790 |
+
#~ "keyword."
|
3791 |
+
#~ msgstr ""
|
3792 |
+
#~ "Afiseaza <strong>Informatii de cuvint cheie</strong> dupa alegerea "
|
3793 |
+
#~ "cuvantului la postare."
|
3794 |
+
|
3795 |
+
#~ msgid "Google Plus URL:"
|
3796 |
+
#~ msgstr "URL Google Plus:"
|
3797 |
+
|
3798 |
+
#, fuzzy
|
3799 |
+
#~ msgid "Facebook META code (for %sInsights%s ):"
|
3800 |
+
#~ msgstr "Facebook META code (pentru %sInsights%s):"
|
3801 |
+
|
3802 |
+
#, fuzzy
|
3803 |
+
#~ msgid "Search Engines Tools"
|
3804 |
+
#~ msgstr "Pentru motoare de cautare"
|
3805 |
|
3806 |
#~ msgid "Squirrly article rank"
|
3807 |
#~ msgstr "Squirrly article rank"
|
3893 |
#~ msgid "Beginner"
|
3894 |
#~ msgstr "Incepator"
|
3895 |
|
|
|
|
|
|
|
3896 |
#~ msgid "Select Advanced only if you have SEO knowledge."
|
3897 |
#~ msgstr "Alege Avansat doar daca ai cunostinte SEO"
|
3898 |
|
models/{SQ_BlockPostsAnalytics.php → BlockPostsAnalytics.php}
RENAMED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class
|
4 |
|
5 |
public $_column_headers;
|
6 |
public $posts; //save post list for Squirrly call
|
@@ -80,7 +80,7 @@ class Model_SQ_BlockPostsAnalytics extends WP_List_Table {
|
|
80 |
|
81 |
$meta_key = '';
|
82 |
$count_p = 99999;
|
83 |
-
$posts =
|
84 |
if ($posts !== false && !empty($posts)) {
|
85 |
//sort descending
|
86 |
foreach ($posts as $post) {
|
@@ -90,7 +90,6 @@ class Model_SQ_BlockPostsAnalytics extends WP_List_Table {
|
|
90 |
|
91 |
//if rank filter
|
92 |
if (isset($q['rank'])) {
|
93 |
-
|
94 |
if (!isset($post->meta_value->rank) || $q['rank'] <> $post->meta_value->rank) {
|
95 |
continue;
|
96 |
}
|
@@ -139,6 +138,7 @@ class Model_SQ_BlockPostsAnalytics extends WP_List_Table {
|
|
139 |
|
140 |
$query['post__in'] = (array)$post__in;
|
141 |
|
|
|
142 |
wp($query);
|
143 |
return $avail_post_stati;
|
144 |
}
|
@@ -217,7 +217,7 @@ class Model_SQ_BlockPostsAnalytics extends WP_List_Table {
|
|
217 |
'type' => 'type',
|
218 |
'author' => 'author',
|
219 |
);
|
220 |
-
if (
|
221 |
$columns['rank'] = 'rank';
|
222 |
}
|
223 |
|
@@ -297,7 +297,7 @@ class Model_SQ_BlockPostsAnalytics extends WP_List_Table {
|
|
297 |
if (empty($post_type) || is_object_in_taxonomy($post_type, 'post_tag'))
|
298 |
$posts_columns['keywords'] = __('Keywords');
|
299 |
|
300 |
-
$posts_columns['rank'] = sprintf(__('Google.%s Position'),
|
301 |
|
302 |
$posts_columns['traffic'] = '';
|
303 |
$posts_columns['date'] = __('Date');
|
@@ -318,7 +318,7 @@ class Model_SQ_BlockPostsAnalytics extends WP_List_Table {
|
|
318 |
</div>
|
319 |
<?php if ('top' == $which) { ?>
|
320 |
<div class="alignleft actions">
|
321 |
-
<input type="search" id="post-search-input" autofocus name="s" value="<?php echo
|
322 |
<input type="submit" id="search-submit" class="button" onclick="location.href = '?page=sq_posts&s=' + encodeURIComponent(jQuery('#post-search-input').val());" value="<?php echo __('Search Posts') ?>">
|
323 |
<script>
|
324 |
function sq_check_enter(e) {
|
@@ -381,7 +381,7 @@ class Model_SQ_BlockPostsAnalytics extends WP_List_Table {
|
|
381 |
$title = _draft_or_post_title();
|
382 |
$post_type_object = get_post_type_object($post->post_type);
|
383 |
$can_edit_post = current_user_can($post_type_object->cap->edit_post, $post->ID);
|
384 |
-
$json =
|
385 |
foreach ($columns as $key => $column) {
|
386 |
switch ($key) {
|
387 |
case 'title':
|
@@ -425,7 +425,7 @@ class Model_SQ_BlockPostsAnalytics extends WP_List_Table {
|
|
425 |
|
426 |
case 'rank':
|
427 |
$value = '';
|
428 |
-
if(
|
429 |
|
430 |
if (isset($json->rank)) {
|
431 |
if ($json->rank == -2) {
|
@@ -437,9 +437,9 @@ class Model_SQ_BlockPostsAnalytics extends WP_List_Table {
|
|
437 |
} elseif ($json->rank > 0) {
|
438 |
$value = '<strong style="display:block; font-size: 120%; width: 100px; margin: 0 auto; text-align:right;">' . sprintf(__('%s'), $json->rank) . '</strong>' . ((isset($json->country)) ? ' (' . $json->country . ')' : '');
|
439 |
}
|
440 |
-
$value = sprintf('<a id="sq_rank_value' . $post->ID . '" href="%s" style="display:block; width: 120px; margin: 0 auto; text-align:right;">%s</a><span class="sq_rank_column_button_recheck sq_rank_column_button" onclick="sq_recheckRank(' . $post->ID . ')">%s</span>', esc_url(add_query_arg(array('page' => 'sq_posts', 'rank' => $json->rank), 'admin.php')), $value, __('Force recheck', _SQ_PLUGIN_NAME_));
|
441 |
} else {
|
442 |
-
$value = sprintf('<a id="sq_rank_value' . $post->ID . '" href="%s" style="display:block; width: 120px; margin: 0 auto; text-align:right;">%s</a><span class="sq_rank_column_button_recheck sq_rank_column_button" onclick="sq_recheckRank(' . $post->ID . ')">%s</span>', esc_url(add_query_arg(array('page' => 'sq_posts', 'rank' => false), 'admin.php')), __('Not yet verified'), __('Check now', _SQ_PLUGIN_NAME_));
|
443 |
}
|
444 |
}else{
|
445 |
$value = sprintf(__('Enable Ranking in %sAdvanced Settings%s'),'<br /><a href="'.admin_url('admin.php?page=sq_settings').'">','</a>');
|
1 |
<?php
|
2 |
|
3 |
+
class SQ_Models_BlockPostsAnalytics extends WP_List_Table {
|
4 |
|
5 |
public $_column_headers;
|
6 |
public $posts; //save post list for Squirrly call
|
80 |
|
81 |
$meta_key = '';
|
82 |
$count_p = 99999;
|
83 |
+
$posts = SQ_Classes_ObjController::getClass('SQ_Models_Post')->getPostWithKeywords();
|
84 |
if ($posts !== false && !empty($posts)) {
|
85 |
//sort descending
|
86 |
foreach ($posts as $post) {
|
90 |
|
91 |
//if rank filter
|
92 |
if (isset($q['rank'])) {
|
|
|
93 |
if (!isset($post->meta_value->rank) || $q['rank'] <> $post->meta_value->rank) {
|
94 |
continue;
|
95 |
}
|
138 |
|
139 |
$query['post__in'] = (array)$post__in;
|
140 |
|
141 |
+
remove_all_actions('pre_get_posts');
|
142 |
wp($query);
|
143 |
return $avail_post_stati;
|
144 |
}
|
217 |
'type' => 'type',
|
218 |
'author' => 'author',
|
219 |
);
|
220 |
+
if (SQ_Classes_Tools::getOption('sq_google_ranksperhour') > 0) {
|
221 |
$columns['rank'] = 'rank';
|
222 |
}
|
223 |
|
297 |
if (empty($post_type) || is_object_in_taxonomy($post_type, 'post_tag'))
|
298 |
$posts_columns['keywords'] = __('Keywords');
|
299 |
|
300 |
+
$posts_columns['rank'] = sprintf(__('Google.%s Position'), SQ_Classes_Tools::getOption('sq_google_country'));
|
301 |
|
302 |
$posts_columns['traffic'] = '';
|
303 |
$posts_columns['date'] = __('Date');
|
318 |
</div>
|
319 |
<?php if ('top' == $which) { ?>
|
320 |
<div class="alignleft actions">
|
321 |
+
<input type="search" id="post-search-input" autofocus name="s" value="<?php echo SQ_Classes_Tools::getValue('s') ?>" onkeypress="if(sq_check_enter(event)){jQuery('#search-submit').trigger('click')}">
|
322 |
<input type="submit" id="search-submit" class="button" onclick="location.href = '?page=sq_posts&s=' + encodeURIComponent(jQuery('#post-search-input').val());" value="<?php echo __('Search Posts') ?>">
|
323 |
<script>
|
324 |
function sq_check_enter(e) {
|
381 |
$title = _draft_or_post_title();
|
382 |
$post_type_object = get_post_type_object($post->post_type);
|
383 |
$can_edit_post = current_user_can($post_type_object->cap->edit_post, $post->ID);
|
384 |
+
$json = SQ_Classes_ObjController::getClass('SQ_Models_Post')->getKeyword($post->ID);
|
385 |
foreach ($columns as $key => $column) {
|
386 |
switch ($key) {
|
387 |
case 'title':
|
425 |
|
426 |
case 'rank':
|
427 |
$value = '';
|
428 |
+
if(SQ_Classes_Tools::getOption('sq_google_ranksperhour') > 0) {
|
429 |
|
430 |
if (isset($json->rank)) {
|
431 |
if ($json->rank == -2) {
|
437 |
} elseif ($json->rank > 0) {
|
438 |
$value = '<strong style="display:block; font-size: 120%; width: 100px; margin: 0 auto; text-align:right;">' . sprintf(__('%s'), $json->rank) . '</strong>' . ((isset($json->country)) ? ' (' . $json->country . ')' : '');
|
439 |
}
|
440 |
+
$value = sprintf('<a id="sq_rank_value' . $post->ID . '" href="%s" style="display:block; width: 120px; margin: 0 auto; text-align:right;">%s</a><span class="sq_rank_column_button_recheck sq_rank_column_button" onclick="jQuery.sq_recheckRank(' . $post->ID . ')">%s</span>', esc_url(add_query_arg(array('page' => 'sq_posts', 'rank' => $json->rank), 'admin.php')), $value, __('Force recheck', _SQ_PLUGIN_NAME_));
|
441 |
} else {
|
442 |
+
$value = sprintf('<a id="sq_rank_value' . $post->ID . '" href="%s" style="display:block; width: 120px; margin: 0 auto; text-align:right;">%s</a><span class="sq_rank_column_button_recheck sq_rank_column_button" onclick="jQuery.sq_recheckRank(' . $post->ID . ')">%s</span>', esc_url(add_query_arg(array('page' => 'sq_posts', 'rank' => false), 'admin.php')), __('Not yet verified'), __('Check now', _SQ_PLUGIN_NAME_));
|
443 |
}
|
444 |
}else{
|
445 |
$value = sprintf(__('Enable Ranking in %sAdvanced Settings%s'),'<br /><a href="'.admin_url('admin.php?page=sq_settings').'">','</a>');
|
models/BlockSettingsSeo.php
ADDED
@@ -0,0 +1,1026 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SQ_Models_BlockSettingsSeo {
|
4 |
+
|
5 |
+
var $eTypes;
|
6 |
+
var $appleSizes;
|
7 |
+
|
8 |
+
public function __construct() {
|
9 |
+
$this->appleSizes = preg_split('/[,]+/', _SQ_MOBILE_ICON_SIZES);
|
10 |
+
//add_filter('sq_plugins', array($this, 'getAvailablePlugins'), 10, 1);
|
11 |
+
add_filter('sq_themes', array($this, 'getAvailableThemes'), 10, 1);
|
12 |
+
add_filter('sq_importList', array($this, 'importList'));
|
13 |
+
}
|
14 |
+
|
15 |
+
|
16 |
+
public function db_insert($url, $url_hash, $post_id, $seo, $date_time) {
|
17 |
+
global $wpdb;
|
18 |
+
$seo = addslashes($seo);
|
19 |
+
$blog_id = get_current_blog_id();
|
20 |
+
|
21 |
+
$sq_query = "INSERT INTO " . $wpdb->prefix . strtolower(_SQ_DB_) . " (blog_id, URL, url_hash, post_id, seo, date_time)
|
22 |
+
VALUES ('$blog_id','$url','$url_hash','$post_id','$seo','$date_time')
|
23 |
+
ON DUPLICATE KEY
|
24 |
+
UPDATE blog_id = '$blog_id', URL = '$url', url_hash = '$url_hash', post_id = '$post_id', seo = '$seo', date_time = '$date_time'";
|
25 |
+
|
26 |
+
return $wpdb->query($sq_query);
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Check if ecommerce is installed
|
31 |
+
* @return boolean
|
32 |
+
*/
|
33 |
+
public function isEcommerce() {
|
34 |
+
if (isset($this->eTypes)) {
|
35 |
+
return $this->eTypes;
|
36 |
+
}
|
37 |
+
|
38 |
+
|
39 |
+
$this->eTypes = array('product', 'wpsc-product');
|
40 |
+
foreach ($this->eTypes as $key => $type) {
|
41 |
+
if (!in_array($type, get_post_types())) {
|
42 |
+
unset($this->eTypes[$key]);
|
43 |
+
}
|
44 |
+
}
|
45 |
+
|
46 |
+
if (!empty($this->eTypes)) {
|
47 |
+
return $this->eTypes;
|
48 |
+
}
|
49 |
+
|
50 |
+
return false;
|
51 |
+
}
|
52 |
+
|
53 |
+
/**
|
54 |
+
* Check the google code saved at settings
|
55 |
+
*
|
56 |
+
* @return string
|
57 |
+
*/
|
58 |
+
public function checkGoogleWTCode($code) {
|
59 |
+
|
60 |
+
if ($code <> '') {
|
61 |
+
$code = stripslashes($code);
|
62 |
+
if (strpos($code, 'content') !== false) {
|
63 |
+
@preg_match('/content\\s*=\\s*[\"]([^\"]+)[\"]/i', $code, $result);
|
64 |
+
if (isset($result[1]) && !empty($result[1])) $code = $result[1];
|
65 |
+
}
|
66 |
+
if (strpos($code, '"') !== false) {
|
67 |
+
@preg_match('/[\"]([^\"]+)[\"]/i', $code, $result);
|
68 |
+
if (isset($result[1]) && !empty($result[1])) $code = $result[1];
|
69 |
+
}
|
70 |
+
|
71 |
+
if ($code == '') SQ_Classes_Error::setError(__("The code for Google Webmaster Tool is incorrect.", _SQ_PLUGIN_NAME_));
|
72 |
+
}
|
73 |
+
return $code;
|
74 |
+
}
|
75 |
+
|
76 |
+
/**
|
77 |
+
* Check the google code saved at settings
|
78 |
+
*
|
79 |
+
* @return string
|
80 |
+
*/
|
81 |
+
public function checkGoogleAnalyticsCode($code) {
|
82 |
+
//echo $code;
|
83 |
+
if ($code <> '') {
|
84 |
+
$code = stripslashes($code);
|
85 |
+
|
86 |
+
if (strpos($code, 'GoogleAnalyticsObject') !== false) {
|
87 |
+
preg_match('/ga\(\'create\',[^\'"]*[\'"]([^\'"]+)[\'"],/i', $code, $result);
|
88 |
+
if (isset($result[1]) && !empty($result[1])) $code = $result[1];
|
89 |
+
}
|
90 |
+
|
91 |
+
if (strpos($code, '"') !== false) {
|
92 |
+
preg_match('/[\"]([^\"]+)[\"]/i', $code, $result);
|
93 |
+
if (isset($result[1]) && !empty($result[1])) $code = $result[1];
|
94 |
+
}
|
95 |
+
|
96 |
+
if (strpos($code, 'UA-') === false) {
|
97 |
+
$code = '';
|
98 |
+
SQ_Classes_Error::setError(__("The code for Google Analytics is incorrect.", _SQ_PLUGIN_NAME_));
|
99 |
+
}
|
100 |
+
}
|
101 |
+
return trim($code);
|
102 |
+
}
|
103 |
+
|
104 |
+
/**
|
105 |
+
* Check the Facebook code saved at settings
|
106 |
+
*
|
107 |
+
* @return string
|
108 |
+
*/
|
109 |
+
public function checkFavebookAdminCode($code) {
|
110 |
+
$id = '';
|
111 |
+
if ($code <> '') {
|
112 |
+
$code = trim($code);
|
113 |
+
if (strpos($code, '"') !== false) {
|
114 |
+
preg_match('/[\'\"]([^\'\"]+)[\'\"]/i', $code, $result);
|
115 |
+
if (isset($result[1]) && !empty($result[1])) {
|
116 |
+
$id = $result[1];
|
117 |
+
}
|
118 |
+
}
|
119 |
+
|
120 |
+
if (strpos($code, 'facebook.com/') !== false) {
|
121 |
+
preg_match('/facebook.com\/([^\/]+)/i', $code, $result);
|
122 |
+
if (isset($result[1]) && !empty($result[1])) {
|
123 |
+
if (is_string($result[1])) {
|
124 |
+
$response = SQ_Classes_Action::apiCall('sq/seo/facebook-id', array('profile' => $result[1]));
|
125 |
+
if ($response && $json = json_decode($response)) {
|
126 |
+
$id = $json->code;
|
127 |
+
}
|
128 |
+
} elseif (is_numeric($result[1])) {
|
129 |
+
$id = $result[1];
|
130 |
+
}
|
131 |
+
}
|
132 |
+
} else {
|
133 |
+
if (is_string($code)) {
|
134 |
+
$response = SQ_Classes_Action::apiCall('sq/seo/facebook-id', array('profile' => $code));
|
135 |
+
if ($response && $json = json_decode($response)) {
|
136 |
+
$id = $json->code;
|
137 |
+
}
|
138 |
+
} elseif (is_numeric($code)) {
|
139 |
+
$id = $code;
|
140 |
+
}
|
141 |
+
}
|
142 |
+
|
143 |
+
if ($id == '') {
|
144 |
+
SQ_Classes_Error::setError(__("The code for Facebook is incorrect.", _SQ_PLUGIN_NAME_));
|
145 |
+
}
|
146 |
+
}
|
147 |
+
return $id;
|
148 |
+
}
|
149 |
+
|
150 |
+
/**
|
151 |
+
* Check the Pinterest code saved at settings
|
152 |
+
*
|
153 |
+
* @return string
|
154 |
+
*/
|
155 |
+
public function checkPinterestCode($code) {
|
156 |
+
if ($code <> '') {
|
157 |
+
$code = stripslashes($code);
|
158 |
+
|
159 |
+
if (strpos($code, 'content') !== false) {
|
160 |
+
preg_match('/content\\s*=\\s*[\"]([^\"]+)[\"]/i', $code, $result);
|
161 |
+
if (isset($result[1]) && !empty($result[1])) $code = $result[1];
|
162 |
+
}
|
163 |
+
|
164 |
+
if (strpos($code, '"') !== false) {
|
165 |
+
preg_match('/[\"]([^\"]+)[\"]/i', $code, $result);
|
166 |
+
if (isset($result[1]) && !empty($result[1])) $code = $result[1];
|
167 |
+
}
|
168 |
+
|
169 |
+
if ($code == '') SQ_Classes_Error::setError(__("The code for Pinterest is incorrect.", _SQ_PLUGIN_NAME_));
|
170 |
+
}
|
171 |
+
return $code;
|
172 |
+
}
|
173 |
+
|
174 |
+
/**
|
175 |
+
* Check the Bing code saved at settings
|
176 |
+
*
|
177 |
+
* @return string
|
178 |
+
*/
|
179 |
+
public function checkBingWTCode($code) {
|
180 |
+
if ($code <> '') {
|
181 |
+
$code = stripslashes($code);
|
182 |
+
|
183 |
+
|
184 |
+
if (strpos($code, 'content') !== false) {
|
185 |
+
preg_match('/content\\s*=\\s*[\"]([^\"]+)[\"]/i', $code, $result);
|
186 |
+
if (isset($result[1]) && !empty($result[1])) $code = $result[1];
|
187 |
+
}
|
188 |
+
|
189 |
+
if (strpos($code, '"') !== false) {
|
190 |
+
preg_match('/[\"]([^\"]+)[\"]/i', $code, $result);
|
191 |
+
if (isset($result[1]) && !empty($result[1])) $code = $result[1];
|
192 |
+
}
|
193 |
+
|
194 |
+
if ($code == '') SQ_Classes_Error::setError(__("The code for Bing is incorrect.", _SQ_PLUGIN_NAME_));
|
195 |
+
}
|
196 |
+
return $code;
|
197 |
+
}
|
198 |
+
|
199 |
+
/**
|
200 |
+
* Check the twitter account
|
201 |
+
*
|
202 |
+
* @return string
|
203 |
+
*/
|
204 |
+
public function checkTwitterAccount($account) {
|
205 |
+
if ($account <> '' && strpos($account, 'twitter.') === false) {
|
206 |
+
$account = 'https://twitter.com/' . $account;
|
207 |
+
}
|
208 |
+
|
209 |
+
return $account;
|
210 |
+
}
|
211 |
+
|
212 |
+
/**
|
213 |
+
* Check the twitter account
|
214 |
+
*
|
215 |
+
* @return string
|
216 |
+
*/
|
217 |
+
public function checkTwitterAccountName($account) {
|
218 |
+
if ($account <> '' && strpos($account, 'twitter.') !== false) {
|
219 |
+
$account = parse_url($account, PHP_URL_PATH);
|
220 |
+
}
|
221 |
+
|
222 |
+
return $account;
|
223 |
+
}
|
224 |
+
|
225 |
+
/**
|
226 |
+
* Check the google + account
|
227 |
+
*
|
228 |
+
* @return string
|
229 |
+
*/
|
230 |
+
public function checkGoogleAccount($account) {
|
231 |
+
if ($account <> '' && strpos($account, 'google.') === false) {
|
232 |
+
$account = 'https://plus.google.com/' . $account;
|
233 |
+
}
|
234 |
+
return str_replace(" ", "+", $account);
|
235 |
+
}
|
236 |
+
|
237 |
+
/**
|
238 |
+
* Check the google + account
|
239 |
+
*
|
240 |
+
* @return string
|
241 |
+
*/
|
242 |
+
public function checkLinkeinAccount($account) {
|
243 |
+
if ($account <> '' && strpos($account, 'linkedin.') === false) {
|
244 |
+
$account = 'https://www.linkedin.com/in/' . $account;
|
245 |
+
}
|
246 |
+
return $account;
|
247 |
+
}
|
248 |
+
|
249 |
+
/**
|
250 |
+
* Check the facebook account
|
251 |
+
*
|
252 |
+
* @return string
|
253 |
+
*/
|
254 |
+
public function checkFacebookAccount($account) {
|
255 |
+
if ($account <> '' && strpos($account, 'facebook.com') === false) {
|
256 |
+
$account = 'https://www.facebook.com/' . $account;
|
257 |
+
}
|
258 |
+
return $account;
|
259 |
+
}
|
260 |
+
|
261 |
+
public function checkPinterestAccount($account) {
|
262 |
+
if ($account <> '' && strpos($account, 'pinterest.com') === false) {
|
263 |
+
$account = 'https://www.pinterest.com/' . $account;
|
264 |
+
}
|
265 |
+
return $account;
|
266 |
+
}
|
267 |
+
|
268 |
+
public function checkInstagramAccount($account) {
|
269 |
+
if ($account <> '' && strpos($account, 'instagram.com') === false) {
|
270 |
+
$account = 'https://www.instagram.com/' . $account;
|
271 |
+
}
|
272 |
+
return $account;
|
273 |
+
}
|
274 |
+
|
275 |
+
public function checkMySpaceAccount($account) {
|
276 |
+
if ($account <> '' && strpos($account, 'myspace.com') === false) {
|
277 |
+
$account = 'https://myspace.com/' . $account;
|
278 |
+
}
|
279 |
+
return $account;
|
280 |
+
}
|
281 |
+
|
282 |
+
public function checkYoutubeAccount($account) {
|
283 |
+
if ($account <> '' && strpos($account, 'youtube.com') === false) {
|
284 |
+
if (strpos($account, 'user/') === false && strpos($account, 'channel/') === false) {
|
285 |
+
$account = 'https://www.youtube.com/channel/' . $account;
|
286 |
+
}
|
287 |
+
}
|
288 |
+
return $account;
|
289 |
+
}
|
290 |
+
|
291 |
+
/**
|
292 |
+
* Add the image to the root path
|
293 |
+
*
|
294 |
+
* @param string $file
|
295 |
+
* @param string $path
|
296 |
+
* @return array [name (the name of the file), favicon (the path of the ico), message (the returned message)]
|
297 |
+
*
|
298 |
+
*/
|
299 |
+
public function addFavicon($file, $path = ABSPATH) {
|
300 |
+
|
301 |
+
/* get the file extension */
|
302 |
+
$file_name = explode('.', $file['name']);
|
303 |
+
$file_type = strtolower($file_name[count($file_name) - 1]);
|
304 |
+
|
305 |
+
$out = array();
|
306 |
+
$out['tmp'] = _SQ_CACHE_DIR_ . strtolower(md5($file['name']) . '_tmp.' . $file_type);
|
307 |
+
$out['favicon'] = _SQ_CACHE_DIR_ . strtolower(md5($file['name']) . '.' . $file_type);
|
308 |
+
foreach ($this->appleSizes as $size) {
|
309 |
+
$out['favicon' . $size] = _SQ_CACHE_DIR_ . strtolower(md5($file['name']) . '.' . $file_type . $size);
|
310 |
+
}
|
311 |
+
|
312 |
+
/* if the file has a name */
|
313 |
+
if (!empty($file['name'])) {
|
314 |
+
/* Check the extension */
|
315 |
+
$file_type = strtolower($file_type);
|
316 |
+
$files = array('ico', 'jpeg', 'jpg', 'gif', 'png');
|
317 |
+
$key = in_array($file_type, $files);
|
318 |
+
|
319 |
+
if (!$key) {
|
320 |
+
SQ_Classes_Error::setError(__("File type error: Only ICO, JPEG, JPG, GIF or PNG files are allowed.", _SQ_PLUGIN_NAME_));
|
321 |
+
return;
|
322 |
+
}
|
323 |
+
|
324 |
+
/* Check for error messages */
|
325 |
+
if (!$this->checkFunctions()) {
|
326 |
+
SQ_Classes_Error::setError(__("GD error: The GD library must be installed on your server.", _SQ_PLUGIN_NAME_));
|
327 |
+
return;
|
328 |
+
} else {
|
329 |
+
/* Delete the previous file if exists */
|
330 |
+
if (is_file($out['favicon'])) {
|
331 |
+
if (!unlink($out['favicon'])) {
|
332 |
+
SQ_Classes_Error::setError(__("Delete error: Could not delete the old favicon.", _SQ_PLUGIN_NAME_));
|
333 |
+
return;
|
334 |
+
}
|
335 |
+
}
|
336 |
+
|
337 |
+
/* Upload the file */
|
338 |
+
if (!move_uploaded_file($file['tmp_name'], $out['tmp'])) {
|
339 |
+
SQ_Classes_Error::setError(__("Upload error: Could not upload the favicon.", _SQ_PLUGIN_NAME_));
|
340 |
+
return;
|
341 |
+
}
|
342 |
+
|
343 |
+
/* Change the permision */
|
344 |
+
if (!chmod($out['tmp'], 0755)) {
|
345 |
+
SQ_Classes_Error::setError(__("Permission error: Could not change the favicon permissions.", _SQ_PLUGIN_NAME_));
|
346 |
+
return;
|
347 |
+
}
|
348 |
+
|
349 |
+
if ($file_type <> 'ico') {
|
350 |
+
/* Save the file */
|
351 |
+
if ($out['tmp']) {
|
352 |
+
$ico = SQ_Classes_ObjController::getClass('SQ_Models_Ico');
|
353 |
+
$ico->set_image($out['tmp'], array(32, 32));
|
354 |
+
if ($ico->save_ico($out['favicon'])) {
|
355 |
+
if (file_exists($path . "/" . 'favicon.ico')) {
|
356 |
+
$ico->remove_ico($path . "/" . 'favicon.ico');
|
357 |
+
}
|
358 |
+
if (!is_multisite()) {
|
359 |
+
$ico->save_ico($path . "/" . 'favicon.ico');
|
360 |
+
}
|
361 |
+
}
|
362 |
+
foreach ($this->appleSizes as $size) {
|
363 |
+
$ico->set_image($out['tmp'], array($size, $size));
|
364 |
+
$ico->save_ico($out['favicon' . $size]);
|
365 |
+
}
|
366 |
+
} else {
|
367 |
+
SQ_Classes_Error::setError(__("ICO Error: Could not create the ICO from file. Try with another file type.", _SQ_PLUGIN_NAME_));
|
368 |
+
}
|
369 |
+
} else {
|
370 |
+
copy($out['tmp'], $out['favicon']);
|
371 |
+
foreach ($this->appleSizes as $size) {
|
372 |
+
copy($out['tmp'], $out['favicon' . $size]);
|
373 |
+
}
|
374 |
+
|
375 |
+
unset($out['tmp']);
|
376 |
+
if (file_exists($path . "/" . 'favicon.ico')) {
|
377 |
+
$ico = SQ_Classes_ObjController::getClass('SQ_Models_Ico');
|
378 |
+
$ico->remove_ico($path . "/" . 'favicon.ico');
|
379 |
+
}
|
380 |
+
if (!is_multisite()) {
|
381 |
+
$ico = SQ_Classes_ObjController::getClass('SQ_Models_Ico');
|
382 |
+
$ico->save_ico($path . "/" . 'favicon.ico');
|
383 |
+
}
|
384 |
+
}
|
385 |
+
unset($out['tmp']);
|
386 |
+
$out['message'] = __("The favicon has been updated.", _SQ_PLUGIN_NAME_);
|
387 |
+
|
388 |
+
return $out;
|
389 |
+
}
|
390 |
+
}
|
391 |
+
}
|
392 |
+
|
393 |
+
private function checkFunctions() {
|
394 |
+
$required_functions = array('getimagesize', 'imagecreatefromstring', 'imagecreatetruecolor', 'imagecolortransparent', 'imagecolorallocatealpha', 'imagealphablending', 'imagesavealpha', 'imagesx', 'imagesy', 'imagecopyresampled',);
|
395 |
+
|
396 |
+
foreach ($required_functions as $function) {
|
397 |
+
if (!function_exists($function)) {
|
398 |
+
SQ_Classes_Error::setError("The PHP_ICO class was unable to find the $function function, which is part of the GD library. Ensure that the system has the GD library installed and that PHP has access to it through a PHP interface, such as PHP's GD module. Since this function was not found, the library will be unable to create ICO files.");
|
399 |
+
return false;
|
400 |
+
}
|
401 |
+
}
|
402 |
+
|
403 |
+
return true;
|
404 |
+
}
|
405 |
+
|
406 |
+
|
407 |
+
public function importList() {
|
408 |
+
if ($list = SQ_Classes_Tools::getOption('importList')) {
|
409 |
+
return $list;
|
410 |
+
}
|
411 |
+
|
412 |
+
$themes = array(
|
413 |
+
'builder' => array(
|
414 |
+
'title' => '_builder_seo_title',
|
415 |
+
'descriptionn' => '_builder_seo_description',
|
416 |
+
'keywords' => '_builder_seo_keywords',
|
417 |
+
),
|
418 |
+
'catalyst' => array(
|
419 |
+
'title' => '_catalyst_title',
|
420 |
+
'descriptionn' => '_catalyst_description',
|
421 |
+
'keywords' => '_catalyst_keywords',
|
422 |
+
'noindex' => '_catalyst_noindex',
|
423 |
+
'nofollow' => '_catalyst_nofollow',
|
424 |
+
'noarchive' => '_catalyst_noarchive',
|
425 |
+
),
|
426 |
+
'frugal' => array(
|
427 |
+
'title' => '_title',
|
428 |
+
'descriptionn' => '_description',
|
429 |
+
'keywords' => '_keywords',
|
430 |
+
'noindex' => '_noindex',
|
431 |
+
'nofollow' => '_nofollow',
|
432 |
+
),
|
433 |
+
'genesis' => array(
|
434 |
+
'title' => '_genesis_title',
|
435 |
+
'descriptionn' => '_genesis_description',
|
436 |
+
'keywords' => '_genesis_keywords',
|
437 |
+
'noindex' => '_genesis_noindex',
|
438 |
+
'nofollow' => '_genesis_nofollow',
|
439 |
+
'noarchive' => '_genesis_noarchive',
|
440 |
+
'canonical' => '_genesis_canonical_uri',
|
441 |
+
'redirect' => 'redirect',
|
442 |
+
),
|
443 |
+
'headway' => array(
|
444 |
+
'title' => '_title',
|
445 |
+
'descriptionn' => '_description',
|
446 |
+
'keywords' => '_keywords',
|
447 |
+
),
|
448 |
+
'hybrid' => array(
|
449 |
+
'title' => 'Title',
|
450 |
+
'descriptionn' => 'Description',
|
451 |
+
'keywords' => 'Keywords',
|
452 |
+
),
|
453 |
+
'thesis' => array(
|
454 |
+
'title' => 'thesis_title',
|
455 |
+
'description' => 'thesis_description',
|
456 |
+
'keywords' => 'thesis_keywords',
|
457 |
+
'redirect' => 'thesis_redirect',
|
458 |
+
),
|
459 |
+
'wooframework' => array(
|
460 |
+
'title' => 'seo_title',
|
461 |
+
'description' => 'seo_description',
|
462 |
+
'keywords' => 'seo_keywords',
|
463 |
+
),
|
464 |
+
);
|
465 |
+
|
466 |
+
$plugins = array(
|
467 |
+
'add-meta-tags' => array(
|
468 |
+
'title' => '_amt_title',
|
469 |
+
'description' => '_amt_description',
|
470 |
+
'keywords' => '_amt_keywords',
|
471 |
+
),
|
472 |
+
'gregs-high-performance-seo' => array(
|
473 |
+
'title' => '_ghpseo_secondary_title',
|
474 |
+
'description' => '_ghpseo_alternative_description',
|
475 |
+
'keywords' => '_ghpseo_keywords',
|
476 |
+
),
|
477 |
+
'headspace2' => array(
|
478 |
+
'title' => '_headspace_page_title',
|
479 |
+
'description' => '_headspace_description',
|
480 |
+
'keywords' => '_headspace_keywords',
|
481 |
+
),
|
482 |
+
'wpmu-dev-seo' => array(
|
483 |
+
'title' => '_wds_title',
|
484 |
+
'description' => '_wds_metadesc',
|
485 |
+
'keywords' => '_wds_keywords',
|
486 |
+
'noindex' => '_wds_meta-robots-noindex',
|
487 |
+
'nofollow' => '_wds_meta-robots-nofollow',
|
488 |
+
'robots' => '_wds_meta-robots-adv',
|
489 |
+
'canonical' => '_wds_canonical',
|
490 |
+
'redirect' => '_wds_redirect',
|
491 |
+
),
|
492 |
+
'jetpack' => array(
|
493 |
+
'description' => 'advanced_seo_description',
|
494 |
+
),
|
495 |
+
'platinum-seo-pack' => array(
|
496 |
+
'title' => 'title',
|
497 |
+
'description' => 'description',
|
498 |
+
'keywords' => 'keywords',
|
499 |
+
),
|
500 |
+
'seo-pressor' => array(
|
501 |
+
'title' => '_seopressor_meta_title',
|
502 |
+
'description' => '_seopressor_meta_description',
|
503 |
+
),
|
504 |
+
'seo-title-tag' => array(
|
505 |
+
'Custom Doctitle' => 'title_tag',
|
506 |
+
'META Description' => 'meta_description',
|
507 |
+
),
|
508 |
+
'seo-ultimate' => array(
|
509 |
+
'title' => '_su_title',
|
510 |
+
'description' => '_su_description',
|
511 |
+
'keywords' => '_su_keywords',
|
512 |
+
'noindex' => '_su_meta_robots_noindex',
|
513 |
+
'nofollow' => '_su_meta_robots_nofollow',
|
514 |
+
),
|
515 |
+
'wordpress-seo' => array(
|
516 |
+
'title' => '_yoast_wpseo_title',
|
517 |
+
'description' => '_yoast_wpseo_metadesc',
|
518 |
+
'keywords' => '_yoast_wpseo_focuskw',
|
519 |
+
'noindex' => '_yoast_wpseo_meta-robots-noindex',
|
520 |
+
'nofollow' => '_yoast_wpseo_meta-robots-nofollow',
|
521 |
+
'robots' => '_yoast_wpseo_meta-robots-adv',
|
522 |
+
'canonical' => '_yoast_wpseo_canonical',
|
523 |
+
'redirect' => '_yoast_wpseo_redirect',
|
524 |
+
'cornerstone' => 'yst_is_cornerstone',
|
525 |
+
'og_title' => '_yoast_wpseo_opengraph-title',
|
526 |
+
'og_description' => '_yoast_wpseo_opengraph-description',
|
527 |
+
'og_media' => '_yoast_wpseo_opengraph-image',
|
528 |
+
'tw_title' => '_yoast_wpseo_twitter-title',
|
529 |
+
'tw_description' => '_yoast_wpseo_twitter-description',
|
530 |
+
'tw_media' => '_yoast_wpseo_twitter-image',
|
531 |
+
),
|
532 |
+
'all-in-one-seo-pack' => array(
|
533 |
+
'title' => '_aioseop_title',
|
534 |
+
'description' => '_aioseop_description',
|
535 |
+
'keywords' => '_aioseop_keywords',
|
536 |
+
'noindex' => '_aioseop_noindex',
|
537 |
+
'nofollow' => '_aioseop_nofollow',
|
538 |
+
'canonical' => '_aioseop_custom_link',
|
539 |
+
),
|
540 |
+
'squirrly-seo' => array(
|
541 |
+
'title' => '_sq_fp_title',
|
542 |
+
'description' => '_sq_fp_description',
|
543 |
+
'keywords' => '_sq_fp_keywords',
|
544 |
+
'canonical' => '_sq_canonical',
|
545 |
+
),
|
546 |
+
'quickseo-by-squirrly' => array(),
|
547 |
+
'premium-seo-pack' => array(),
|
548 |
+
);
|
549 |
+
$themes = apply_filters('sq_themes', $themes);
|
550 |
+
$plugins = apply_filters('sq_plugins', $plugins);
|
551 |
+
|
552 |
+
$list = array_merge((array)$plugins, (array)$themes);
|
553 |
+
return $list;
|
554 |
+
}
|
555 |
+
|
556 |
+
/**
|
557 |
+
* Get the actual name of the plugin/theme
|
558 |
+
* @param $path
|
559 |
+
* @return string
|
560 |
+
*/
|
561 |
+
public function getName($path) {
|
562 |
+
switch ($path) {
|
563 |
+
case 'wpmu-dev-seo':
|
564 |
+
return 'Infinite SEO';
|
565 |
+
case 'wordpress-seo':
|
566 |
+
return 'Yoast SEO';
|
567 |
+
case 'squirrly-seo':
|
568 |
+
return 'Squirrly SEO version < 8.2';
|
569 |
+
default:
|
570 |
+
return ucwords(str_replace('-', ' ', $path));
|
571 |
+
}
|
572 |
+
}
|
573 |
+
|
574 |
+
|
575 |
+
/**
|
576 |
+
* Rename all the plugin names with a hash
|
577 |
+
*/
|
578 |
+
public function getAvailablePlugins($plugins) {
|
579 |
+
$found = array();
|
580 |
+
|
581 |
+
$all_plugins = array_keys(get_plugins());
|
582 |
+
if (is_multisite()) {
|
583 |
+
$all_plugins = array_merge($all_plugins, array_keys(get_mu_plugins()));
|
584 |
+
}
|
585 |
+
foreach ($all_plugins as $plugin) {
|
586 |
+
if (strpos($plugin, '/') !== false) {
|
587 |
+
$plugin = substr($plugin, 0, strpos($plugin, '/'));
|
588 |
+
}
|
589 |
+
if (isset($plugins[$plugin])) {
|
590 |
+
$found[$plugin] = $plugins[$plugin];
|
591 |
+
}
|
592 |
+
}
|
593 |
+
return $found;
|
594 |
+
}
|
595 |
+
|
596 |
+
/**
|
597 |
+
* Rename all the themes name with a hash
|
598 |
+
*/
|
599 |
+
public function getAvailableThemes($themes) {
|
600 |
+
$found = array();
|
601 |
+
|
602 |
+
$all_themes = search_theme_directories();
|
603 |
+
|
604 |
+
foreach ($all_themes as $theme => $value) {
|
605 |
+
if (isset($themes[$theme])) {
|
606 |
+
$found[] = $themes[$theme];
|
607 |
+
}
|
608 |
+
}
|
609 |
+
|
610 |
+
return $found;
|
611 |
+
}
|
612 |
+
|
613 |
+
/**
|
614 |
+
* @param $platform
|
615 |
+
* @return boolean
|
616 |
+
*/
|
617 |
+
public function importDBSettings($platform) {
|
618 |
+
$imported = false;
|
619 |
+
$platforms = apply_filters('sq_importList', false);
|
620 |
+
if ($platform <> '' && isset($platforms[$platform])) {
|
621 |
+
|
622 |
+
if ($platform == 'wordpress-seo') {
|
623 |
+
|
624 |
+
if ($yoast_socials = get_option('wpseo_social')) {
|
625 |
+
$socials = SQ_Classes_Tools::getOption('socials');
|
626 |
+
$codes = SQ_Classes_Tools::getOption('codes');
|
627 |
+
foreach ($yoast_socials as $key => $yoast_social) {
|
628 |
+
if ($yoast_social <> '' && isset($socials[$key])) {
|
629 |
+
$socials[$key] = $yoast_social;
|
630 |
+
}
|
631 |
+
}
|
632 |
+
if (!empty($socials)) {
|
633 |
+
if (isset($yoast_socials['plus-publisher']) && $yoast_socials['plus-publisher'] <> '') {
|
634 |
+
$socials['plus_publisher'] = $yoast_socials['plus-publisher'];
|
635 |
+
}
|
636 |
+
if (isset($yoast_socials['pinterestverify']) && $yoast_socials['plus-publisher'] <> '') {
|
637 |
+
$codes['pinterest_verify'] = $yoast_socials['pinterestverify'];
|
638 |
+
}
|
639 |
+
SQ_Classes_Tools::saveOptions('socials', $socials);
|
640 |
+
SQ_Classes_Tools::saveOptions('codes', $codes);
|
641 |
+
$imported = true;
|
642 |
+
}
|
643 |
+
}
|
644 |
+
}
|
645 |
+
|
646 |
+
if ($platform == 'all-in-one-seo-pack') {
|
647 |
+
if ($options = get_option('aioseop_options')) {
|
648 |
+
$socials = SQ_Classes_Tools::getOption('socials');
|
649 |
+
$codes = SQ_Classes_Tools::getOption('codes');
|
650 |
+
|
651 |
+
if (isset($options['aiosp_google_publisher']) && $options['aiosp_google_publisher'] <> '') $socials['plus_publisher'] = $options['aiosp_google_publisher'];
|
652 |
+
|
653 |
+
SQ_Classes_Tools::saveOptions('socials', $socials);
|
654 |
+
|
655 |
+
if (isset($options['aiosp_google_verify']) && $options['aiosp_google_verify'] <> '') $codes['google_wt'] = $options['aiosp_google_verify'];
|
656 |
+
if (isset($options['aiosp_bing_verify']) && $options['aiosp_bing_verify'] <> '') $codes['bing_wt'] = $options['aiosp_bing_verify'];
|
657 |
+
if (isset($options['aiosp_pinterest_verify']) && $options['aiosp_pinterest_verify'] <> '') $codes['pinterest_verify'] = $options['aiosp_pinterest_verify'];
|
658 |
+
if (isset($options['aiosp_google_analytics_id']) && $options['aiosp_google_analytics_id'] <> '') $codes['google_analytics'] = $options['aiosp_google_analytics_id'];
|
659 |
+
|
660 |
+
SQ_Classes_Tools::saveOptions('codes', $codes);
|
661 |
+
|
662 |
+
$imported = true;
|
663 |
+
}
|
664 |
+
}
|
665 |
+
|
666 |
+
if ($platform == 'squirrly-seo') {
|
667 |
+
if ($options = json_decode(get_option('sq_options'), true)) {
|
668 |
+
$socials = SQ_Classes_Tools::getOption('socials');
|
669 |
+
$codes = SQ_Classes_Tools::getOption('codes');
|
670 |
+
$jsonld = SQ_Classes_Tools::getOption('sq_jsonld');
|
671 |
+
|
672 |
+
if (isset($options['sq_facebook_insights']) && $options['sq_facebook_insights'] <> '') $socials['fb_admins'] = array(array('id' => $options['sq_facebook_insights']));
|
673 |
+
if (isset($options['sq_facebook_account']) && $options['sq_facebook_account'] <> '') $socials['facebook_site'] = $options['sq_facebook_account'];
|
674 |
+
if (isset($options['sq_twitter_account']) && $options['sq_twitter_account'] <> '') $socials['twitter_site'] = $options['sq_twitter_account'];
|
675 |
+
if (isset($options['sq_twitter_account']) && $options['sq_twitter_account'] <> '') $socials['twitter'] = $options['sq_twitter_account'];
|
676 |
+
if (isset($options['sq_instagram_account']) && $options['sq_instagram_account'] <> '') $socials['instagram_url'] = $options['sq_instagram_account'];
|
677 |
+
if (isset($options['sq_linkedin_account']) && $options['sq_linkedin_account'] <> '') $socials['linkedin_url'] = $options['sq_linkedin_account'];
|
678 |
+
if (isset($options['sq_pinterest_account']) && $options['sq_pinterest_account'] <> '') $socials['pinterest_url'] = $options['sq_pinterest_account'];
|
679 |
+
if (isset($options['sq_google_plus']) && $options['sq_google_plus'] <> '') $socials['google_plus_url'] = $options['sq_google_plus'];
|
680 |
+
if (isset($options['sq_auto_twittersize']) && $options['sq_auto_twittersize'] <> '') $socials['twitter_card_type'] = ($options['sq_auto_twittersize'] == 0) ? 'summary' : 'summary_large_image';
|
681 |
+
|
682 |
+
SQ_Classes_Tools::saveOptions('socials', $socials);
|
683 |
+
|
684 |
+
if (isset($options['sq_google_wt']) && $options['sq_google_wt'] <> '') $codes['google_wt'] = $options['sq_google_wt'];
|
685 |
+
if (isset($options['sq_google_analytics']) && $options['sq_google_analytics'] <> '') $codes['google_analytics'] = $options['sq_google_analytics'];
|
686 |
+
if (isset($options['sq_facebook_analytics']) && $options['sq_facebook_analytics'] <> '') $codes['facebook_pixel'] = $options['sq_facebook_analytics'];
|
687 |
+
if (isset($options['sq_bing_wt']) && $options['sq_bing_wt'] <> '') $codes['bing_wt'] = $options['sq_bing_wt'];
|
688 |
+
if (isset($options['sq_pinterest']) && $options['sq_pinterest'] <> '') $codes['pinterest_verify'] = $options['sq_pinterest'];
|
689 |
+
if (isset($options['sq_alexa']) && $options['sq_alexa'] <> '') $codes['alexa_verify'] = $options['sq_alexa'];
|
690 |
+
|
691 |
+
SQ_Classes_Tools::saveOptions('codes', $codes);
|
692 |
+
|
693 |
+
if (isset($options['sq_jsonld_type']) && $options['sq_jsonld_type'] <> '') SQ_Classes_Tools::saveOptions('sq_jsonld_type', $options['sq_jsonld_type']);
|
694 |
+
if (isset($options['sq_jsonld_type']) && $options['sq_jsonld_type'] <> '') $jsonld[$options['sq_jsonld_type']] = $options['sq_jsonld'][$options['sq_jsonld_type']];
|
695 |
+
|
696 |
+
SQ_Classes_Tools::saveOptions('sq_jsonld', $jsonld);
|
697 |
+
|
698 |
+
$imported = true;
|
699 |
+
}
|
700 |
+
}
|
701 |
+
|
702 |
+
if ($platform == 'quickseo-by-squirrly') {
|
703 |
+
if ($options = json_decode(get_option('_qss_options'), true)) {
|
704 |
+
$socials = $options['socials'];
|
705 |
+
$codes = $options['codes'];
|
706 |
+
$jsonld = $options['qss_jsonld'];
|
707 |
+
|
708 |
+
SQ_Classes_Tools::saveOptions('socials', $socials);
|
709 |
+
SQ_Classes_Tools::saveOptions('codes', $codes);
|
710 |
+
SQ_Classes_Tools::saveOptions('sq_jsonld', $jsonld);
|
711 |
+
|
712 |
+
$imported = true;
|
713 |
+
}
|
714 |
+
}
|
715 |
+
|
716 |
+
if ($platform == 'premium-seo-pack') {
|
717 |
+
if ($options = json_decode(get_option('_psp_options'), true)) {
|
718 |
+
$socials = $options['socials'];
|
719 |
+
$codes = $options['codes'];
|
720 |
+
$jsonld = $options['psp_jsonld'];
|
721 |
+
|
722 |
+
SQ_Classes_Tools::saveOptions('socials', $socials);
|
723 |
+
SQ_Classes_Tools::saveOptions('codes', $codes);
|
724 |
+
SQ_Classes_Tools::saveOptions('sq_jsonld', $jsonld);
|
725 |
+
|
726 |
+
$imported = true;
|
727 |
+
}
|
728 |
+
}
|
729 |
+
}
|
730 |
+
|
731 |
+
return $imported;
|
732 |
+
}
|
733 |
+
|
734 |
+
public function importDBSeo($platform) {
|
735 |
+
global $wpdb;
|
736 |
+
|
737 |
+
$platforms = apply_filters('sq_importList', false);
|
738 |
+
|
739 |
+
if ($platform <> '' && isset($platforms[$platform])) {
|
740 |
+
$meta_keys = $platforms[$platform];
|
741 |
+
$metas = array();
|
742 |
+
|
743 |
+
if (!empty($meta_keys)) {
|
744 |
+
$query = "SELECT * FROM " . $wpdb->postmeta . " WHERE meta_key IN ('" . join("','", array_values($meta_keys)) . "');";
|
745 |
+
$meta_keys = array_flip($meta_keys);
|
746 |
+
|
747 |
+
if ($rows = $wpdb->get_results($query, OBJECT)) {
|
748 |
+
foreach ($rows as $row) {
|
749 |
+
|
750 |
+
if (isset($meta_keys[$row->meta_key]) && $row->meta_value <> '') {
|
751 |
+
$metas[md5($row->post_id)]['post_id'] = $row->post_id;
|
752 |
+
$metas[md5($row->post_id)]['url'] = get_permalink($row->post_id);
|
753 |
+
|
754 |
+
$value = $row->meta_value;
|
755 |
+
if (function_exists('mb_detect_encoding') && function_exists('iconv')) {
|
756 |
+
if ($encoding = mb_detect_encoding($value)) {
|
757 |
+
SQ_Classes_Tools::dump($encoding);
|
758 |
+
if ($encoding <> 'UTF-8') {
|
759 |
+
$value = iconv($encoding, 'UTF-8', $value);
|
760 |
+
}
|
761 |
+
}
|
762 |
+
}
|
763 |
+
$metas[md5($row->post_id)][$meta_keys[$row->meta_key]] = stripslashes($value);
|
764 |
+
}
|
765 |
+
}
|
766 |
+
}
|
767 |
+
|
768 |
+
if ($platform == 'wordpress-seo') {
|
769 |
+
//get taxonomies
|
770 |
+
if ($taxonomies = get_option('wpseo_taxonomy_meta')) {
|
771 |
+
if (!empty($taxonomies)) {
|
772 |
+
foreach ($taxonomies as $taxonomie => $terms) {
|
773 |
+
if (!empty($terms)) {
|
774 |
+
if ($taxonomie <> 'category') {
|
775 |
+
$taxonomie = 'tax-' . $taxonomie;
|
776 |
+
}
|
777 |
+
foreach ($terms as $term_id => $taxmetas) {
|
778 |
+
if (!empty($taxmetas)) {
|
779 |
+
if (!is_wp_error(get_term_link($term_id))) {
|
780 |
+
$metas[md5($taxonomie . $term_id)]['url'] = get_term_link($term_id);
|
781 |
+
foreach ($taxmetas as $meta_key => $meta_value) {
|
782 |
+
if ($meta_key == 'wpseo_desc') {
|
783 |
+
$meta_key = '_yoast_wpseo_metadesc';
|
784 |
+
} else {
|
785 |
+
$meta_key = '_yoast_' . $meta_key;
|
786 |
+
}
|
787 |
+
|
788 |
+
if (isset($meta_keys[$meta_key])) {
|
789 |
+
$metas[md5($taxonomie . $term_id)][$meta_keys[$meta_key]] = stripslashes($meta_value);
|
790 |
+
}
|
791 |
+
}
|
792 |
+
}
|
793 |
+
}
|
794 |
+
}
|
795 |
+
}
|
796 |
+
}
|
797 |
+
}
|
798 |
+
}
|
799 |
+
|
800 |
+
//get all patterns from Yoast
|
801 |
+
if ($yoast_patterns = get_option('wpseo_titles')) {
|
802 |
+
if (!empty($yoast_patterns)) {
|
803 |
+
$patterns = SQ_Classes_Tools::getOption('patterns');
|
804 |
+
foreach ($patterns as $path => &$values) {
|
805 |
+
if ($path == 'profile') {
|
806 |
+
$path = 'author';
|
807 |
+
}
|
808 |
+
if (isset($yoast_patterns['separator']) && $yoast_patterns['separator'] <> '') {
|
809 |
+
$values['sep'] = $yoast_patterns['separator'];
|
810 |
+
}
|
811 |
+
if (isset($yoast_patterns["title-$path-wpseo"]) && $yoast_patterns["title-$path-wpseo"] <> '') {
|
812 |
+
$values['title'] = preg_replace('/%%([^\%]+)%%/', '{{$1}}', $yoast_patterns["title-$path-wpseo"]);
|
813 |
+
}
|
814 |
+
if (isset($yoast_patterns["metadesc-$path-wpseo"]) && $yoast_patterns["metadesc-$path-wpseo"] <> '') {
|
815 |
+
$values['description'] = preg_replace('/%%([^\%]+)%%/', '{{$1}}', $yoast_patterns["metadesc-$path-wpseo"]);
|
816 |
+
}
|
817 |
+
if (isset($yoast_patterns["noindex-$path-wpseo"])) {
|
818 |
+
$values['noindex'] = (int)$yoast_patterns["noindex-$path-wpseo"];
|
819 |
+
}
|
820 |
+
if (isset($yoast_patterns["disable-$path-wpseo"])) {
|
821 |
+
$values['disable'] = (int)$yoast_patterns["disable-$path-wpseo"];
|
822 |
+
}
|
823 |
+
|
824 |
+
if (isset($yoast_patterns["title-$path"]) && $yoast_patterns["title-$path"] <> '') {
|
825 |
+
$values['title'] = preg_replace('/%%([^\%]+)%%/', '{{$1}}', $yoast_patterns["title-$path"]);
|
826 |
+
}
|
827 |
+
if (isset($yoast_patterns["metadesc-$path"]) && $yoast_patterns["metadesc-$path"] <> '') {
|
828 |
+
$values['description'] = preg_replace('/%%([^\%]+)%%/', '{{$1}}', $yoast_patterns["metadesc-$path"]);
|
829 |
+
}
|
830 |
+
if (isset($yoast_patterns["noindex-$path"])) {
|
831 |
+
$values['noindex'] = (int)$yoast_patterns["noindex-$path"];
|
832 |
+
}
|
833 |
+
if (isset($yoast_patterns["disable-$path"])) {
|
834 |
+
$values['disable'] = (int)$yoast_patterns["disable-$path"];
|
835 |
+
}
|
836 |
+
}
|
837 |
+
|
838 |
+
SQ_Classes_Tools::saveOptions('patterns', $patterns);
|
839 |
+
}
|
840 |
+
}
|
841 |
+
}
|
842 |
+
|
843 |
+
if ($platform == 'all-in-one-seo-pack') {
|
844 |
+
if ($options = get_option('aioseop_options')) {
|
845 |
+
$patterns = SQ_Classes_Tools::getOption('patterns');
|
846 |
+
|
847 |
+
$find = array('page_title', 'post_title', 'archive_title', 'blog_title', 'blog_description', 'category_title', 'author', 'page_author_nicename', 'description', 'request_words', 'search', 'current_date');
|
848 |
+
$replace = array('title', 'title', 'title', 'sitename', 'sitedesc', 'category', 'name', 'name', 'excerpt', 'searchphrase', 'searchphrase', 'currentdate');
|
849 |
+
|
850 |
+
if (isset($options['aiosp_page_title_format']) && $options['aiosp_page_title_format'] <> '') {
|
851 |
+
$patterns['home']['title'] = preg_replace('/%([^\%]+)%/', '{{$1}}', str_replace($find, $replace, $options['aiosp_page_title_format']));
|
852 |
+
};
|
853 |
+
if (isset($options['aiosp_post_title_format']) && $options['aiosp_post_title_format'] <> '') {
|
854 |
+
$patterns['post']['title'] = preg_replace('/%([^\%]+)%/', '{{$1}}', str_replace($find, $replace, $options['aiosp_post_title_format']));
|
855 |
+
};
|
856 |
+
if (isset($options['aiosp_category_title_format']) && $options['aiosp_category_title_format'] <> '') {
|
857 |
+
$patterns['category']['title'] = preg_replace('/%([^\%]+)%/', '{{$1}}', str_replace($find, $replace, $options['aiosp_category_title_format']));
|
858 |
+
};
|
859 |
+
if (isset($options['aiosp_archive_title_format']) && $options['aiosp_archive_title_format'] <> '') {
|
860 |
+
$patterns['archive']['title'] = preg_replace('/%([^\%]+)%/', '{{$1}}', str_replace($find, $replace, $options['aiosp_archive_title_format']));
|
861 |
+
};
|
862 |
+
if (isset($options['aiosp_author_title_format']) && $options['aiosp_author_title_format'] <> '') {
|
863 |
+
$patterns['profile']['title'] = preg_replace('/%([^\%]+)%/', '{{$1}}', str_replace($find, $replace, $options['aiosp_author_title_format']));
|
864 |
+
};
|
865 |
+
if (isset($options['aiosp_tag_title_format']) && $options['aiosp_tag_title_format'] <> '') {
|
866 |
+
$patterns['tag']['title'] = preg_replace('/%([^\%]+)%/', '{{$1}}', str_replace($find, $replace, $options['aiosp_tag_title_format']));
|
867 |
+
};
|
868 |
+
if (isset($options['aiosp_search_title_format']) && $options['aiosp_search_title_format'] <> '') {
|
869 |
+
$patterns['search']['title'] = preg_replace('/%([^\%]+)%/', '{{$1}}', str_replace($find, $replace, $options['aiosp_search_title_format']));
|
870 |
+
};
|
871 |
+
if (isset($options['aiosp_404_title_format']) && $options['aiosp_404_title_format'] <> '') {
|
872 |
+
$patterns['404']['title'] = preg_replace('/%([^\%]+)%/', '{{$1}}', str_replace($find, $replace, $options['aiosp_404_title_format']));
|
873 |
+
};
|
874 |
+
if (isset($options['aiosp_product_title_format']) && $options['aiosp_product_title_format'] <> '') {
|
875 |
+
$patterns['product']['title'] = preg_replace('/%([^\%]+)%/', '{{$1}}', str_replace($find, $replace, $options['aiosp_product_title_format']));
|
876 |
+
};
|
877 |
+
|
878 |
+
SQ_Classes_Tools::saveOptions('patterns', $patterns);
|
879 |
+
}
|
880 |
+
}
|
881 |
+
|
882 |
+
|
883 |
+
}
|
884 |
+
|
885 |
+
if ($platform == 'squirrly-seo') {
|
886 |
+
$title = SQ_Classes_Tools::getOption('sq_fp_title');
|
887 |
+
$description = SQ_Classes_Tools::getOption('sq_fp_description');
|
888 |
+
$keywords = SQ_Classes_Tools::getOption('sq_fp_keywords');
|
889 |
+
|
890 |
+
if ($title <> '' || $description <> '' || $keywords <> '') {
|
891 |
+
if ($post_id = get_option('page_on_front')) {
|
892 |
+
$hash = md5($post_id);
|
893 |
+
$url = home_url();
|
894 |
+
} elseif ($post_id = get_option('page_for_posts')) {
|
895 |
+
$hash = md5($post_id);
|
896 |
+
$url = home_url();
|
897 |
+
} else {
|
898 |
+
$hash = md5('wp_homepage');
|
899 |
+
$url = home_url();
|
900 |
+
$post_id = 0;
|
901 |
+
}
|
902 |
+
|
903 |
+
|
904 |
+
$metas[$hash]['post_id'] = $post_id;
|
905 |
+
$metas[$hash]['url'] = $url;
|
906 |
+
$metas[$hash]['title'] = $title;
|
907 |
+
$metas[$hash]['description'] = $description;
|
908 |
+
$metas[$hash]['keywords'] = $keywords;
|
909 |
+
}
|
910 |
+
|
911 |
+
}
|
912 |
+
|
913 |
+
if ($platform == 'quickseo-by-squirrly') {
|
914 |
+
global $wpdb;
|
915 |
+
|
916 |
+
$tables = $wpdb->get_col('SHOW TABLES');
|
917 |
+
foreach ($tables as $table) {
|
918 |
+
if ($table == $wpdb->prefix . strtolower('psp')) {
|
919 |
+
$query = "SELECT * FROM " . $wpdb->prefix . "qss";
|
920 |
+
if ($rows = $wpdb->get_results($query, OBJECT)) {
|
921 |
+
foreach ($rows as $row) {
|
922 |
+
if (isset($row->post_id)) {
|
923 |
+
$metas[$row->url_hash]['post_id'] = $row->post_id;
|
924 |
+
} else {
|
925 |
+
$metas[$row->url_hash]['post_id'] = 0;
|
926 |
+
}
|
927 |
+
$metas[$row->url_hash]['url'] = $row->URL;
|
928 |
+
$metas[$row->url_hash]['seo'] = $row->seo;
|
929 |
+
}
|
930 |
+
}
|
931 |
+
break;
|
932 |
+
}
|
933 |
+
}
|
934 |
+
return $metas;
|
935 |
+
}
|
936 |
+
|
937 |
+
if ($platform == 'premium-seo-pack') {
|
938 |
+
global $wpdb;
|
939 |
+
|
940 |
+
$tables = $wpdb->get_col('SHOW TABLES');
|
941 |
+
foreach ($tables as $table) {
|
942 |
+
if ($table == $wpdb->prefix . strtolower('psp')) {
|
943 |
+
$query = "SELECT * FROM " . $wpdb->prefix . "psp";
|
944 |
+
if ($rows = $wpdb->get_results($query, OBJECT)) {
|
945 |
+
foreach ($rows as $row) {
|
946 |
+
if (isset($row->post_id)) {
|
947 |
+
$metas[$row->url_hash]['post_id'] = $row->post_id;
|
948 |
+
} else {
|
949 |
+
$metas[$row->url_hash]['post_id'] = 0;
|
950 |
+
}
|
951 |
+
$metas[$row->url_hash]['url'] = $row->URL;
|
952 |
+
$metas[$row->url_hash]['seo'] = $row->seo;
|
953 |
+
}
|
954 |
+
}
|
955 |
+
break;
|
956 |
+
}
|
957 |
+
}
|
958 |
+
return $metas;
|
959 |
+
}
|
960 |
+
}
|
961 |
+
|
962 |
+
return $metas;
|
963 |
+
}
|
964 |
+
|
965 |
+
|
966 |
+
function createTableBackup() {
|
967 |
+
global $wpdb;
|
968 |
+
|
969 |
+
$tables = $wpdb->get_col('SHOW TABLES');
|
970 |
+
$output = '';
|
971 |
+
foreach ($tables as $table) {
|
972 |
+
if ($table == $wpdb->prefix . strtolower(_SQ_DB_)) {
|
973 |
+
$result = $wpdb->get_results("SELECT * FROM {$table}", ARRAY_N);
|
974 |
+
$columns = $wpdb->get_results('SHOW COLUMNS FROM ' . $table, ARRAY_N);
|
975 |
+
$row2 = $wpdb->get_row('SHOW CREATE TABLE ' . $table, ARRAY_N);
|
976 |
+
$output .= "\n\n" . str_replace('CREATE TABLE ', 'CREATE TABLE IF NOT EXISTS ', $row2[1]) . ";\n\n";
|
977 |
+
for ($i = 0; $i < count($result); $i++) {
|
978 |
+
$row = $result[$i];
|
979 |
+
$output .= 'INSERT INTO ' . $table . ' (';
|
980 |
+
for ($col = 0; $col < count($columns); $col++) {
|
981 |
+
$output .= (isset($columns[$col][0]) ? $columns[$col][0] : "''");
|
982 |
+
if ($col < (count($columns) - 1)) {
|
983 |
+
$output .= ',';
|
984 |
+
}
|
985 |
+
}
|
986 |
+
$output .= ') VALUES(';
|
987 |
+
for ($j = 0; $j < count($result[0]); $j++) {
|
988 |
+
$output .= (isset($row[$j]) ? "'" . $row[$j] . "'" : "''");
|
989 |
+
if ($j < (count($result[0]) - 1)) {
|
990 |
+
$output .= ',';
|
991 |
+
}
|
992 |
+
}
|
993 |
+
$output .= ") ON DUPLICATE KEY UPDATE ";
|
994 |
+
for ($j = 0; $j < count($result[0]); $j++) {
|
995 |
+
$output .= $columns[$j][0] . '=' . (isset($row[$j]) ? "'" . $row[$j] . "'" : "''");
|
996 |
+
if ($j < (count($result[0]) - 1)) {
|
997 |
+
$output .= ',';
|
998 |
+
}
|
999 |
+
}
|
1000 |
+
$output .= ";\n";
|
1001 |
+
}
|
1002 |
+
$output .= "\n";
|
1003 |
+
break;
|
1004 |
+
}
|
1005 |
+
}
|
1006 |
+
$wpdb->flush();
|
1007 |
+
|
1008 |
+
return $output;
|
1009 |
+
}
|
1010 |
+
|
1011 |
+
public function executeSql($queries) {
|
1012 |
+
if (is_array($queries) && !empty($queries)) {
|
1013 |
+
global $wpdb;
|
1014 |
+
|
1015 |
+
for ($i = 0; $i < count($queries); $i++) {
|
1016 |
+
if (strlen($queries[$i]) > 1) {
|
1017 |
+
$wpdb->query($queries[$i]);
|
1018 |
+
}
|
1019 |
+
}
|
1020 |
+
$wpdb->flush();
|
1021 |
+
|
1022 |
+
return true;
|
1023 |
+
}
|
1024 |
+
return false;
|
1025 |
+
}
|
1026 |
+
}
|
models/Blocksearch.php
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* The model class for SQ_Core_Blocksearch
|
5 |
+
*
|
6 |
+
*/
|
7 |
+
class SQ_Models_Blocksearch {
|
8 |
+
|
9 |
+
|
10 |
+
}
|
models/Blockseo.php
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* The model class for SQ_Core_Blockseo
|
5 |
+
*
|
6 |
+
*/
|
7 |
+
class SQ_Models_Blockseo {
|
8 |
+
|
9 |
+
/**
|
10 |
+
* Get the advanced SEO from database
|
11 |
+
* @global integer $sq_postID
|
12 |
+
* @return string
|
13 |
+
*/
|
14 |
+
public function getAdvSeo() {
|
15 |
+
global $sq_postID;
|
16 |
+
|
17 |
+
if ((int) $sq_postID == 0)
|
18 |
+
return array();
|
19 |
+
|
20 |
+
$sq = SQ_Classes_ObjController::getClass('SQ_Models_Frontend')->getAdvancedMeta($sq_postID, 'title');
|
21 |
+
|
22 |
+
return array('_sq_fp_title' => SQ_Classes_ObjController::getClass('SQ_Models_Frontend')->getAdvancedMeta($sq_postID, 'title'),
|
23 |
+
'_sq_fp_description' => (isset($sq->description) ? $sq->description : ''),
|
24 |
+
'_sq_fp_keywords' => (isset($sq->keywords) ? $sq->keywords : ''),
|
25 |
+
'_sq_fp_ogimage' => (isset($sq->og_media) ? $sq->og_media : ''),
|
26 |
+
'_sq_fp_canonical' => (isset($sq->canonical) ? $sq->canonical : ''));
|
27 |
+
}
|
28 |
+
|
29 |
+
}
|
models/Frontend.php
ADDED
@@ -0,0 +1,812 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SQ_Models_Frontend {
|
4 |
+
|
5 |
+
private $_post;
|
6 |
+
private $_loaded = false;
|
7 |
+
|
8 |
+
public function __construct() {
|
9 |
+
//initiate the post
|
10 |
+
$this->_post = false;
|
11 |
+
|
12 |
+
add_filter('sq_post', array($this, 'getWpPost'), 11, 1);
|
13 |
+
add_filter('sq_post', array($this, 'getPostDetails'), 12, 1);
|
14 |
+
|
15 |
+
add_filter('sq_post', array($this, 'replacePatterns'), 13, 1);
|
16 |
+
add_filter('sq_post', array($this, 'addPaged'), 14, 1);
|
17 |
+
|
18 |
+
//change the buffer
|
19 |
+
add_filter('sq_buffer', array($this, 'setMetaInBuffer'), 10, 1);
|
20 |
+
//pack html prefix if needed
|
21 |
+
add_filter('sq_html_prefix', array($this, 'packPrefix'), 99);
|
22 |
+
}
|
23 |
+
|
24 |
+
public function setStart() {
|
25 |
+
return "\n\n<!-- Squirrly SEO Plugin " . SQ_VERSION . ", visit: https://plugin.squirrly.co/ -->\n";
|
26 |
+
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* End the signature
|
31 |
+
* @return string
|
32 |
+
*/
|
33 |
+
public function setEnd() {
|
34 |
+
return "<!-- /Squirrly SEO Plugin -->\n\n";
|
35 |
+
|
36 |
+
}
|
37 |
+
|
38 |
+
/**
|
39 |
+
* Start the buffer record
|
40 |
+
* @return string html
|
41 |
+
*/
|
42 |
+
public function startBuffer() {
|
43 |
+
ob_start(array($this, 'getBuffer'));
|
44 |
+
}
|
45 |
+
|
46 |
+
/**
|
47 |
+
* Get the loaded buffer and change it
|
48 |
+
*
|
49 |
+
* @param string $buffer
|
50 |
+
* @return string
|
51 |
+
*/
|
52 |
+
public function getBuffer($buffer) {
|
53 |
+
//prevend from loading again
|
54 |
+
if ($this->_loaded) {
|
55 |
+
return $buffer;
|
56 |
+
}
|
57 |
+
|
58 |
+
return apply_filters('sq_buffer', $buffer);
|
59 |
+
}
|
60 |
+
|
61 |
+
|
62 |
+
/**
|
63 |
+
* Change the title, description and keywords in site's buffer
|
64 |
+
* @param string $buffer
|
65 |
+
* @return string
|
66 |
+
*/
|
67 |
+
public function setMetaInBuffer($buffer) {
|
68 |
+
//if is enabled sq for this page
|
69 |
+
if ($this->runSEOForThisPage()) {
|
70 |
+
if (strpos($buffer, '</head') !== false) {
|
71 |
+
if ($header = $this->getHeader()) {
|
72 |
+
|
73 |
+
//set loaded true
|
74 |
+
$this->_loaded = true;
|
75 |
+
|
76 |
+
//clear the existing tags to avoid duplicates
|
77 |
+
if (isset($header['sq_title']) && $header['sq_title'] <> '' && SQ_Classes_Tools::getOption('sq_auto_title')) {
|
78 |
+
$buffer = @preg_replace('/<title[^<>]*>([^<>]*)<\/title>/si', '', $buffer, -1);
|
79 |
+
}
|
80 |
+
if (isset($header['sq_description']) && $header['sq_description'] <> '' && SQ_Classes_Tools::getOption('sq_auto_description')) {
|
81 |
+
$buffer = @preg_replace('/<meta[^>]*(name|property)=["\']description["\'][^>]*content=["\'][^"\'>]*["\'][^>]*>[\n\r]*/si', '', $buffer, -1);
|
82 |
+
}
|
83 |
+
if (isset($header['sq_keywords']) && $header['sq_keywords'] <> '' && SQ_Classes_Tools::getOption('sq_auto_keywords')) {
|
84 |
+
$buffer = @preg_replace('/<meta[^>]*(name|property)=["\']keywords["\'][^>]*content=["\'][^"\'>]*["\'][^>]*>[\n\r]*/si', '', $buffer, -1);
|
85 |
+
}
|
86 |
+
if (isset($header['sq_canonical']) && $header['sq_canonical'] <> '' && SQ_Classes_Tools::getOption('sq_auto_canonical')) {
|
87 |
+
$buffer = @preg_replace('/<link[^>]*rel=["\']canonical["\'][^>]*>[\n\r]*/si', '', $buffer, -1);
|
88 |
+
$buffer = @preg_replace('/<link[^>]*rel=["\'](prev|next)["\'][^>]*>[\n\r]*/si', '', $buffer, -1);
|
89 |
+
}
|
90 |
+
if (isset($header['sq_sitemap']) && $header['sq_sitemap'] <> '' && SQ_Classes_Tools::getOption('sq_auto_sitemap')) {
|
91 |
+
$buffer = @preg_replace('/<link[^>]*rel=["\']alternate["\'][^>]*>[\n\r]*/si', '', $buffer, -1);
|
92 |
+
}
|
93 |
+
if (isset($header['sq_noindex']) && $header['sq_noindex'] <> '' && SQ_Classes_Tools::getOption('sq_auto_noindex')) {
|
94 |
+
$buffer = @preg_replace('/<meta[^>]*name=["\']robots["\'][^>]*>[\n\r]*/si', '', $buffer, -1);
|
95 |
+
}
|
96 |
+
if (isset($header['sq_open_graph']) && $header['sq_open_graph'] <> '' && SQ_Classes_Tools::getOption('sq_auto_facebook')) {
|
97 |
+
$buffer = @preg_replace('/<meta[^>]*(name|property)=["\'](og:|article:)[^"\'>]+["\'][^>]*content=["\'][^"\'>]+["\'][^>]*>[\n\r]*/si', '', $buffer, -1);
|
98 |
+
}
|
99 |
+
if (isset($header['sq_twitter_card']) && $header['sq_twitter_card'] <> '' && SQ_Classes_Tools::getOption('sq_auto_twitter')) {
|
100 |
+
$buffer = @preg_replace('/<meta[^>]*(name|property)=["\'](twitter:)[^"\'>]+["\'][^>]*content=["\'][^"\'>]+["\'][^>]*>[\n\r]*/si', '', $buffer, -1);
|
101 |
+
}
|
102 |
+
if (isset($header['sq_json_ld']) && $header['sq_json_ld'] <> '' && SQ_Classes_Tools::getOption('sq_auto_jsonld')) {
|
103 |
+
$buffer = @preg_replace('/<script[^>]*type=["\']application\/ld\+json["\'][^>]*>[^>]*<\/script>[\n\r]*/si', '', $buffer, -1);
|
104 |
+
}
|
105 |
+
if (isset($header['sq_favicon']) && $header['sq_favicon'] <> '' && SQ_Classes_Tools::getOption('sq_auto_favicon')) {
|
106 |
+
$buffer = @preg_replace('/<link[^>]*rel=["\'](shortcut icon)["\'][^>]*>[\n\r]*/si', '', $buffer, -1);
|
107 |
+
}
|
108 |
+
|
109 |
+
$buffer = @preg_replace('/(<head(\s[^>]*|)>)/si', sprintf("$1\n%s", join("\n", $header)) . "\n", $buffer, 1);
|
110 |
+
$buffer = @preg_replace('/(<html(\s[^>]*|))/si', sprintf("$1%s", apply_filters('sq_html_prefix', false)), $buffer, 1);
|
111 |
+
|
112 |
+
}
|
113 |
+
}
|
114 |
+
}
|
115 |
+
|
116 |
+
return $buffer;
|
117 |
+
}
|
118 |
+
|
119 |
+
|
120 |
+
/**
|
121 |
+
* Overwrite the header with the correct parameters
|
122 |
+
*
|
123 |
+
* @return array | false
|
124 |
+
*/
|
125 |
+
public function getHeader() {
|
126 |
+
//Load the SEO Library before calling the filters
|
127 |
+
$this->loadSeoLibrary();
|
128 |
+
|
129 |
+
//Build the Header
|
130 |
+
$header = array();
|
131 |
+
$header['sq_title'] = apply_filters('sq_title', false);
|
132 |
+
|
133 |
+
|
134 |
+
//Get all header in array
|
135 |
+
$header['sq_start'] = $this->setStart();
|
136 |
+
|
137 |
+
$header['sq_noindex'] = apply_filters('sq_noindex', false); //
|
138 |
+
//Add description in homepage if is set or add description in other pages if is not home page
|
139 |
+
$header['sq_description'] = apply_filters('sq_description', false); //
|
140 |
+
$header['sq_keywords'] = apply_filters('sq_keywords', false); //
|
141 |
+
|
142 |
+
$header['sq_canonical'] = apply_filters('sq_canonical', false); //
|
143 |
+
$header['sq_prevnext'] = apply_filters('sq_prevnext', false); //
|
144 |
+
|
145 |
+
$header['sq_sitemap'] = apply_filters('sq_sitemap', false);
|
146 |
+
$header['sq_favicon'] = apply_filters('sq_favicon', false);
|
147 |
+
$header['sq_language'] = apply_filters('sq_language', false);
|
148 |
+
$header['sq_dublin_core'] = apply_filters('sq_dublin_core', false);
|
149 |
+
|
150 |
+
$header['sq_open_graph'] = apply_filters('sq_open_graph', false); //
|
151 |
+
$header['sq_publisher'] = apply_filters('sq_publisher', false); //
|
152 |
+
$header['sq_twitter_card'] = apply_filters('sq_twitter_card', false); //
|
153 |
+
|
154 |
+
/* SEO optimizer tool */
|
155 |
+
$header['sq_verify'] = apply_filters('sq_verify', false); //
|
156 |
+
$header['sq_google_analytics'] = apply_filters('sq_google_analytics', false); //
|
157 |
+
$header['sq_facebook_pixel'] = apply_filters('sq_facebook_pixel', false); //
|
158 |
+
|
159 |
+
/* Structured Data */
|
160 |
+
$header['sq_json_ld'] = apply_filters('sq_json_ld', false);
|
161 |
+
$header['sq_end'] = $this->setEnd();
|
162 |
+
|
163 |
+
//flush the header
|
164 |
+
$header = @array_filter($header);
|
165 |
+
|
166 |
+
if (count($header) == 2) {
|
167 |
+
return false;
|
168 |
+
}
|
169 |
+
return $header;
|
170 |
+
}
|
171 |
+
|
172 |
+
/**
|
173 |
+
* Show in footer
|
174 |
+
*/
|
175 |
+
public function getFooter() {
|
176 |
+
|
177 |
+
$footer = array();
|
178 |
+
|
179 |
+
if ($this->_post && $this->_post->sq->doseo) {
|
180 |
+
SQ_Classes_ObjController::getClass('SQ_Models_Services_Analytics');
|
181 |
+
$footer['sq_google_analytics'] = apply_filters('sq_google_analytics_amp', false);
|
182 |
+
|
183 |
+
SQ_Classes_ObjController::getClass('SQ_Models_Services_Pixel');
|
184 |
+
$footer['sq_facebook_pixel'] = apply_filters('sq_facebook_pixel_amp', false);
|
185 |
+
}
|
186 |
+
|
187 |
+
$footer = @array_filter($footer);
|
188 |
+
|
189 |
+
if (count($footer) > 0) {
|
190 |
+
return join("\n", $footer);
|
191 |
+
}
|
192 |
+
|
193 |
+
return false;
|
194 |
+
}
|
195 |
+
/**************************************************************************************************/
|
196 |
+
|
197 |
+
/**
|
198 |
+
* Load all SEO classes
|
199 |
+
*/
|
200 |
+
public function loadSeoLibrary() {
|
201 |
+
if ($this->_post && $this->_post->sq->doseo) {
|
202 |
+
//load all services
|
203 |
+
if (SQ_Classes_Tools::getOption('sq_auto_title')) SQ_Classes_ObjController::getClass('SQ_Models_Services_Title');
|
204 |
+
if (SQ_Classes_Tools::getOption('sq_auto_description')) SQ_Classes_ObjController::getClass('SQ_Models_Services_Description');
|
205 |
+
if (SQ_Classes_Tools::getOption('sq_auto_keywords')) SQ_Classes_ObjController::getClass('SQ_Models_Services_Keywords');
|
206 |
+
if (SQ_Classes_Tools::getOption('sq_auto_canonical')) SQ_Classes_ObjController::getClass('SQ_Models_Services_Canonical');
|
207 |
+
if (SQ_Classes_Tools::getOption('sq_auto_canonical')) SQ_Classes_ObjController::getClass('SQ_Models_Services_PrevNext');
|
208 |
+
if (SQ_Classes_Tools::getOption('sq_auto_sitemap')) SQ_Classes_ObjController::getClass('SQ_Models_Services_Sitemap');
|
209 |
+
if (SQ_Classes_Tools::getOption('sq_auto_noindex')) SQ_Classes_ObjController::getClass('SQ_Models_Services_Noindex');
|
210 |
+
if (SQ_Classes_Tools::getOption('sq_auto_facebook')) {
|
211 |
+
SQ_Classes_ObjController::getClass('SQ_Models_Services_OpenGraph');
|
212 |
+
SQ_Classes_ObjController::getClass('SQ_Models_Services_Publisher');
|
213 |
+
|
214 |
+
}
|
215 |
+
if (SQ_Classes_Tools::getOption('sq_auto_twitter')) SQ_Classes_ObjController::getClass('SQ_Models_Services_TwitterCard');
|
216 |
+
if (SQ_Classes_Tools::getOption('sq_auto_favicon')) SQ_Classes_ObjController::getClass('SQ_Models_Services_Favicon');
|
217 |
+
|
218 |
+
if (SQ_Classes_Tools::getOption('sq_auto_meta')) {
|
219 |
+
SQ_Classes_ObjController::getClass('SQ_Models_Services_DublinCore');
|
220 |
+
}
|
221 |
+
|
222 |
+
//SQ_Models_Services_Favicon
|
223 |
+
SQ_Classes_ObjController::getClass('SQ_Models_Services_Verify');
|
224 |
+
SQ_Classes_ObjController::getClass('SQ_Models_Services_Pixel');
|
225 |
+
SQ_Classes_ObjController::getClass('SQ_Models_Services_Analytics');
|
226 |
+
|
227 |
+
if (SQ_Classes_Tools::getOption('sq_auto_jsonld')) SQ_Classes_ObjController::getClass('SQ_Models_Services_JsonLD');
|
228 |
+
}
|
229 |
+
}
|
230 |
+
|
231 |
+
/**
|
232 |
+
* Set the post for the frontend
|
233 |
+
* @param WP_Post $curpost
|
234 |
+
* @return SQ_Models_Frontend
|
235 |
+
*/
|
236 |
+
public function setPost($curpost = null) {
|
237 |
+
//Load the post with all the filters applied
|
238 |
+
if($this->_post = apply_filters('sq_post', $curpost)) {
|
239 |
+
SQ_Classes_Tools::dump($this->_post);
|
240 |
+
SQ_Classes_Tools::dump($this->_post->sq);
|
241 |
+
//SQ_Classes_Tools::dump('Show Squirrly', 'isHomePage: ' . $this->isHomePage(), 'is_single: ' . is_single(), 'is_preview: ' . is_preview(), 'is_page: ' . is_page(), 'is_archive: ' . is_archive(), 'is_author: ' . is_author(), 'is_category: ' . is_category(), 'is_tag: ' . is_tag(), 'is_tax: ' . is_tax(), 'is_search: ' . is_search(), 'in_array: ' . (!empty($this->post_types) && in_array($this->post_type, $this->post_types)));
|
242 |
+
}
|
243 |
+
return $this;
|
244 |
+
}
|
245 |
+
|
246 |
+
/**
|
247 |
+
* Return the post
|
248 |
+
* @return SQ_Models_Domain_Post
|
249 |
+
*/
|
250 |
+
public function getPost() {
|
251 |
+
return $this->_post;
|
252 |
+
}
|
253 |
+
|
254 |
+
/**
|
255 |
+
* Get the current post from Wordpress
|
256 |
+
* @param integer $current_post
|
257 |
+
* @return WP_Post
|
258 |
+
*/
|
259 |
+
public function getWpPost($current_post) {
|
260 |
+
global $post;
|
261 |
+
|
262 |
+
if ($current_post instanceof WP_Post) {
|
263 |
+
$post = $current_post;
|
264 |
+
} else {
|
265 |
+
if (function_exists('is_shop') && is_shop()) {
|
266 |
+
$current_post = get_post(wc_get_page_id('shop'));
|
267 |
+
} elseif ((is_single() || is_singular()) && isset($post->ID)) {
|
268 |
+
$current_post = get_post($post->ID);
|
269 |
+
}
|
270 |
+
}
|
271 |
+
|
272 |
+
$current_post = apply_filters('sq_current_post', $current_post);
|
273 |
+
SQ_Classes_Tools::dump($current_post);
|
274 |
+
// global $wp_query;
|
275 |
+
// SQ_Classes_Tools::dump($wp_query);
|
276 |
+
|
277 |
+
return $current_post;
|
278 |
+
}
|
279 |
+
|
280 |
+
|
281 |
+
/**
|
282 |
+
* Replace the patterns from tags
|
283 |
+
*
|
284 |
+
* @param SQ_Models_Domain_Post $post
|
285 |
+
* @return SQ_Models_Domain_Post | false
|
286 |
+
*/
|
287 |
+
public function replacePatterns($post) {
|
288 |
+
if ($post instanceof SQ_Models_Domain_Post) {
|
289 |
+
$patterns = SQ_Classes_ObjController::getDomain('SQ_Models_Domain_Patterns', $post->toArray());
|
290 |
+
SQ_Classes_Tools::dump($patterns);
|
291 |
+
if ($sq_array = $post->sq->toArray()) {
|
292 |
+
if (!empty($sq_array)) {
|
293 |
+
foreach ($sq_array as $name => $value) {
|
294 |
+
if ($name == 'sep' && $value <> '') {
|
295 |
+
//set the current post type sep loded in SQ_Models_Domain_Post domain
|
296 |
+
$patterns->sep = $value;
|
297 |
+
}
|
298 |
+
|
299 |
+
if (strpos($value, '{{') !== false && strpos($value, '}}') !== false) {
|
300 |
+
$sq_with_patterns[$name] = $value;
|
301 |
+
}
|
302 |
+
}
|
303 |
+
|
304 |
+
if (!empty($sq_with_patterns)) {
|
305 |
+
foreach ($patterns->getPatterns() as $key => $pattern) {
|
306 |
+
foreach ($sq_with_patterns as $name => $value) {
|
307 |
+
if (strpos($value, $pattern) !== false) {
|
308 |
+
$post->sq->$name = str_replace($pattern, $patterns->$key, $post->sq->$name);
|
309 |
+
}
|
310 |
+
}
|
311 |
+
}
|
312 |
+
}
|
313 |
+
|
314 |
+
// SQ_Classes_Tools::dump($post, $patterns);
|
315 |
+
return $post;
|
316 |
+
}
|
317 |
+
}
|
318 |
+
}
|
319 |
+
return false;
|
320 |
+
}
|
321 |
+
|
322 |
+
|
323 |
+
/**
|
324 |
+
* Build the current post with all the data required
|
325 |
+
* @param WP_Post $post
|
326 |
+
* @return SQ_Models_Domain_Post | false
|
327 |
+
*/
|
328 |
+
public function getPostDetails($post) {
|
329 |
+
if ($post instanceof WP_Post) {
|
330 |
+
$post = SQ_Classes_ObjController::getDomain('SQ_Models_Domain_Post', $post);
|
331 |
+
SQ_Classes_Tools::dump($post);
|
332 |
+
|
333 |
+
if ($post->ID > 0 && $post->post_type <> '') {
|
334 |
+
//If it's front page
|
335 |
+
if ($post->ID == get_option('page_on_front')) {
|
336 |
+
$post->debug = 'page_on_front:' . $post->ID;
|
337 |
+
$post->post_type = 'home';
|
338 |
+
$post->hash = md5($post->ID);
|
339 |
+
$post->url = home_url();
|
340 |
+
return $post;
|
341 |
+
}
|
342 |
+
|
343 |
+
//If it's front post
|
344 |
+
if ($post->ID == get_option('page_for_posts')) {
|
345 |
+
$post->debug = 'page_for_posts:' . $post->ID;
|
346 |
+
$post->post_type = 'home';
|
347 |
+
$post->hash = md5($post->ID);
|
348 |
+
$post->url = home_url();
|
349 |
+
return $post;
|
350 |
+
}
|
351 |
+
|
352 |
+
//If it's a product
|
353 |
+
if ($post->post_type == 'product') {
|
354 |
+
$post->debug = 'product:' . $post->ID;
|
355 |
+
|
356 |
+
$post->post_type = 'product';
|
357 |
+
$post->hash = md5($post->ID);
|
358 |
+
$post->url = get_permalink($post->ID);
|
359 |
+
$cat = get_the_terms($post->ID, 'product_cat');
|
360 |
+
if (!empty($cat) && count($cat) > 0) {
|
361 |
+
$post->category = $cat[0]->name;
|
362 |
+
if (isset($cat[0]->description)) $post->category_description = $cat[0]->description;
|
363 |
+
}
|
364 |
+
return $post;
|
365 |
+
}
|
366 |
+
|
367 |
+
//If it's a shop
|
368 |
+
if ($post->post_type == 'page' && function_exists('wc_get_page_id') && $post->ID == wc_get_page_id('shop')) {
|
369 |
+
$post->debug = 'shop:' . $post->post_type . $post->ID;
|
370 |
+
$post->post_type = 'shop';
|
371 |
+
$post->hash = md5($post->ID);
|
372 |
+
$post->url = get_permalink($post->ID);
|
373 |
+
return $post;
|
374 |
+
}
|
375 |
+
|
376 |
+
if ($post->post_type == 'post' || $post->post_type == 'page' || $post->post_type == 'product') {
|
377 |
+
$post->debug = 'post/page/product:' . $post->ID;
|
378 |
+
$post->hash = md5($post->ID);
|
379 |
+
$post->url = get_permalink($post->ID);
|
380 |
+
return $post;
|
381 |
+
}
|
382 |
+
|
383 |
+
|
384 |
+
if ($post->post_type == 'attachment') {
|
385 |
+
$post->debug = 'attachment:' . $post->ID;
|
386 |
+
$post->hash = md5($post->ID);
|
387 |
+
$post->url = get_permalink($post->ID);
|
388 |
+
return $post;
|
389 |
+
}
|
390 |
+
|
391 |
+
if ($post->post_type = $this->getCutomPostType()) {
|
392 |
+
SQ_Classes_Tools::dump($post->post_type);
|
393 |
+
|
394 |
+
$post->debug = 'getCutomPostType1:' . $post->post_type . $post->ID;
|
395 |
+
$post->hash = md5($post->post_type . $post->ID);
|
396 |
+
$post->url = get_permalink($post->ID);
|
397 |
+
return $post;
|
398 |
+
}
|
399 |
+
|
400 |
+
}
|
401 |
+
|
402 |
+
if ($post->post_type = $this->getCutomPostType()) {
|
403 |
+
if ($post->post_name <> '') {
|
404 |
+
$post->debug = 'getCutomPostType2:' . $post->post_type . $post->post_name;
|
405 |
+
$post->hash = md5($post->post_type . $post->post_name);
|
406 |
+
} else {
|
407 |
+
$post->debug = 'getCutomPostType3:' . $post->post_type;
|
408 |
+
$post->hash = md5($post->post_type);
|
409 |
+
}
|
410 |
+
|
411 |
+
$post->url = get_post_type_archive_link($post->post_type);
|
412 |
+
return $post;
|
413 |
+
}
|
414 |
+
} else {
|
415 |
+
if ($post instanceof SQ_Models_Domain_Post) {
|
416 |
+
return $post;
|
417 |
+
}
|
418 |
+
|
419 |
+
SQ_Classes_Tools::dump('No WP Post');
|
420 |
+
$post = SQ_Classes_ObjController::getDomain('SQ_Models_Domain_Post', $post);
|
421 |
+
}
|
422 |
+
|
423 |
+
|
424 |
+
if ($this->isHomePage()) {
|
425 |
+
$post->debug = 'isHomePage';
|
426 |
+
$post->post_type = 'home';
|
427 |
+
$post->hash = md5('wp_homepage');
|
428 |
+
$post->post_title = get_bloginfo('name');
|
429 |
+
$post->post_excerpt = get_bloginfo('description');
|
430 |
+
$post->url = home_url();
|
431 |
+
return $post;
|
432 |
+
}
|
433 |
+
|
434 |
+
if (is_tag()) {
|
435 |
+
$tag = $this->getTagDetails();
|
436 |
+
$post->post_type = 'tag';
|
437 |
+
if (isset($tag->term_id)) {
|
438 |
+
$post->post_title = $tag->name;
|
439 |
+
$post->url = get_tag_link($tag->term_id);
|
440 |
+
$post->debug = 'is_tag:' . $post->post_type . $tag->term_id;
|
441 |
+
$post->hash = md5($post->post_type . $tag->term_id);
|
442 |
+
$post->url = get_tag_link($tag->term_id);
|
443 |
+
//
|
444 |
+
$post->term_taxonomy_id = $tag->term_id;
|
445 |
+
$post->taxonomy = $tag->taxonomy;
|
446 |
+
}
|
447 |
+
|
448 |
+
return $post;
|
449 |
+
}
|
450 |
+
|
451 |
+
if (is_tax()) {
|
452 |
+
if ($tax = $this->getTaxonomyDetails()) {
|
453 |
+
if (isset($tax->taxonomy) && $tax->taxonomy <> '') {
|
454 |
+
$post->post_type = 'tax-' . $tax->taxonomy;
|
455 |
+
if (isset($tax->term_id)) {
|
456 |
+
$post->debug = 'is_tax:' . $post->post_type . $tax->term_id;
|
457 |
+
$post->hash = md5($post->post_type . $tax->term_id);
|
458 |
+
$post->url = get_term_link($tax->term_id);
|
459 |
+
$post->post_title = ((isset($tax->name)) ? $tax->name : '');
|
460 |
+
$post->post_excerpt = ((isset($tax->description)) ? $tax->description : '');
|
461 |
+
//
|
462 |
+
$post->term_taxonomy_id = $tax->term_id;
|
463 |
+
$post->taxonomy = $tax->taxonomy;
|
464 |
+
}
|
465 |
+
return $post;
|
466 |
+
}
|
467 |
+
}
|
468 |
+
|
469 |
+
}
|
470 |
+
|
471 |
+
if (is_category()) {
|
472 |
+
$category = $this->getCategoryDetails();
|
473 |
+
$post->post_type = 'category';
|
474 |
+
if (isset($category->term_id)) {
|
475 |
+
$post->debug = 'is_category:' . $post->post_type . $category->term_id;
|
476 |
+
|
477 |
+
$post->hash = md5($post->post_type . $category->term_id);
|
478 |
+
$post->guid = $category->slug;
|
479 |
+
$post->url = get_term_link($category->term_id);
|
480 |
+
$post->post_title = $category->cat_name;
|
481 |
+
$post->post_excerpt = $category->description;
|
482 |
+
$post->category = $category->cat_name;
|
483 |
+
$post->category_description = $category->description;
|
484 |
+
//
|
485 |
+
$post->term_taxonomy_id = $category->term_id;
|
486 |
+
$post->taxonomy = 'category';
|
487 |
+
}
|
488 |
+
return $post;
|
489 |
+
}
|
490 |
+
|
491 |
+
if (is_search()) {
|
492 |
+
$post->debug = 'is_search:' . $post->guid;
|
493 |
+
$post->post_type = 'search';
|
494 |
+
$post->hash = md5($post->post_type);
|
495 |
+
|
496 |
+
//Set the search guid
|
497 |
+
$post->url = home_url() . '/' . $post->post_type . '/';
|
498 |
+
$search = get_query_var('s');
|
499 |
+
if ($search !== '') {
|
500 |
+
$post->url .= $search;
|
501 |
+
$post->hash = md5($post->post_type . $search);
|
502 |
+
}
|
503 |
+
|
504 |
+
if ($post->post_name <> '') {
|
505 |
+
$post->hash = md5($post->guid);
|
506 |
+
}
|
507 |
+
return $post;
|
508 |
+
}
|
509 |
+
|
510 |
+
if (is_author()) {
|
511 |
+
if ($author = $this->getAuthorDetails()) {
|
512 |
+
$post->post_type = 'profile';
|
513 |
+
if (isset($author->ID)) {
|
514 |
+
$post->debug = 'is_author:' . $post->post_type . $author->ID;
|
515 |
+
|
516 |
+
$post->hash = md5($post->post_type . $author->ID);
|
517 |
+
$post->post_author = $author->display_name;
|
518 |
+
$post->post_title = $author->display_name;
|
519 |
+
$post->post_excerpt = $author->description;
|
520 |
+
|
521 |
+
//If buddypress installed
|
522 |
+
if (function_exists('bp_core_get_user_domain')) {
|
523 |
+
$post->url = bp_core_get_user_domain($author->ID);
|
524 |
+
} else {
|
525 |
+
$post->url = get_author_posts_url($author->ID);
|
526 |
+
}
|
527 |
+
|
528 |
+
}
|
529 |
+
return $post;
|
530 |
+
}
|
531 |
+
|
532 |
+
}
|
533 |
+
|
534 |
+
//In case of post type in archieve like gurutheme
|
535 |
+
if ($post->post_type = $this->getCutomPostType()) {
|
536 |
+
$post->debug = 'cutomPostType:' . $post->post_type;
|
537 |
+
SQ_Classes_Tools::dump($post);
|
538 |
+
$post->hash = md5($post->post_type);
|
539 |
+
|
540 |
+
if ((int)$post->term_taxonomy_id > 0) {
|
541 |
+
$post->url = get_term_link($post->term_taxonomy_id);
|
542 |
+
} else {
|
543 |
+
$post->url = get_post_type_archive_link($post->post_type);
|
544 |
+
}
|
545 |
+
return $post;
|
546 |
+
}
|
547 |
+
|
548 |
+
if (is_archive()) {
|
549 |
+
if ($archive = $this->getArchiveDetails()) {
|
550 |
+
$post->post_type = 'archive';
|
551 |
+
if ($archive->path <> '') {
|
552 |
+
$post->debug = 'is_archive:' . $post->post_type . $archive->path;
|
553 |
+
|
554 |
+
$post->hash = md5($post->post_type . $archive->path);
|
555 |
+
$post->url = $archive->url;
|
556 |
+
$post->post_date = date(get_option('date_format'), strtotime($archive->path));
|
557 |
+
}
|
558 |
+
|
559 |
+
return $post;
|
560 |
+
}
|
561 |
+
}
|
562 |
+
|
563 |
+
if (is_404()) {
|
564 |
+
$post->debug = 'is_404:' . $post->post_type;
|
565 |
+
$post->post_type = '404';
|
566 |
+
$post->hash = md5($post->post_type);
|
567 |
+
if ($post->post_name <> '') {
|
568 |
+
$post->hash = md5($post->post_type . $post->post_name);
|
569 |
+
}
|
570 |
+
return $post;
|
571 |
+
}
|
572 |
+
|
573 |
+
return false;
|
574 |
+
}
|
575 |
+
|
576 |
+
|
577 |
+
/**
|
578 |
+
* Get the Sq from database
|
579 |
+
* @param string $hash
|
580 |
+
* @param integer $post_id
|
581 |
+
* @return mixed|null
|
582 |
+
*/
|
583 |
+
public function getSqSeo($hash = null, $post_id = 0, $meta = null) {
|
584 |
+
global $wpdb;
|
585 |
+
$metas = SQ_Classes_ObjController::getDomain('SQ_Models_Domain_Sq');
|
586 |
+
if (isset($hash) && $hash <> '') {
|
587 |
+
$blog_id = get_current_blog_id();
|
588 |
+
|
589 |
+
$query = "SELECT * FROM " . $wpdb->prefix . strtolower(_SQ_DB_) . " WHERE blog_id = '" . (int)$blog_id . "' AND url_hash = '" . $hash . "';";
|
590 |
+
|
591 |
+
if ($row = $wpdb->get_row($query, OBJECT)) {
|
592 |
+
$metas = SQ_Classes_ObjController::getDomain('SQ_Models_Domain_Sq', maybe_unserialize($row->seo));
|
593 |
+
}
|
594 |
+
} elseif ((int)$post_id > 0) {
|
595 |
+
$blog_id = get_current_blog_id();
|
596 |
+
|
597 |
+
$query = "SELECT * FROM " . $wpdb->prefix . strtolower(_SQ_DB_) . " WHERE blog_id = '" . (int)$blog_id . "' AND post_id = '" . (int)$post_id . "';";
|
598 |
+
|
599 |
+
if ($row = $wpdb->get_row($query, OBJECT)) {
|
600 |
+
$metas = SQ_Classes_ObjController::getDomain('SQ_Models_Domain_Sq', maybe_unserialize($row->seo));
|
601 |
+
}
|
602 |
+
}
|
603 |
+
|
604 |
+
if (isset($meta) && isset($metas->$meta)) {
|
605 |
+
return $metas->$meta;
|
606 |
+
}
|
607 |
+
return $metas;
|
608 |
+
}
|
609 |
+
|
610 |
+
/**
|
611 |
+
* Check if other plugin are/were installed and don't change the SEO
|
612 |
+
*
|
613 |
+
* @param integer $post_id
|
614 |
+
* @param string $meta
|
615 |
+
* @return boolean
|
616 |
+
*/
|
617 |
+
public function getAdvancedMeta($post_id, $meta = null) {
|
618 |
+
return $this->getSqSeo(null, $post_id, $meta);
|
619 |
+
}
|
620 |
+
|
621 |
+
/**
|
622 |
+
* Add page if needed
|
623 |
+
* @param $url
|
624 |
+
* @return string
|
625 |
+
*/
|
626 |
+
public function addPaged($post) {
|
627 |
+
if (is_paged() && isset($post->url) && $post->url <> '') {
|
628 |
+
$page = (int)get_query_var('paged');
|
629 |
+
if ($page && $page > 1) {
|
630 |
+
$post->url = trailingslashit($post->url) . "page/" . "$page/";
|
631 |
+
}
|
632 |
+
}
|
633 |
+
return $post;
|
634 |
+
}
|
635 |
+
|
636 |
+
/**
|
637 |
+
* Get information about the Archive
|
638 |
+
* @return array|bool|mixed|object
|
639 |
+
*/
|
640 |
+
private function getArchiveDetails() {
|
641 |
+
if (is_date()) {
|
642 |
+
$archive = false;
|
643 |
+
if (is_day()) {
|
644 |
+
$archive = array(
|
645 |
+
'path' => get_query_var('year') . '-' . get_query_var('monthnum') . '-' . get_query_var('day'),
|
646 |
+
'url' => get_day_link(get_query_var('year'), get_query_var('monthnum'), get_query_var('day')),
|
647 |
+
);
|
648 |
+
} elseif (is_month()) {
|
649 |
+
$archive = array(
|
650 |
+
'path' => get_query_var('year') . '-' . get_query_var('monthnum'),
|
651 |
+
'url' => get_month_link(get_query_var('year'), get_query_var('monthnum')),
|
652 |
+
);
|
653 |
+
} elseif (is_year()) {
|
654 |
+
$archive = array(
|
655 |
+
'path' => get_query_var('year'),
|
656 |
+
'url' => get_year_link(get_query_var('year')),
|
657 |
+
);
|
658 |
+
}
|
659 |
+
|
660 |
+
if (!empty($archive)) {
|
661 |
+
return json_decode(json_encode($archive));
|
662 |
+
}
|
663 |
+
}
|
664 |
+
|
665 |
+
return false;
|
666 |
+
}
|
667 |
+
|
668 |
+
/**
|
669 |
+
* Get the keyword fof this URL
|
670 |
+
* @return array|bool|false|mixed|null|object|string|WP_Error|WP_Term
|
671 |
+
*/
|
672 |
+
private function getTagDetails() {
|
673 |
+
global $tag;
|
674 |
+
$temp = str_replace('…', '...', single_tag_title('', false));
|
675 |
+
|
676 |
+
foreach (get_taxonomies() as $tax) {
|
677 |
+
if ($tax <> 'category') {
|
678 |
+
if ($tag = get_term_by('name', $temp, $tax))
|
679 |
+
break;
|
680 |
+
}
|
681 |
+
}
|
682 |
+
|
683 |
+
return $tag;
|
684 |
+
}
|
685 |
+
|
686 |
+
/**
|
687 |
+
* Get the taxonomies details for this URL
|
688 |
+
* @return array|bool|false|mixed|null|object|string|WP_Error|WP_Term
|
689 |
+
*/
|
690 |
+
private function getTaxonomyDetails() {
|
691 |
+
$term = false;
|
692 |
+
|
693 |
+
if ($id = get_queried_object_id()) {
|
694 |
+
$term = get_term($id);
|
695 |
+
SQ_Classes_Tools::dump($id, $term);
|
696 |
+
}
|
697 |
+
return $term;
|
698 |
+
}
|
699 |
+
|
700 |
+
/**
|
701 |
+
* Get the category details for this URL
|
702 |
+
* @return array|null|object|WP_Error
|
703 |
+
*/
|
704 |
+
private function getCategoryDetails() {
|
705 |
+
return get_category(get_query_var('cat'), false);
|
706 |
+
}
|
707 |
+
|
708 |
+
/**
|
709 |
+
* Get the profile details for this URL
|
710 |
+
* @return object
|
711 |
+
*/
|
712 |
+
public function getAuthorDetails() {
|
713 |
+
$author = false;
|
714 |
+
global $authordata;
|
715 |
+
if (isset($authordata->data)) {
|
716 |
+
$author = $authordata->data;
|
717 |
+
$author->description = get_the_author_meta('description');
|
718 |
+
SQ_Classes_Tools::dump($author);
|
719 |
+
}
|
720 |
+
return $author;
|
721 |
+
}
|
722 |
+
|
723 |
+
|
724 |
+
/**
|
725 |
+
* Get the custom post type
|
726 |
+
* @return object
|
727 |
+
*/
|
728 |
+
public function getCutomPostType() {
|
729 |
+
if ($post_type = get_query_var('post_type')) {
|
730 |
+
if (is_array($post_type) && !empty($post_type)) {
|
731 |
+
$post_type = current($post_type);
|
732 |
+
}
|
733 |
+
}
|
734 |
+
|
735 |
+
if ($post_type <> '') {
|
736 |
+
return $post_type;
|
737 |
+
}
|
738 |
+
|
739 |
+
return false;
|
740 |
+
}
|
741 |
+
|
742 |
+
/**
|
743 |
+
* Check if is the homepage
|
744 |
+
*
|
745 |
+
* @return bool
|
746 |
+
*/
|
747 |
+
public function isHomePage() {
|
748 |
+
global $wp_query;
|
749 |
+
|
750 |
+
return (is_home() || (isset($wp_query->query) && empty($wp_query->query) && !is_preview()));
|
751 |
+
}
|
752 |
+
|
753 |
+
/**
|
754 |
+
* Check if the header is an HTML Header
|
755 |
+
* @return bool
|
756 |
+
*/
|
757 |
+
public function isHtmlHeader() {
|
758 |
+
$headers = headers_list();
|
759 |
+
|
760 |
+
foreach ($headers as $index => $value) {
|
761 |
+
if (strpos($value, ':') !== false) {
|
762 |
+
$exploded = @explode(': ', $value);
|
763 |
+
if (count($exploded) > 1) {
|
764 |
+
$headers[$exploded[0]] = $exploded[1];
|
765 |
+
}
|
766 |
+
}
|
767 |
+
}
|
768 |
+
if (isset($headers['Content-Type'])) {
|
769 |
+
if (strpos($headers['Content-Type'], 'text/html') !== false) {
|
770 |
+
return true;
|
771 |
+
}
|
772 |
+
} else {
|
773 |
+
return false;
|
774 |
+
}
|
775 |
+
|
776 |
+
return false;
|
777 |
+
}
|
778 |
+
|
779 |
+
/**
|
780 |
+
* Is Quick SEO enabled for this page?
|
781 |
+
* @return bool
|
782 |
+
*/
|
783 |
+
public function runSEOForThisPage() {
|
784 |
+
|
785 |
+
if (SQ_Classes_Tools::getValue('sq_use') == 'off') {
|
786 |
+
return false;
|
787 |
+
}
|
788 |
+
|
789 |
+
if (!$this->isHtmlHeader()) {
|
790 |
+
return false;
|
791 |
+
}
|
792 |
+
|
793 |
+
if ($this->_post && isset($this->_post->hash)) {
|
794 |
+
return true;
|
795 |
+
}
|
796 |
+
|
797 |
+
return false;
|
798 |
+
}
|
799 |
+
|
800 |
+
/**
|
801 |
+
* Pack HTML prefix if exists
|
802 |
+
* @param $prefix
|
803 |
+
* @return string
|
804 |
+
*/
|
805 |
+
public function packPrefix($prefix) {
|
806 |
+
if ($prefix <> '') {
|
807 |
+
return ' prefix="' . $prefix . '"';
|
808 |
+
}
|
809 |
+
return '';
|
810 |
+
}
|
811 |
+
|
812 |
+
}
|
models/{SQ_Ico.php → Ico.php}
RENAMED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class
|
4 |
|
5 |
/**
|
6 |
* Images in the BMP format.
|
1 |
<?php
|
2 |
|
3 |
+
class SQ_Models_Ico {
|
4 |
|
5 |
/**
|
6 |
* Images in the BMP format.
|
models/{SQ_Menu.php → Menu.php}
RENAMED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class
|
4 |
|
5 |
/** @var array with the menu content
|
6 |
*
|
1 |
<?php
|
2 |
|
3 |
+
class SQ_Models_Menu {
|
4 |
|
5 |
/** @var array with the menu content
|
6 |
*
|
models/{SQ_Post.php → Post.php}
RENAMED
@@ -1,10 +1,10 @@
|
|
1 |
<?php
|
2 |
|
3 |
/**
|
4 |
-
* Shown in the Post page (called from
|
5 |
*
|
6 |
*/
|
7 |
-
class
|
8 |
|
9 |
/**
|
10 |
* Set the callback to tinymce with javascript SQ_eventChange function call on event
|
@@ -14,9 +14,9 @@ class Model_SQ_Post {
|
|
14 |
public function setCallback($init) {
|
15 |
|
16 |
if (wp_default_editor() == 'tinymce') {
|
17 |
-
$init['setup'] = '
|
18 |
-
$init['onchange_callback'] = '
|
19 |
-
$init['content_css'] = ((isset($init['content_css']) && $init['content_css'] <> '') ? $init['content_css'] . ',' : '' ) . _SQ_THEME_URL_ . 'css/
|
20 |
}
|
21 |
|
22 |
return $init;
|
@@ -31,7 +31,7 @@ class Model_SQ_Post {
|
|
31 |
}
|
32 |
|
33 |
public function addHeadingButton($plugin_array) {
|
34 |
-
$plugin_array['heading'] = _SQ_THEME_URL_ . 'js/tinymce.js';
|
35 |
return $plugin_array;
|
36 |
}
|
37 |
|
@@ -88,6 +88,12 @@ class Model_SQ_Post {
|
|
88 |
return $text;
|
89 |
}
|
90 |
|
|
|
|
|
|
|
|
|
|
|
|
|
91 |
/**
|
92 |
* Add the image for Open Graph
|
93 |
*
|
@@ -423,7 +429,7 @@ class Model_SQ_Post {
|
|
423 |
}
|
424 |
if ($common != true) {
|
425 |
if (!preg_match("/http/i", $value) && !preg_match("/mailto:/i", $value)) {
|
426 |
-
$keywords[] =
|
427 |
$words_sum++;
|
428 |
}
|
429 |
}
|
1 |
<?php
|
2 |
|
3 |
/**
|
4 |
+
* Shown in the Post page (called from SQ_Controllers_Menu)
|
5 |
*
|
6 |
*/
|
7 |
+
class SQ_Models_Post {
|
8 |
|
9 |
/**
|
10 |
* Set the callback to tinymce with javascript SQ_eventChange function call on event
|
14 |
public function setCallback($init) {
|
15 |
|
16 |
if (wp_default_editor() == 'tinymce') {
|
17 |
+
$init['setup'] = 'jQuery.sq_tinymce.setup';
|
18 |
+
$init['onchange_callback'] = 'jQuery.sq_tinymce.callback';
|
19 |
+
$init['content_css'] = ((isset($init['content_css']) && $init['content_css'] <> '') ? $init['content_css'] . ',' : '' ) . _SQ_THEME_URL_ . 'css/frontend' . (SQ_DEBUG ? '' : '.min') . '.css?ver=' . SQ_VERSION_ID;
|
20 |
}
|
21 |
|
22 |
return $init;
|
31 |
}
|
32 |
|
33 |
public function addHeadingButton($plugin_array) {
|
34 |
+
$plugin_array['heading'] = _SQ_THEME_URL_ . 'js/tinymce' . (SQ_DEBUG ? '' : '.min') . '.js';
|
35 |
return $plugin_array;
|
36 |
}
|
37 |
|
88 |
return $text;
|
89 |
}
|
90 |
|
91 |
+
// retrieves the attachment from the file URL
|
92 |
+
function findAttachmentByUrl($image_url) {
|
93 |
+
global $wpdb;
|
94 |
+
return $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->posts WHERE `post_type` = 'attachment' AND `guid` like '%%%s';", $image_url));
|
95 |
+
}
|
96 |
+
|
97 |
/**
|
98 |
* Add the image for Open Graph
|
99 |
*
|
429 |
}
|
430 |
if ($common != true) {
|
431 |
if (!preg_match("/http/i", $value) && !preg_match("/mailto:/i", $value)) {
|
432 |
+
$keywords[] = SQ_Classes_Tools::i18n($value);
|
433 |
$words_sum++;
|
434 |
}
|
435 |
}
|
models/{SQ_PostsList.php → PostsList.php}
RENAMED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class
|
4 |
|
5 |
/** @var integer */
|
6 |
public $post_id;
|
@@ -12,7 +12,7 @@ class Model_SQ_PostsList {
|
|
12 |
*/
|
13 |
public function getTotal($response) {
|
14 |
if (isset($response->posts)) {
|
15 |
-
$ranking =
|
16 |
|
17 |
foreach ($response->posts as $post_id => &$values) {
|
18 |
if (isset($values->error)) {
|
1 |
<?php
|
2 |
|
3 |
+
class SQ_Models_PostsList {
|
4 |
|
5 |
/** @var integer */
|
6 |
public $post_id;
|
12 |
*/
|
13 |
public function getTotal($response) {
|
14 |
if (isset($response->posts)) {
|
15 |
+
$ranking = SQ_Classes_ObjController::getClass('SQ_Classes_Ranking');
|
16 |
|
17 |
foreach ($response->posts as $post_id => &$values) {
|
18 |
if (isset($values->error)) {
|
models/SQ_BlockSettingsSeo.php
DELETED
@@ -1,355 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Model_SQ_BlockSettingsSeo {
|
4 |
-
|
5 |
-
var $eTypes;
|
6 |
-
var $appleSizes;
|
7 |
-
|
8 |
-
public function __construct() {
|
9 |
-
$this->appleSizes = preg_split('/[,]+/', _SQ_MOBILE_ICON_SIZES);
|
10 |
-
}
|
11 |
-
|
12 |
-
/**
|
13 |
-
* Check if ecommerce is installed
|
14 |
-
* @return boolean
|
15 |
-
*/
|
16 |
-
public function isEcommerce() {
|
17 |
-
if (isset($this->eTypes)) {
|
18 |
-
return $this->eTypes;
|
19 |
-
}
|
20 |
-
|
21 |
-
|
22 |
-
$this->eTypes = array('product', 'wpsc-product');
|
23 |
-
foreach ($this->eTypes as $key => $type) {
|
24 |
-
if (!in_array($type, get_post_types())) {
|
25 |
-
unset($this->eTypes[$key]);
|
26 |
-
}
|
27 |
-
}
|
28 |
-
|
29 |
-
if (!empty($this->eTypes)) {
|
30 |
-
return $this->eTypes;
|
31 |
-
}
|
32 |
-
|
33 |
-
return false;
|
34 |
-
}
|
35 |
-
|
36 |
-
/**
|
37 |
-
* Check the google code saved at settings
|
38 |
-
*
|
39 |
-
* @return string
|
40 |
-
*/
|
41 |
-
public function checkGoogleWTCode($code) {
|
42 |
-
|
43 |
-
if ($code <> '') {
|
44 |
-
if (strpos($code, 'content') !== false) {
|
45 |
-
preg_match('/content\\s*=\\s*[\'\"]([^\'\"]+)[\'\"]/i', $code, $result);
|
46 |
-
if (isset($result[1]) && !empty($result[1])) $code = $result[1];
|
47 |
-
}
|
48 |
-
if (strpos($code, '"') !== false) {
|
49 |
-
preg_match('/[\'\"]([^\'\"]+)[\'\"]/i', $code, $result);
|
50 |
-
if (isset($result[1]) && !empty($result[1])) $code = $result[1];
|
51 |
-
}
|
52 |
-
|
53 |
-
if ($code == '') SQ_Error::setError(__("The code for Google Webmaster Tool is incorrect.", _SQ_PLUGIN_NAME_));
|
54 |
-
}
|
55 |
-
return $code;
|
56 |
-
}
|
57 |
-
|
58 |
-
/**
|
59 |
-
* Check the google code saved at settings
|
60 |
-
*
|
61 |
-
* @return string
|
62 |
-
*/
|
63 |
-
public function checkGoogleAnalyticsCode($code) {
|
64 |
-
//echo $code;
|
65 |
-
if ($code <> '') {
|
66 |
-
if (strpos($code, 'GoogleAnalyticsObject') !== false) {
|
67 |
-
preg_match('/ga\(\'create\',[^\'"]*[\'"]([^\'"]+)[\'"],/i', $code, $result);
|
68 |
-
if (isset($result[1]) && !empty($result[1])) $code = $result[1];
|
69 |
-
}
|
70 |
-
|
71 |
-
if (strpos($code, '"') !== false) {
|
72 |
-
preg_match('/[\'\"]([^\'\"]+)[\'\"]/i', $code, $result);
|
73 |
-
if (isset($result[1]) && !empty($result[1])) $code = $result[1];
|
74 |
-
}
|
75 |
-
|
76 |
-
if (strpos($code, 'UA-') === false) {
|
77 |
-
$code = '';
|
78 |
-
SQ_Error::setError(__("The code for Google Analytics is incorrect.", _SQ_PLUGIN_NAME_));
|
79 |
-
}
|
80 |
-
}
|
81 |
-
return trim($code);
|
82 |
-
}
|
83 |
-
|
84 |
-
/**
|
85 |
-
* Check the Facebook code saved at settings
|
86 |
-
*
|
87 |
-
* @return string
|
88 |
-
*/
|
89 |
-
public function checkFavebookInsightsCode($code) {
|
90 |
-
$id = '';
|
91 |
-
if ($code <> '') {
|
92 |
-
$code = trim($code);
|
93 |
-
if (strpos($code, '"') !== false) {
|
94 |
-
preg_match('/[\'\"]([^\'\"]+)[\'\"]/i', $code, $result);
|
95 |
-
if (isset($result[1]) && !empty($result[1])) {
|
96 |
-
$id = $result[1];
|
97 |
-
}
|
98 |
-
}
|
99 |
-
|
100 |
-
if (strpos($code, 'facebook.com/') !== false) {
|
101 |
-
preg_match('/facebook.com\/([^\/]+)/i', $code, $result);
|
102 |
-
if (isset($result[1]) && !empty($result[1])) {
|
103 |
-
if (is_string($result[1])) {
|
104 |
-
$response = SQ_Action::apiCall('sq/seo/facebook-id', array('profile' => $result[1]));
|
105 |
-
if ($response && $json = json_decode($response)) {
|
106 |
-
$id = $json->code;
|
107 |
-
}
|
108 |
-
} elseif (is_numeric($result[1])) {
|
109 |
-
$id = $result[1];
|
110 |
-
}
|
111 |
-
}
|
112 |
-
}else {
|
113 |
-
if (is_string($code)) {
|
114 |
-
$response = SQ_Action::apiCall('sq/seo/facebook-id', array('profile' => $code));
|
115 |
-
if ($response && $json = json_decode($response)) {
|
116 |
-
$id = $json->code;
|
117 |
-
}
|
118 |
-
} elseif (is_numeric($code)) {
|
119 |
-
$id = $code;
|
120 |
-
}
|
121 |
-
}
|
122 |
-
|
123 |
-
if ($id == '') {
|
124 |
-
SQ_Error::setError(__("The code for Facebook is incorrect.", _SQ_PLUGIN_NAME_));
|
125 |
-
}
|
126 |
-
}
|
127 |
-
return $id;
|
128 |
-
}
|
129 |
-
|
130 |
-
/**
|
131 |
-
* Check the Pinterest code saved at settings
|
132 |
-
*
|
133 |
-
* @return string
|
134 |
-
*/
|
135 |
-
public function checkPinterestCode($code) {
|
136 |
-
if ($code <> '') {
|
137 |
-
if (strpos($code, 'content') !== false) {
|
138 |
-
preg_match('/content\\s*=\\s*[\'\"]([^\'\"]+)[\'\"]/i', $code, $result);
|
139 |
-
if (isset($result[1]) && !empty($result[1])) $code = $result[1];
|
140 |
-
}
|
141 |
-
|
142 |
-
if (strpos($code, '"') !== false) {
|
143 |
-
preg_match('/[\'\"]([^\'\"]+)[\'\"]/i', $code, $result);
|
144 |
-
if (isset($result[1]) && !empty($result[1])) $code = $result[1];
|
145 |
-
}
|
146 |
-
|
147 |
-
if ($code == '') SQ_Error::setError(__("The code for Pinterest is incorrect.", _SQ_PLUGIN_NAME_));
|
148 |
-
}
|
149 |
-
return $code;
|
150 |
-
}
|
151 |
-
|
152 |
-
/**
|
153 |
-
* Check the Bing code saved at settings
|
154 |
-
*
|
155 |
-
* @return string
|
156 |
-
*/
|
157 |
-
public function checkBingWTCode($code) {
|
158 |
-
if ($code <> '') {
|
159 |
-
if (strpos($code, 'content') !== false) {
|
160 |
-
preg_match('/content\\s*=\\s*[\'\"]([^\'\"]+)[\'\"]/i', $code, $result);
|
161 |
-
if (isset($result[1]) && !empty($result[1])) $code = $result[1];
|
162 |
-
}
|
163 |
-
|
164 |
-
if (strpos($code, '"') !== false) {
|
165 |
-
preg_match('/[\'\"]([^\'\"]+)[\'\"]/i', $code, $result);
|
166 |
-
if (isset($result[1]) && !empty($result[1])) $code = $result[1];
|
167 |
-
}
|
168 |
-
|
169 |
-
if ($code == '') SQ_Error::setError(__("The code for Bing is incorrect.", _SQ_PLUGIN_NAME_));
|
170 |
-
}
|
171 |
-
return $code;
|
172 |
-
}
|
173 |
-
|
174 |
-
/**
|
175 |
-
* Check the twitter account
|
176 |
-
*
|
177 |
-
* @return string
|
178 |
-
*/
|
179 |
-
public function checkTwitterAccount($account) {
|
180 |
-
if (SQ_ObjController::getModel('SQ_Frontend')->getTwitterAccount($account) === false) {
|
181 |
-
SQ_Error::setError(__("The twitter account is incorrect", _SQ_PLUGIN_NAME_));
|
182 |
-
}
|
183 |
-
if ($account <> '' && strpos($account, 'twitter.') === false) {
|
184 |
-
$account = 'https://twitter.com/' . $account;
|
185 |
-
}
|
186 |
-
return $account;
|
187 |
-
}
|
188 |
-
|
189 |
-
/**
|
190 |
-
* Check the google + account
|
191 |
-
*
|
192 |
-
* @return string
|
193 |
-
*/
|
194 |
-
public function checkGoogleAccount($account) {
|
195 |
-
if ($account <> '' && strpos($account, 'google.') === false) {
|
196 |
-
$account = 'https://plus.google.com/' . $account;
|
197 |
-
}
|
198 |
-
return str_replace(" ", "+", $account);
|
199 |
-
}
|
200 |
-
|
201 |
-
/**
|
202 |
-
* Check the google + account
|
203 |
-
*
|
204 |
-
* @return string
|
205 |
-
*/
|
206 |
-
public function checkLinkeinAccount($account) {
|
207 |
-
if ($account <> '' && strpos($account, 'linkedin.') === false) {
|
208 |
-
$account = 'https://www.linkedin.com/in/' . $account;
|
209 |
-
}
|
210 |
-
return $account;
|
211 |
-
}
|
212 |
-
|
213 |
-
/**
|
214 |
-
* Check the facebook account
|
215 |
-
*
|
216 |
-
* @return string
|
217 |
-
*/
|
218 |
-
public function checkFacebookAccount($account) {
|
219 |
-
if ($account <> '' && strpos($account, 'facebook.com') === false) {
|
220 |
-
$account = 'https://www.facebook.com/' . $account;
|
221 |
-
}
|
222 |
-
return $account;
|
223 |
-
}
|
224 |
-
|
225 |
-
public function checkPinterestAccount($account) {
|
226 |
-
if ($account <> '' && strpos($account, 'pinterest.com') === false) {
|
227 |
-
$account = 'https://www.pinterest.com/' . $account;
|
228 |
-
}
|
229 |
-
return $account;
|
230 |
-
}
|
231 |
-
|
232 |
-
public function checkInstagramAccount($account) {
|
233 |
-
if ($account <> '' && strpos($account, 'instagram.com') === false) {
|
234 |
-
$account = 'https://www.instagram.com/' . $account;
|
235 |
-
}
|
236 |
-
return $account;
|
237 |
-
}
|
238 |
-
|
239 |
-
|
240 |
-
/**
|
241 |
-
* Add the image to the root path
|
242 |
-
*
|
243 |
-
* @param string $file
|
244 |
-
* @param string $path
|
245 |
-
* @return array [name (the name of the file), favicon (the path of the ico), message (the returned message)]
|
246 |
-
*
|
247 |
-
*/
|
248 |
-
public function addFavicon($file, $path = ABSPATH) {
|
249 |
-
|
250 |
-
/* get the file extension */
|
251 |
-
$file_name = explode('.', $file['name']);
|
252 |
-
$file_type = strtolower($file_name[count($file_name) - 1]);
|
253 |
-
|
254 |
-
$out = array();
|
255 |
-
$out['tmp'] = _SQ_CACHE_DIR_ . strtolower(md5($file['name']) . '_tmp.' . $file_type);
|
256 |
-
$out['favicon'] = _SQ_CACHE_DIR_ . strtolower(md5($file['name']) . '.' . $file_type);
|
257 |
-
foreach ($this->appleSizes as $size) {
|
258 |
-
$out['favicon' . $size] = _SQ_CACHE_DIR_ . strtolower(md5($file['name']) . '.' . $file_type . $size);
|
259 |
-
}
|
260 |
-
|
261 |
-
/* if the file has a name */
|
262 |
-
if (!empty($file['name'])) {
|
263 |
-
/* Check the extension */
|
264 |
-
$file_type = strtolower($file_type);
|
265 |
-
$files = array('ico', 'jpeg', 'jpg', 'gif', 'png');
|
266 |
-
$key = in_array($file_type, $files);
|
267 |
-
|
268 |
-
if (!$key) {
|
269 |
-
SQ_Error::setError(__("File type error: Only ICO, JPEG, JPG, GIF or PNG files are allowed.", _SQ_PLUGIN_NAME_));
|
270 |
-
return;
|
271 |
-
}
|
272 |
-
|
273 |
-
/* Check for error messages */
|
274 |
-
if (!$this->checkFunctions()) {
|
275 |
-
SQ_Error::setError(__("GD error: The GD library must be installed on your server.", _SQ_PLUGIN_NAME_));
|
276 |
-
return;
|
277 |
-
} else {
|
278 |
-
/* Delete the previous file if exists */
|
279 |
-
if (is_file($out['favicon'])) {
|
280 |
-
if (!unlink($out['favicon'])) {
|
281 |
-
SQ_Error::setError(__("Delete error: Could not delete the old favicon.", _SQ_PLUGIN_NAME_));
|
282 |
-
return;
|
283 |
-
}
|
284 |
-
}
|
285 |
-
|
286 |
-
/* Upload the file */
|
287 |
-
if (!move_uploaded_file($file['tmp_name'], $out['tmp'])) {
|
288 |
-
SQ_Error::setError(__("Upload error: Could not upload the favicon.", _SQ_PLUGIN_NAME_));
|
289 |
-
return;
|
290 |
-
}
|
291 |
-
|
292 |
-
/* Change the permision */
|
293 |
-
if (!chmod($out['tmp'], 0755)) {
|
294 |
-
SQ_Error::setError(__("Permission error: Could not change the favicon permissions.", _SQ_PLUGIN_NAME_));
|
295 |
-
return;
|
296 |
-
}
|
297 |
-
|
298 |
-
if ($file_type <> 'ico') {
|
299 |
-
/* Save the file */
|
300 |
-
if ($out['tmp']) {
|
301 |
-
$ico = SQ_ObjController::getModel('SQ_Ico');
|
302 |
-
$ico->set_image($out['tmp'], array(32, 32));
|
303 |
-
if ($ico->save_ico($out['favicon'])) {
|
304 |
-
if (file_exists($path . "/" . 'favicon.ico')) {
|
305 |
-
$ico->remove_ico($path . "/" . 'favicon.ico');
|
306 |
-
}
|
307 |
-
if (!is_multisite()) {
|
308 |
-
$ico->save_ico($path . "/" . 'favicon.ico');
|
309 |
-
}
|
310 |
-
}
|
311 |
-
foreach ($this->appleSizes as $size) {
|
312 |
-
$ico->set_image($out['tmp'], array($size, $size));
|
313 |
-
$ico->save_ico($out['favicon' . $size]);
|
314 |
-
}
|
315 |
-
} else {
|
316 |
-
SQ_Error::setError(__("ICO Error: Could not create the ICO from file. Try with another file type.", _SQ_PLUGIN_NAME_));
|
317 |
-
}
|
318 |
-
} else {
|
319 |
-
copy($out['tmp'], $out['favicon']);
|
320 |
-
foreach ($this->appleSizes as $size) {
|
321 |
-
copy($out['tmp'], $out['favicon' . $size]);
|
322 |
-
}
|
323 |
-
|
324 |
-
unset($out['tmp']);
|
325 |
-
if (file_exists($path . "/" . 'favicon.ico')) {
|
326 |
-
$ico = SQ_ObjController::getModel('SQ_Ico');
|
327 |
-
$ico->remove_ico($path . "/" . 'favicon.ico');
|
328 |
-
}
|
329 |
-
if (!is_multisite()) {
|
330 |
-
$ico = SQ_ObjController::getModel('SQ_Ico');
|
331 |
-
$ico->save_ico($path . "/" . 'favicon.ico');
|
332 |
-
}
|
333 |
-
}
|
334 |
-
unset($out['tmp']);
|
335 |
-
$out['message'] = __("The favicon has been updated.", _SQ_PLUGIN_NAME_);
|
336 |
-
|
337 |
-
return $out;
|
338 |
-
}
|
339 |
-
}
|
340 |
-
}
|
341 |
-
|
342 |
-
private function checkFunctions() {
|
343 |
-
$required_functions = array('getimagesize', 'imagecreatefromstring', 'imagecreatetruecolor', 'imagecolortransparent', 'imagecolorallocatealpha', 'imagealphablending', 'imagesavealpha', 'imagesx', 'imagesy', 'imagecopyresampled',);
|
344 |
-
|
345 |
-
foreach ($required_functions as $function) {
|
346 |
-
if (!function_exists($function)) {
|
347 |
-
SQ_Error::setError("The PHP_ICO class was unable to find the $function function, which is part of the GD library. Ensure that the system has the GD library installed and that PHP has access to it through a PHP interface, such as PHP's GD module. Since this function was not found, the library will be unable to create ICO files.");
|
348 |
-
return false;
|
349 |
-
}
|
350 |
-
}
|
351 |
-
|
352 |
-
return true;
|
353 |
-
}
|
354 |
-
|
355 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
models/SQ_Blocksearch.php
DELETED
@@ -1,10 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/**
|
4 |
-
* The model class for SQ_Blocksearch
|
5 |
-
*
|
6 |
-
*/
|
7 |
-
class Model_SQ_Blocksearch {
|
8 |
-
|
9 |
-
|
10 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
models/SQ_Blockseo.php
DELETED
@@ -1,41 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/**
|
4 |
-
* The model class for SQ_Blockseo
|
5 |
-
*
|
6 |
-
*/
|
7 |
-
class Model_SQ_Blockseo {
|
8 |
-
|
9 |
-
/**
|
10 |
-
* Get the advanced SEO from database
|
11 |
-
* @global integer $sq_postID
|
12 |
-
* @global type $wpdb
|
13 |
-
* @return string
|
14 |
-
*/
|
15 |
-
public function getAdvSeo() {
|
16 |
-
global $sq_postID, $wpdb;
|
17 |
-
$meta = array();
|
18 |
-
$str = '';
|
19 |
-
|
20 |
-
if ((int) $sq_postID == 0)
|
21 |
-
return;
|
22 |
-
|
23 |
-
$meta = array('_sq_fp_title' => '',
|
24 |
-
'_sq_fp_description' => '',
|
25 |
-
'_sq_fp_ogimage' => '');
|
26 |
-
|
27 |
-
$sql = "SELECT `meta_id`, `meta_value`, `meta_key`
|
28 |
-
FROM `" . $wpdb->postmeta . "`
|
29 |
-
WHERE `post_id`=" . (int) $sq_postID;
|
30 |
-
|
31 |
-
$rows = $wpdb->get_results($sql);
|
32 |
-
|
33 |
-
foreach ($rows as $row) {
|
34 |
-
if (array_key_exists($row->meta_key, $meta))
|
35 |
-
$meta[$row->meta_key] = $row->meta_value;
|
36 |
-
}
|
37 |
-
|
38 |
-
return $meta;
|
39 |
-
}
|
40 |
-
|
41 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
models/SQ_Frontend.php
DELETED
@@ -1,2136 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Model_SQ_Frontend {
|
4 |
-
|
5 |
-
public $buffer;
|
6 |
-
|
7 |
-
/** @var object Current post */
|
8 |
-
private $post = null;
|
9 |
-
|
10 |
-
private $post_type;
|
11 |
-
private $post_types;
|
12 |
-
|
13 |
-
/** @var string url */
|
14 |
-
private $url;
|
15 |
-
private $author;
|
16 |
-
|
17 |
-
/** @var string */
|
18 |
-
private $title;
|
19 |
-
|
20 |
-
/** @var string */
|
21 |
-
private $description;
|
22 |
-
|
23 |
-
/** @var array */
|
24 |
-
private $keywords;
|
25 |
-
|
26 |
-
/** @var array */
|
27 |
-
private $thumb_images;
|
28 |
-
private $thumb_video;
|
29 |
-
private $custom_og_image = false;
|
30 |
-
|
31 |
-
/** @var integer */
|
32 |
-
private $min_title_length = 20;
|
33 |
-
|
34 |
-
/** @var integer */
|
35 |
-
private $max_title_length = 75;
|
36 |
-
|
37 |
-
/** @var integer */
|
38 |
-
private $max_description_length = 170;
|
39 |
-
|
40 |
-
/** @var integer */
|
41 |
-
private $min_description_length = 70;
|
42 |
-
|
43 |
-
/** @var integer */
|
44 |
-
private $max_keywords = 8;
|
45 |
-
|
46 |
-
/** @var array Meta custom content */
|
47 |
-
private $meta = array();
|
48 |
-
|
49 |
-
public function __construct() {
|
50 |
-
SQ_ObjController::getController('SQ_Tools', false);
|
51 |
-
$this->post_types = SQ_Tools::$options['sq_post_types'];
|
52 |
-
}
|
53 |
-
|
54 |
-
/** @var meta from other plugins */
|
55 |
-
/**
|
56 |
-
* Write the signature
|
57 |
-
* @return string
|
58 |
-
*/
|
59 |
-
public function setStart() {
|
60 |
-
return "\n\n<!-- Squirrly SEO Plugin " . SQ_VERSION . ", visit: http://plugin.squirrly.co/ -->\n";
|
61 |
-
}
|
62 |
-
|
63 |
-
/**
|
64 |
-
* Set the post
|
65 |
-
*
|
66 |
-
* @param null|WP_Post $newpost
|
67 |
-
* @return array|null|object|WP_Post
|
68 |
-
*/
|
69 |
-
public function setPost($newpost = null) {
|
70 |
-
global $post;
|
71 |
-
|
72 |
-
if (isset($newpost)) {
|
73 |
-
$post = $newpost;
|
74 |
-
}
|
75 |
-
|
76 |
-
if (function_exists('is_shop') && is_shop()) {
|
77 |
-
$this->post = get_post(wc_get_page_id('shop'));
|
78 |
-
$this->post_type = 'shop';
|
79 |
-
} else {
|
80 |
-
if (isset($post->ID)) {
|
81 |
-
$this->post = get_post($post->ID);
|
82 |
-
}
|
83 |
-
|
84 |
-
if (function_exists('is_product') && is_product()) {
|
85 |
-
$this->post_type = 'product';
|
86 |
-
} elseif (function_exists('is_checkout') && is_checkout()) {
|
87 |
-
$this->post_type = 'checkout';
|
88 |
-
} elseif (is_single()) {
|
89 |
-
$this->post_type = 'post';
|
90 |
-
} elseif (is_page()) {
|
91 |
-
$this->post_type = 'page';
|
92 |
-
} elseif (is_category()) {
|
93 |
-
$this->post_type = 'category';
|
94 |
-
} elseif (is_tag()) {
|
95 |
-
$this->post_type = 'tag';
|
96 |
-
} elseif (is_author()) {
|
97 |
-
$this->post_type = 'author';
|
98 |
-
} elseif (is_search()) {
|
99 |
-
$this->post_type = 'search';
|
100 |
-
} elseif (is_archive()) {
|
101 |
-
$this->post_type = 'archive';
|
102 |
-
} else {
|
103 |
-
$this->post_type = get_post_type();
|
104 |
-
}
|
105 |
-
}
|
106 |
-
}
|
107 |
-
|
108 |
-
/**
|
109 |
-
* End the signature
|
110 |
-
* @return string
|
111 |
-
*/
|
112 |
-
public function setEnd() {
|
113 |
-
return "<!-- /Squirrly SEO Plugin -->\n\n";
|
114 |
-
}
|
115 |
-
|
116 |
-
/* * *****USE BUFFER****** */
|
117 |
-
|
118 |
-
/**
|
119 |
-
* Start the buffer record
|
120 |
-
* @return string
|
121 |
-
*/
|
122 |
-
public function startBuffer() {
|
123 |
-
ob_start(array($this, 'getBuffer'));
|
124 |
-
}
|
125 |
-
|
126 |
-
/**
|
127 |
-
* Get the loaded buffer and change it
|
128 |
-
*
|
129 |
-
* @param string $buffer
|
130 |
-
* @return string
|
131 |
-
*/
|
132 |
-
public function getBuffer($buffer) {
|
133 |
-
if (isset($this->buffer)) {
|
134 |
-
return $this->buffer;
|
135 |
-
}
|
136 |
-
|
137 |
-
$this->buffer = $this->setMetaInBuffer($buffer);
|
138 |
-
return $this->buffer;
|
139 |
-
}
|
140 |
-
|
141 |
-
public function checkHandles() {
|
142 |
-
try {
|
143 |
-
if (function_exists('ob_list_handlers')) {
|
144 |
-
$buffers = @ob_list_handlers();
|
145 |
-
|
146 |
-
if (sizeof($buffers) > 0) {
|
147 |
-
if (!in_array(get_class($this) . '::getBuffer', $buffers)) {
|
148 |
-
$this->startBuffer();
|
149 |
-
}
|
150 |
-
}
|
151 |
-
}
|
152 |
-
} catch (Exception $ex) {
|
153 |
-
//error
|
154 |
-
}
|
155 |
-
}
|
156 |
-
|
157 |
-
/**
|
158 |
-
* Should Squirrly Load for this page?
|
159 |
-
* @return bool
|
160 |
-
*/
|
161 |
-
public function is_squirrly() {
|
162 |
-
if (SQ_Tools::getValue('sq_use') == 'off') {
|
163 |
-
return false;
|
164 |
-
}
|
165 |
-
|
166 |
-
if (!$this->isHtmlHeader()) {
|
167 |
-
return false;
|
168 |
-
}
|
169 |
-
|
170 |
-
if (is_404()){
|
171 |
-
return false;
|
172 |
-
}
|
173 |
-
|
174 |
-
if ($this->isHomePage() || is_single() || is_preview() || is_page() || is_archive() || is_author() || is_category() || is_tag() || is_search() || (!empty($this->post_types) && in_array($this->post_type, $this->post_types))) {
|
175 |
-
return true;
|
176 |
-
}
|
177 |
-
|
178 |
-
return false;
|
179 |
-
}
|
180 |
-
|
181 |
-
/**
|
182 |
-
* Change the title, description and keywords in site's buffer
|
183 |
-
*
|
184 |
-
* @return string
|
185 |
-
*/
|
186 |
-
public function setMetaInBuffer($buffer) {
|
187 |
-
|
188 |
-
//if the title is already shown
|
189 |
-
if (isset($this->url)) {
|
190 |
-
return $buffer;
|
191 |
-
}
|
192 |
-
//get the post from shop if woocommerce is installed
|
193 |
-
if (!isset($this->post)) {
|
194 |
-
$this->setPost();
|
195 |
-
}
|
196 |
-
|
197 |
-
if ($this->is_squirrly()) {
|
198 |
-
//update ... please monitor
|
199 |
-
if (is_single() || is_page()) {
|
200 |
-
if (!isset($this->post->ID)) {
|
201 |
-
return $buffer;
|
202 |
-
}
|
203 |
-
}
|
204 |
-
|
205 |
-
if (strpos($buffer, '<head') !== false) {
|
206 |
-
$this->meta['blogname'] = get_bloginfo('name');
|
207 |
-
//Get the url
|
208 |
-
$this->url = $this->getCanonicalUrl();
|
209 |
-
//Get the title
|
210 |
-
$this->title = $this->getCustomTitle();
|
211 |
-
//Set the description and Keywords in case of default
|
212 |
-
$this->getCustomDescription();
|
213 |
-
$this->getCustomKeyword();
|
214 |
-
|
215 |
-
/* Get the thumb image from post */
|
216 |
-
$this->thumb_images = $this->getImagesFromContent();
|
217 |
-
|
218 |
-
if (SQ_Tools::$options['sq_auto_title'] == 1 && isset($this->title) && $this->title <> '') {
|
219 |
-
$buffer = @preg_replace('/<title[^<>]*>([^<>]*)<\/title>/si', '', $buffer, -1);
|
220 |
-
}
|
221 |
-
if (SQ_Tools::$options['sq_auto_description'] == 1) {
|
222 |
-
//clear the existing description and keywords
|
223 |
-
$buffer = @preg_replace('/<meta[^>]*(name|property)=["\'](description|keywords)["\'][^>]*content=["\'][^"\'>]*["\'][^>]*>[\n\r]*/si', '', $buffer, -1);
|
224 |
-
}
|
225 |
-
if (SQ_Tools::$options['sq_auto_facebook'] == 1) {
|
226 |
-
$buffer = @preg_replace('/<meta[^>]*(name|property)=["\'](og:|article:)[^"\'>]+["\'][^>]*content=["\'][^"\'>]+["\'][^>]*>[\n\r]*/si', '', $buffer, -1);
|
227 |
-
}
|
228 |
-
if (SQ_Tools::$options['sq_auto_twitter'] == 1) {
|
229 |
-
$buffer = @preg_replace('/<meta[^>]*(name|property)=["\'](twitter:)[^"\'>]+["\'][^>]*content=["\'][^"\'>]+["\'][^>]*>[\n\r]*/si', '', $buffer, -1);
|
230 |
-
}
|
231 |
-
|
232 |
-
if (SQ_Tools::$options['sq_auto_favicon'] == 1) {
|
233 |
-
$buffer = @preg_replace('/<link[^>]*rel=[^>]*(shortcut icon)[^>]*>[\n\r]*/si', '', $buffer, -1);
|
234 |
-
}
|
235 |
-
|
236 |
-
if (SQ_Tools::$options['sq_auto_canonical'] == 1) {
|
237 |
-
$buffer = @preg_replace('/<link[^>]*rel=[^>]*(canonical)[^>]*>[\n\r]*/si', '', $buffer, -1);
|
238 |
-
}
|
239 |
-
if (SQ_Tools::$options['sq_auto_jsonld'] == 1) {
|
240 |
-
$buffer = @preg_replace('/<script[^>]*type=["\']application\/ld\+json["\'][^>]*>[^>]*<\/script>[\n\r]*/si', '', $buffer, -1);
|
241 |
-
}
|
242 |
-
|
243 |
-
$buffer = @preg_replace('/(<head(\s[^>]*|)>)/si', sprintf("$1\n%s", $this->getHeader()) . "\n", $buffer, 1);
|
244 |
-
|
245 |
-
return $buffer;
|
246 |
-
}
|
247 |
-
} else {
|
248 |
-
global $sq_is_sitemap;
|
249 |
-
if (isset($sq_is_sitemap) && $sq_is_sitemap) {
|
250 |
-
$buffer = @preg_replace('/<\/sitemapindex>(.*)?/si', "</sitemapindex>", $buffer);
|
251 |
-
$buffer = @preg_replace('/<\/urlset>(.*)?/si', "</urlset>", $buffer);
|
252 |
-
$buffer = trim($buffer);
|
253 |
-
}
|
254 |
-
}
|
255 |
-
|
256 |
-
|
257 |
-
return $buffer;
|
258 |
-
}
|
259 |
-
|
260 |
-
/* * ********************** */
|
261 |
-
|
262 |
-
/**
|
263 |
-
* Overwrite the header with the correct parameters
|
264 |
-
*
|
265 |
-
* @return string
|
266 |
-
*/
|
267 |
-
public function getHeader() {
|
268 |
-
$ret = '';
|
269 |
-
|
270 |
-
if (SQ_Tools::$options['sq_auto_title'] == 1 && isset($this->title) && $this->title <> '') {
|
271 |
-
$ret .= sprintf("<title>%s</title>", $this->title) . "\n";
|
272 |
-
}
|
273 |
-
|
274 |
-
$ret .= $this->setStart();
|
275 |
-
//Add description in homepage if is set or add description in other pages if is not home page
|
276 |
-
if ((SQ_Tools::$options['sq_auto_description'] == 1 && $this->isHomePage()) || !$this->isHomePage()) {
|
277 |
-
$ret .= $this->getCustomDescription() . "\n";
|
278 |
-
$ret .= $this->getCustomKeyword() . "\n";
|
279 |
-
}
|
280 |
-
|
281 |
-
if (SQ_Tools::$options['sq_auto_canonical'] == 1) {
|
282 |
-
$ret .= $this->setCanonical();
|
283 |
-
$ret .= $this->setRelPrevNext();
|
284 |
-
}
|
285 |
-
|
286 |
-
if (SQ_Tools::$options['sq_auto_sitemap'] == 1) {
|
287 |
-
$ret .= $this->getXMLSitemap();
|
288 |
-
}
|
289 |
-
/* Auto setting */
|
290 |
-
|
291 |
-
if (SQ_Tools::$options['sq_auto_favicon'] == 1) {
|
292 |
-
$ret .= $this->getFavicon();
|
293 |
-
}
|
294 |
-
|
295 |
-
if (SQ_Tools::$options['sq_auto_meta'] == 1) {
|
296 |
-
$ret .= "\n";
|
297 |
-
$ret .= $this->getGooglePlusMeta();
|
298 |
-
$ret .= $this->getLanguage();
|
299 |
-
$ret .= $this->getCopyright();
|
300 |
-
$ret .= $this->getDublinCore();
|
301 |
-
}
|
302 |
-
if (SQ_Tools::$options['sq_auto_facebook'] == 1) {
|
303 |
-
add_filter('jetpack_enable_opengraph', '__return_false', 99);
|
304 |
-
$ret .= $this->getOpenGraph() . "\n";
|
305 |
-
}
|
306 |
-
|
307 |
-
if (SQ_Tools::$options['sq_auto_twitter'] == 1) {
|
308 |
-
$ret .= $this->getTwitterCard() . "\n";
|
309 |
-
}
|
310 |
-
/* SEO optimizer tool */
|
311 |
-
$ret .= $this->getGoogleWT();
|
312 |
-
$ret .= $this->getGoogleAnalytics();
|
313 |
-
$ret .= $this->getFacebookPixel();
|
314 |
-
$ret .= $this->getFacebookIns();
|
315 |
-
$ret .= $this->getBingWT();
|
316 |
-
$ret .= $this->getPinterest();
|
317 |
-
$ret .= $this->getAlexaT();
|
318 |
-
|
319 |
-
if (SQ_Tools::$options['sq_auto_jsonld'] == 1) {
|
320 |
-
$ret .= $this->getJsonLD() . "\n";
|
321 |
-
}
|
322 |
-
|
323 |
-
$ret .= $this->setEnd();
|
324 |
-
return $ret;
|
325 |
-
}
|
326 |
-
|
327 |
-
|
328 |
-
public function getTwitterCard() {
|
329 |
-
$meta = "\n";
|
330 |
-
|
331 |
-
//Title and Description is required
|
332 |
-
if ($this->title == '' || $this->description == '') {
|
333 |
-
return;
|
334 |
-
}
|
335 |
-
|
336 |
-
$sq_twitter_creator = SQ_Tools::$options['sq_twitter_account'];
|
337 |
-
$sq_twitter_site = SQ_Tools::$options['sq_twitter_account'];
|
338 |
-
|
339 |
-
if (SQ_Tools::$options['sq_auto_twittersize'] == 'summary_large_image' && !empty($this->thumb_images)) {
|
340 |
-
$meta .= '<meta name="twitter:card" content="summary_large_image" />' . "\n";
|
341 |
-
} else {
|
342 |
-
$meta .= '<meta name="twitter:card" content="summary" />' . "\n";
|
343 |
-
}
|
344 |
-
|
345 |
-
$meta .= (($sq_twitter_creator <> '') ? sprintf('<meta name="twitter:creator" content="%s" />', $this->getTwitterAccount($sq_twitter_creator)) . "\n" : '');
|
346 |
-
$meta .= (($sq_twitter_site <> '') ? sprintf('<meta name="twitter:site" content="%s" />', $this->getTwitterAccount($sq_twitter_creator)) . "\n" : '');
|
347 |
-
$meta .= sprintf('<meta name="twitter:url" content="%s">', $this->url) . "\n";
|
348 |
-
$meta .= sprintf('<meta name="twitter:title" content="%s">', apply_filters('sq_twitter_card_title', $this->title)) . "\n";
|
349 |
-
$meta .= (($this->description <> '') ? sprintf('<meta name="twitter:description" content="%s">', apply_filters('sq_twitter_card_description', ($this->description . ' | ' . $this->meta['blogname']))) . "\n" : '');
|
350 |
-
$meta .= (!empty($this->thumb_images) ? sprintf('<meta name="twitter:image" content="%s">', $this->thumb_images[0]['src']) . "\n" : '');
|
351 |
-
$meta .= (($this->meta['blogname'] <> '') ? sprintf('<meta name="twitter:domain" content="%s">', $this->meta['blogname']) . "\n" : '');
|
352 |
-
|
353 |
-
return apply_filters('sq_twitter_card_meta', $meta);
|
354 |
-
}
|
355 |
-
|
356 |
-
/**
|
357 |
-
* Get the twitter account from url
|
358 |
-
*
|
359 |
-
* @param string $account
|
360 |
-
* @return string | false
|
361 |
-
*/
|
362 |
-
public function getTwitterAccount($account) {
|
363 |
-
if ($account <> '') {
|
364 |
-
if (strpos($account, 'twitter.com') !== false) {
|
365 |
-
preg_match('/twitter.com\/([@1-9a-z_-]+)/i', $account, $result);
|
366 |
-
if (isset($result[1]) && !empty($result[1])) {
|
367 |
-
return '@' . str_replace('@', '', $result[1]);
|
368 |
-
}
|
369 |
-
} else {
|
370 |
-
preg_match('/([@1-9a-z_-]+)/i', $account, $result);
|
371 |
-
if (isset($result[1]) && !empty($result[1])) {
|
372 |
-
return '@' . str_replace('@', '', $result[1]);
|
373 |
-
}
|
374 |
-
}
|
375 |
-
} else {
|
376 |
-
return '';
|
377 |
-
}
|
378 |
-
return false;
|
379 |
-
}
|
380 |
-
|
381 |
-
/**
|
382 |
-
* Get the Open Graph Protocol
|
383 |
-
* @return string
|
384 |
-
*/
|
385 |
-
public function getOpenGraph() {
|
386 |
-
$meta = "\n";
|
387 |
-
$image = '';
|
388 |
-
|
389 |
-
//Title and Description is required
|
390 |
-
if ($this->title == '' || $this->description == '') {
|
391 |
-
return;
|
392 |
-
}
|
393 |
-
|
394 |
-
if (!isset($this->thumb_video) || $this->thumb_video == '') {
|
395 |
-
$videos = $this->getVideosFromContent();
|
396 |
-
if (isset($videos[0])) {
|
397 |
-
$this->thumb_video = $videos[0];
|
398 |
-
}
|
399 |
-
}
|
400 |
-
|
401 |
-
if ($image == '' && $this->url == '') {
|
402 |
-
return;
|
403 |
-
}
|
404 |
-
//GET THE URL
|
405 |
-
$meta .= sprintf('<meta property="og:url" content="%s" />', apply_filters('sq_open_graph_url', $this->url)) . "\n";
|
406 |
-
if (!empty($this->thumb_images)) {
|
407 |
-
foreach ($this->thumb_images as $image) {
|
408 |
-
$meta .= sprintf('<meta property="og:image" content="%s" />', $image['src']) . "\n";
|
409 |
-
$meta .= sprintf('<meta property="og:image:width" content="%s" />', ((isset($image['width']) && $image['width'] <> '') ? (int)$image['width'] : 500)) . "\n";
|
410 |
-
if (isset($image['height']) && $image['height'] <> '')
|
411 |
-
$meta .= sprintf('<meta property="og:image:height" content="%s" />', (int)$image['height']) . "\n";
|
412 |
-
}
|
413 |
-
}
|
414 |
-
|
415 |
-
if ((isset($this->thumb_video) && $this->thumb_video <> '')) {
|
416 |
-
$this->thumb_video = preg_replace('/(?:http(?:s)?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user)\/))([^\?&\"\'>\s]+)/si', "https://www.youtube.com/v/$1", $this->thumb_video);
|
417 |
-
$meta .= sprintf('<meta property="og:video" content="%s" />', $this->thumb_video) . "\n";
|
418 |
-
$meta .= sprintf('<meta property="og:video:width" content="%s" />', 500) . "\n";
|
419 |
-
$meta .= sprintf('<meta property="og:video:height" content="%s" />', 280) . "\n";
|
420 |
-
}
|
421 |
-
|
422 |
-
$meta .= sprintf('<meta property="og:title" content="%s" />', apply_filters('sq_open_graph_title', $this->title)) . "\n";
|
423 |
-
$meta .= sprintf('<meta property="og:description" content="%s" />', apply_filters('sq_open_graph_description', $this->description)) . "\n";
|
424 |
-
$meta .= (($this->meta['blogname'] <> '') ? sprintf('<meta property="og:site_name" content="%s" />', apply_filters('sq_open_graph_site', $this->meta['blogname'])) . "\n" : '');
|
425 |
-
|
426 |
-
|
427 |
-
$meta .= sprintf('<meta property="og:locale" content="%s" />', SQ_Tools::$options['sq_og_locale']) . "\n";
|
428 |
-
|
429 |
-
if (is_author()) {
|
430 |
-
$author = get_queried_object();
|
431 |
-
|
432 |
-
$meta .= sprintf('<meta property="og:type" content="%s" />', 'profile') . "\n";
|
433 |
-
$meta .= sprintf('<meta property="profile:first_name" content="%s" />', get_the_author_meta('first_name', $author->ID)) . "\n";
|
434 |
-
$meta .= sprintf('<meta property="profile:last_name" content="%s" />', get_the_author_meta('last_name', $author->ID)) . "\n";
|
435 |
-
} elseif (function_exists('is_product') && is_product()) {
|
436 |
-
$meta .= sprintf('<meta property="og:type" content="%s" />', 'product') . "\n";
|
437 |
-
|
438 |
-
$cat = get_the_terms($this->post->ID, 'product_cat');
|
439 |
-
if (!empty($cat) && count($cat) > 0) {
|
440 |
-
$meta .= sprintf('<meta property="product:category" content="%s" />', $cat[0]->name) . "\n";
|
441 |
-
}
|
442 |
-
|
443 |
-
if (class_exists('WC_Product')) {
|
444 |
-
$product = new WC_Product($this->post->ID);
|
445 |
-
if (isset($product->regular_price)) {
|
446 |
-
if ((int)$product->regular_price > 0 && $product->regular_price <> $product->price && function_exists('get_woocommerce_currency')) {
|
447 |
-
$meta .= sprintf('<meta property="product:original_price:amount" content="%s" />', $product->regular_price) . "\n";
|
448 |
-
$meta .= sprintf('<meta property="product:original_price:currency" content="%s" />', get_woocommerce_currency()) . "\n";
|
449 |
-
}
|
450 |
-
}
|
451 |
-
|
452 |
-
if (isset($product->price)) {
|
453 |
-
if ((int)$product->price > 0 && function_exists('get_woocommerce_currency')) {
|
454 |
-
$meta .= sprintf('<meta property="product:price:amount" content="%s" />', $product->price) . "\n";
|
455 |
-
$meta .= sprintf('<meta property="product:price:currency" content="%s" />', get_woocommerce_currency()) . "\n";
|
456 |
-
}
|
457 |
-
}
|
458 |
-
|
459 |
-
if (isset($product->sale_price)) {
|
460 |
-
if ((int)$product->sale_price > 0 && function_exists('get_woocommerce_currency')) {
|
461 |
-
$sales_price_from = get_post_meta($this->post->ID, '_sale_price_dates_from', true);
|
462 |
-
$sales_price_to = get_post_meta($this->post->ID, '_sale_price_dates_to', true);
|
463 |
-
|
464 |
-
$meta .= sprintf('<meta property="product:sale_price:amount" content="%s" />', $product->sale_price) . "\n";
|
465 |
-
$meta .= sprintf('<meta property="product:sale_price:currency" content="%s" />', get_woocommerce_currency()) . "\n";
|
466 |
-
if ($sales_price_from > 0) {
|
467 |
-
$meta .= sprintf('<meta property="product:sale_price:start" content="%s" />', date("Y-m-d H:i:s", $sales_price_from)) . "\n";
|
468 |
-
}
|
469 |
-
if ($sales_price_to) {
|
470 |
-
$meta .= sprintf('<meta property="product:sale_price:end" content="%s" />', date("Y-m-d H:i:s", $sales_price_to)) . "\n";
|
471 |
-
}
|
472 |
-
|
473 |
-
}
|
474 |
-
}
|
475 |
-
if (isset($product->weight)) {
|
476 |
-
if ((int)$product->weight > 0 && get_option('woocommerce_weight_unit') <> '') {
|
477 |
-
$meta .= sprintf('<meta property="product:weight:value" content="%s" />', $product->weight) . "\n";
|
478 |
-
$meta .= sprintf('<meta property="product:weight:units" content="%s" />', get_option('woocommerce_weight_unit')) . "\n";
|
479 |
-
}
|
480 |
-
}
|
481 |
-
}
|
482 |
-
|
483 |
-
} elseif (!$this->isHomePage() && (is_single() || is_page())) {
|
484 |
-
$meta .= sprintf('<meta property="og:type" content="%s" />', 'article') . "\n";
|
485 |
-
$meta .= sprintf('<meta property="article:published_time" content="%s" />', get_the_time('c', $this->post->ID)) . "\n";
|
486 |
-
if (SQ_Tools::$options['sq_facebook_account'] <> '') {
|
487 |
-
$meta .= sprintf('<meta property="article:publisher" content="%s" />', SQ_Tools::$options['sq_facebook_account']) . "\n";
|
488 |
-
}
|
489 |
-
$category = get_the_category($this->post->ID);
|
490 |
-
if (!empty($category) && $category[0]->cat_name <> 'Uncategorized') {
|
491 |
-
$meta .= sprintf('<meta property="article:section" content="%s" />', $category[0]->cat_name) . "\n";
|
492 |
-
}
|
493 |
-
if ($this->keywords <> '') {
|
494 |
-
$keywords = preg_split('/[,]+/', $this->keywords);
|
495 |
-
if (is_array($keywords) && !empty($keywords)) {
|
496 |
-
foreach ($keywords as $keyword) {
|
497 |
-
$meta .= sprintf('<meta property="article:tag" content="%s" />', $keyword) . "\n";
|
498 |
-
}
|
499 |
-
}
|
500 |
-
}
|
501 |
-
} else {
|
502 |
-
$meta .= sprintf('<meta property="og:type" content="%s" />', 'website') . "\n";
|
503 |
-
}
|
504 |
-
|
505 |
-
return apply_filters('sq_open_graph_meta', $meta);
|
506 |
-
}
|
507 |
-
|
508 |
-
/**
|
509 |
-
* Get the canonical link for the current page
|
510 |
-
*
|
511 |
-
* @return string
|
512 |
-
*/
|
513 |
-
public function setCanonical() {
|
514 |
-
if ($url = $this->getCanonicalUrl(true)) {
|
515 |
-
remove_action('wp_head', 'rel_canonical');
|
516 |
-
|
517 |
-
return sprintf("<link rel=\"canonical\" href=\"%s\" />", $url) . "\n";
|
518 |
-
}
|
519 |
-
|
520 |
-
return '';
|
521 |
-
}
|
522 |
-
|
523 |
-
public function setRelPrevNext() {
|
524 |
-
global $paged;
|
525 |
-
$meta = "";
|
526 |
-
if (!$this->isHomePage()) {
|
527 |
-
if (get_previous_posts_link()) {
|
528 |
-
$meta .= sprintf('<link rel="prev" href="%s" />', apply_filters('sq_prev_link', get_pagenum_link($paged - 1))) . "\n";
|
529 |
-
}
|
530 |
-
if (get_next_posts_link()) {
|
531 |
-
$meta .= sprintf('<link rel="next" href="%s" />', apply_filters('sq_next_link', get_pagenum_link($paged + 1))) . "\n";
|
532 |
-
}
|
533 |
-
}
|
534 |
-
|
535 |
-
return (($meta <> '') ? apply_filters('sq_prevnext_meta', $meta) . "\n" : '');
|
536 |
-
}
|
537 |
-
|
538 |
-
public function getTitle() {
|
539 |
-
$this->getCustomTitle();
|
540 |
-
return $this->title;
|
541 |
-
}
|
542 |
-
|
543 |
-
/**
|
544 |
-
* Get the correct title of the article
|
545 |
-
*
|
546 |
-
* @return string
|
547 |
-
*/
|
548 |
-
public function getCustomTitle() {
|
549 |
-
$sep = ' | ';
|
550 |
-
|
551 |
-
if (isset($this->title)) {
|
552 |
-
return $this->title;
|
553 |
-
}
|
554 |
-
|
555 |
-
//If its a post/page
|
556 |
-
if (!$this->isHomePage()) {
|
557 |
-
//If is category
|
558 |
-
if (is_category()) { //for category
|
559 |
-
$category = get_category(get_query_var('cat'), false);
|
560 |
-
$this->title = $category->cat_name;
|
561 |
-
if ($this->title == '') {
|
562 |
-
$this->title = $this->grabTitleFromPost();
|
563 |
-
}
|
564 |
-
if (is_paged()) {
|
565 |
-
$this->title .= $sep . __('Page', _SQ_PLUGIN_NAME_) . " " . (int)get_query_var('paged');
|
566 |
-
}
|
567 |
-
} elseif (is_author()) { //for author
|
568 |
-
if ($this->title == '') {
|
569 |
-
$this->title = $this->grabTitleFromPost() . $sep . ucfirst($this->getAuthor('display_name'));
|
570 |
-
}
|
571 |
-
if ($this->title == '') {
|
572 |
-
$this->title = __('About') . " " . ucfirst($this->getAuthor('display_name'));
|
573 |
-
}
|
574 |
-
if (is_paged()) {
|
575 |
-
$this->title .= $sep . __('Page', _SQ_PLUGIN_NAME_) . " " . (int)get_query_var('paged');
|
576 |
-
}
|
577 |
-
} elseif (is_tag()) { //for tags
|
578 |
-
if (is_paged()) {
|
579 |
-
$tag = get_query_var('tag');
|
580 |
-
$this->title = ucfirst(str_replace('-', ' ', $tag)) . $sep . __('Page', _SQ_PLUGIN_NAME_) . " " . (int)get_query_var('paged');
|
581 |
-
}
|
582 |
-
} elseif (is_archive()) { //for archive and products
|
583 |
-
if (isset($this->post) && isset($this->post->ID)) {
|
584 |
-
$this->title = $this->grabTitleFromPost($this->post->ID);
|
585 |
-
|
586 |
-
//if woocommerce is installed and is a product category
|
587 |
-
if (function_exists('is_product_category') && is_product_category()) {
|
588 |
-
global $wp_query;
|
589 |
-
$cat = $wp_query->get_queried_object();
|
590 |
-
if (!empty($cat) && $cat->name <> '') {
|
591 |
-
$this->title = $cat->name;
|
592 |
-
}
|
593 |
-
} else {
|
594 |
-
$cat = get_the_terms($this->post->ID, 'category');
|
595 |
-
if (!empty($cat)) {
|
596 |
-
$this->title .= $sep . $cat[0]->name;
|
597 |
-
}
|
598 |
-
}
|
599 |
-
}
|
600 |
-
|
601 |
-
if (is_paged()) {
|
602 |
-
$this->title .= $sep . __('Page', _SQ_PLUGIN_NAME_) . " " . (int)get_query_var('paged');
|
603 |
-
}
|
604 |
-
} elseif (is_single() || is_page() || is_singular() || in_array($this->post_type, $this->post_types)) {
|
605 |
-
if (isset($this->post) && isset($this->post->ID)) {
|
606 |
-
//is a post page
|
607 |
-
$this->title = $this->grabTitleFromPost($this->post->ID);
|
608 |
-
|
609 |
-
//if woocommerce is installed and is a product
|
610 |
-
if (function_exists('is_product') && is_product()) {
|
611 |
-
$cat = get_the_terms($this->post->ID, 'product_cat');
|
612 |
-
if (!empty($cat) && count($cat) > 1) {
|
613 |
-
$this->title .= $sep . $cat[0]->name;
|
614 |
-
}
|
615 |
-
}
|
616 |
-
}
|
617 |
-
}
|
618 |
-
|
619 |
-
} elseif (SQ_Tools::$options ['sq_auto_title'] == 1) { /* Check if is a predefined Title for home page */
|
620 |
-
|
621 |
-
//If the home page is a static page that has custom snippet
|
622 |
-
if (is_page() && isset($this->post) && isset($this->post->ID) && $this->getAdvancedMeta($this->post->ID, 'title') <> '') {
|
623 |
-
$this->title = $this->getAdvancedMeta($this->post->ID, 'title');
|
624 |
-
} elseif (SQ_Tools::$options['sq_fp_title'] <> '') {
|
625 |
-
$this->title = SQ_Tools::$options['sq_fp_title'];
|
626 |
-
} else {
|
627 |
-
if (isset($this->post->ID)) {
|
628 |
-
$this->title = $this->grabTitleFromPost($this->post->ID);
|
629 |
-
if ($this->title <> "" && $this->meta['blogname'] <> '') {
|
630 |
-
$this->title .= $sep . $this->meta['blogname'];
|
631 |
-
}
|
632 |
-
} else {
|
633 |
-
$this->title = get_the_title();
|
634 |
-
}
|
635 |
-
}
|
636 |
-
} else {
|
637 |
-
$this->title = get_the_title();
|
638 |
-
}
|
639 |
-
return apply_filters('sq_title', $this->title);
|
640 |
-
}
|
641 |
-
|
642 |
-
public function clearTitle($title) {
|
643 |
-
if ($title <> '') {
|
644 |
-
$title = SQ_Tools::i18n(trim(esc_html(ent2ncr(strip_tags($title)))));
|
645 |
-
$title = addcslashes($title, '$');
|
646 |
-
}
|
647 |
-
return $title;
|
648 |
-
}
|
649 |
-
|
650 |
-
/**
|
651 |
-
* Get the image from content
|
652 |
-
* @global WP_Query $wp_query
|
653 |
-
* @param integer $id Post ID
|
654 |
-
* @return array
|
655 |
-
*/
|
656 |
-
public function getImagesFromContent($id = null, $all = false) {
|
657 |
-
$images = array();
|
658 |
-
$post = $this->post;
|
659 |
-
|
660 |
-
if (isset($id) && !$post = get_post($id)) {
|
661 |
-
return $images;
|
662 |
-
}
|
663 |
-
|
664 |
-
//if not a specific post and description is sqitched on
|
665 |
-
if (!isset($id) && SQ_Tools::$options['sq_auto_description'] == 1) { //
|
666 |
-
if (($this->isHomePage() && SQ_Tools::$options['sq_fp_ogimage'] <> '')) {
|
667 |
-
$images[] = array(
|
668 |
-
'src' => esc_url(SQ_Tools::$options['sq_fp_ogimage']),
|
669 |
-
'title' => $this->clearTitle($this->grabTitleFromPost($post->ID)),
|
670 |
-
'description' => $this->clearDescription($this->grabDescriptionFromPost($post->ID)),
|
671 |
-
'width' => null,
|
672 |
-
'height' => null,
|
673 |
-
);
|
674 |
-
|
675 |
-
return $images;
|
676 |
-
}
|
677 |
-
}
|
678 |
-
|
679 |
-
if ($post && isset($post->ID)) {
|
680 |
-
if ($url = $this->getAdvancedMeta($post->ID, 'ogimage')) {
|
681 |
-
$images[] = array(
|
682 |
-
'src' => esc_url($url),
|
683 |
-
'title' => $this->clearTitle($this->grabTitleFromPost($post->ID)),
|
684 |
-
'description' => $this->clearDescription($this->grabDescriptionFromPost($post->ID)),
|
685 |
-
'width' => null,
|
686 |
-
'height' => null,
|
687 |
-
);
|
688 |
-
//don't add other images in OG to overwrite the custom image
|
689 |
-
$this->custom_og_image = true;
|
690 |
-
}
|
691 |
-
if ($all || empty($images)) {
|
692 |
-
if (has_post_thumbnail($post->ID)) {
|
693 |
-
$attachment = get_post(get_post_thumbnail_id($post->ID));
|
694 |
-
$url = wp_get_attachment_image_src($attachment->ID, 'full');
|
695 |
-
$images[] = array(
|
696 |
-
'src' => esc_url($url[0]),
|
697 |
-
'title' => $this->clearTitle($attachment->post_title),
|
698 |
-
'description' => $this->clearDescription($attachment->post_excerpt),
|
699 |
-
'width' => $url[1],
|
700 |
-
'height' => $url[2],
|
701 |
-
);
|
702 |
-
}
|
703 |
-
}
|
704 |
-
if ($all || empty($images)) {
|
705 |
-
if (isset($post->post_content)) {
|
706 |
-
preg_match('/<img[^>]*src="([^"]*)"[^>]*>/i', $post->post_content, $match);
|
707 |
-
|
708 |
-
if (!empty($match)) {
|
709 |
-
preg_match('/alt="([^"]*)"/i', $match[0], $alt);
|
710 |
-
|
711 |
-
if (strpos($match[1], '//') === false) {
|
712 |
-
$match[1] = get_bloginfo('url') . $match[1];
|
713 |
-
}
|
714 |
-
|
715 |
-
$images[] = array(
|
716 |
-
'src' => esc_url($match[1]),
|
717 |
-
'title' => $this->clearTitle(!empty($alt[1]) ? $alt[1] : ''),
|
718 |
-
'description' => '',
|
719 |
-
'width' => null,
|
720 |
-
'height' => null,
|
721 |
-
);
|
722 |
-
}
|
723 |
-
}
|
724 |
-
}
|
725 |
-
}
|
726 |
-
|
727 |
-
return $images;
|
728 |
-
}
|
729 |
-
|
730 |
-
/**
|
731 |
-
* Get the video from content
|
732 |
-
* @param integer $id Post ID
|
733 |
-
* @return type
|
734 |
-
*/
|
735 |
-
public function getVideosFromContent($id = null) {
|
736 |
-
$videos = array();
|
737 |
-
|
738 |
-
if (isset($id)) {
|
739 |
-
$post = get_post($id);
|
740 |
-
} else {
|
741 |
-
$post = $this->post;
|
742 |
-
}
|
743 |
-
|
744 |
-
if ($post && isset($post->ID)) {
|
745 |
-
//if not
|
746 |
-
if (!$this->custom_og_image) {
|
747 |
-
if (isset($post->post_content)) {
|
748 |
-
preg_match('/(?:http(?:s)?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed)\/)([^\?&\"\'>\s]+)/si', $post->post_content, $match);
|
749 |
-
|
750 |
-
if (isset($match[0])) {
|
751 |
-
if (strpos($match[0], '//') !== false && strpos($match[0], 'http') === false) {
|
752 |
-
$match[0] = 'http:' . $match[0];
|
753 |
-
}
|
754 |
-
$videos[] = esc_url($match[0]);
|
755 |
-
}
|
756 |
-
|
757 |
-
// preg_match('/(?:http(?:s)?:\/\/)?(?:fast\.wistia\.net\/(?:embed)\/(?:iframe)\/)([^\?&\"\'>\s]+)/si', $post->post_content, $match);
|
758 |
-
//
|
759 |
-
// if (isset($match[0])) {
|
760 |
-
// if (strpos($match[0], '//') !== false && strpos($match[0], 'http') === false) {
|
761 |
-
// $match[0] = 'http:' . $match[0];
|
762 |
-
// }
|
763 |
-
// $videos[] = esc_url($match[0]);
|
764 |
-
// }
|
765 |
-
|
766 |
-
preg_match('/(?:http(?:s)?:\/\/)?(?:fwd4\.wistia\.com\/(?:medias)\/)([^\?&\"\'>\s]+)/si', $post->post_content, $match);
|
767 |
-
|
768 |
-
if (isset($match[0])) {
|
769 |
-
$videos[] = esc_url('http://fast.wistia.net/embed/iframe/' . $match[1]);
|
770 |
-
}
|
771 |
-
|
772 |
-
preg_match('/class=["|\']([^"\']*wistia_async_([^\?&\"\'>\s]+)[^"\']*["|\'])/si', $post->post_content, $match);
|
773 |
-
|
774 |
-
if (isset($match[0])) {
|
775 |
-
$videos[] = esc_url('http://fast.wistia.net/embed/iframe/' . $match[2]);
|
776 |
-
}
|
777 |
-
|
778 |
-
preg_match('/src=["|\']([^"\']*(.mpg|.mpeg|.mp4|.mov|.wmv|.asf|.avi|.ra|.ram|.rm|.flv)["|\'])/i', $post->post_content, $match);
|
779 |
-
|
780 |
-
if (isset($match[1])) {
|
781 |
-
$videos[] = esc_url($match[1]);
|
782 |
-
}
|
783 |
-
}
|
784 |
-
}
|
785 |
-
}
|
786 |
-
|
787 |
-
return $videos;
|
788 |
-
}
|
789 |
-
|
790 |
-
public function getDescription() {
|
791 |
-
$this->getCustomDescription();
|
792 |
-
return $this->description;
|
793 |
-
}
|
794 |
-
|
795 |
-
/**
|
796 |
-
* Get the description from last/current article
|
797 |
-
*
|
798 |
-
* @return string
|
799 |
-
*/
|
800 |
-
public function getCustomDescription() {
|
801 |
-
|
802 |
-
$sep = ' | ';
|
803 |
-
$description = '';
|
804 |
-
|
805 |
-
//If not homepage
|
806 |
-
if (!$this->isHomePage()) {
|
807 |
-
//If is a category
|
808 |
-
if (is_category()) { //for categories
|
809 |
-
$category = get_category(get_query_var('cat'), false);
|
810 |
-
$description = $category->category_description;
|
811 |
-
if ($description == '') {
|
812 |
-
$description = $category->cat_name;
|
813 |
-
}
|
814 |
-
if ($description == '') {
|
815 |
-
$description = $this->grabDescriptionFromPost();
|
816 |
-
}
|
817 |
-
|
818 |
-
if (is_paged()) {
|
819 |
-
$description .= $sep . __('Page', _SQ_PLUGIN_NAME_) . " " . (int)get_query_var('paged');
|
820 |
-
}
|
821 |
-
|
822 |
-
if ($this->isHomePage() && $description <> '') {
|
823 |
-
if ($this->meta['blogname'] <> '') {
|
824 |
-
$description .= $sep . $this->meta['blogname'];
|
825 |
-
}
|
826 |
-
}
|
827 |
-
} elseif (is_author()) { //for author
|
828 |
-
$description = $this->getAuthor('user_description');
|
829 |
-
if ($description == '') {
|
830 |
-
$description = $this->grabDescriptionFromPost() . $sep . $this->getAuthor('display_name');
|
831 |
-
}
|
832 |
-
if (is_paged()) {
|
833 |
-
$description .= $sep . __('Page', _SQ_PLUGIN_NAME_) . " " . (int)get_query_var('paged');
|
834 |
-
}
|
835 |
-
} elseif (is_tag()) { //for tags
|
836 |
-
$description = tag_description();
|
837 |
-
if ($description == '') {
|
838 |
-
$tag = single_tag_title('', false);
|
839 |
-
$description = ucfirst($tag) . $sep . $this->grabDescriptionFromPost();
|
840 |
-
}
|
841 |
-
if (is_paged()) {
|
842 |
-
$description .= $sep . __('Page', _SQ_PLUGIN_NAME_) . " " . (int)get_query_var('paged');
|
843 |
-
}
|
844 |
-
} elseif (is_archive()) { //for archive and products
|
845 |
-
if (isset($this->post) && isset($this->post->ID)) {
|
846 |
-
$description = $this->grabDescriptionFromPost($this->post->ID);
|
847 |
-
|
848 |
-
//if woocommerce is installed and is a product category
|
849 |
-
if (function_exists('is_product_category') && is_product_category()) {
|
850 |
-
global $wp_query;
|
851 |
-
$cat = $wp_query->get_queried_object();
|
852 |
-
if (!empty($cat)) {
|
853 |
-
if ($cat->description <> '' && strlen($cat->description) > 10) {
|
854 |
-
$description = $cat->description;
|
855 |
-
} else {
|
856 |
-
$description .= $sep . $cat->name;
|
857 |
-
}
|
858 |
-
}
|
859 |
-
} else {
|
860 |
-
$cat = get_the_terms($this->post->ID, 'category');
|
861 |
-
if (!empty($cat)) {
|
862 |
-
$description .= $sep . $cat[0]->name;
|
863 |
-
}
|
864 |
-
}
|
865 |
-
}
|
866 |
-
|
867 |
-
if (is_paged()) {
|
868 |
-
$description .= $sep . __('Page', _SQ_PLUGIN_NAME_) . " " . (int)get_query_var('paged');
|
869 |
-
}
|
870 |
-
} elseif (is_single() || is_page() || is_singular() || $this->checkPostsPage() || in_array($this->post_type, $this->post_types)) {
|
871 |
-
if (isset($this->post) && isset($this->post->ID)) {
|
872 |
-
//is a post page
|
873 |
-
$description .= $this->grabDescriptionFromPost($this->post->ID);
|
874 |
-
|
875 |
-
//if woocommerce is installed and is a product
|
876 |
-
if (function_exists('is_product') && is_product()) {
|
877 |
-
$cat = get_the_terms($this->post->ID, 'product_cat');
|
878 |
-
if (!empty($cat) && count($cat) > 1) {
|
879 |
-
$description .= $sep . $cat[0]->name;
|
880 |
-
}
|
881 |
-
}
|
882 |
-
}
|
883 |
-
}
|
884 |
-
} elseif (SQ_Tools::$options['sq_auto_description'] == 1) {
|
885 |
-
/* Check if is a predefined TitleIn Snippet */
|
886 |
-
//If the home page is a static page that has custom snippet
|
887 |
-
if (is_page() && isset($this->post) && isset($this->post->ID) && $this->getAdvancedMeta($this->post->ID, 'description') <> '') {
|
888 |
-
$description = $this->getAdvancedMeta($this->post->ID, 'description');
|
889 |
-
} elseif (SQ_Tools::$options ['sq_fp_description'] <> '') {
|
890 |
-
$description = strip_tags(SQ_Tools::$options['sq_fp_description']);
|
891 |
-
} else {
|
892 |
-
$description = $this->grabDescriptionFromPost();
|
893 |
-
}
|
894 |
-
} else {
|
895 |
-
$description = get_bloginfo('description');
|
896 |
-
}
|
897 |
-
|
898 |
-
$description = (($description <> '') ? $description : $this->title);
|
899 |
-
if ($description <> '') {
|
900 |
-
|
901 |
-
$this->description = apply_filters('sq_description', $description);
|
902 |
-
if ($this->description <> '') { //prevent blank description
|
903 |
-
return sprintf("<meta name=\"description\" content=\"%s\" />", $this->description);
|
904 |
-
}
|
905 |
-
}
|
906 |
-
|
907 |
-
return '';
|
908 |
-
}
|
909 |
-
|
910 |
-
public function clearDescription($description) {
|
911 |
-
if ($description <> '') {
|
912 |
-
$search = array("'<script[^>]*?>.*?<\/script>'si", // strip out javascript
|
913 |
-
"/<form.*?<\/form>/si",
|
914 |
-
"/<iframe.*?<\/iframe>/si");
|
915 |
-
|
916 |
-
if (function_exists('preg_replace')) {
|
917 |
-
$description = preg_replace($search, '', $description);
|
918 |
-
}
|
919 |
-
|
920 |
-
$description = SQ_Tools::i18n(trim(esc_html(ent2ncr(strip_tags($description)))));
|
921 |
-
$description = addcslashes($description, '$');
|
922 |
-
}
|
923 |
-
|
924 |
-
return $description;
|
925 |
-
}
|
926 |
-
|
927 |
-
/**
|
928 |
-
* Get the keywords from articles
|
929 |
-
*
|
930 |
-
* @return string
|
931 |
-
*/
|
932 |
-
public function getCustomKeyword() {
|
933 |
-
$keywords = '';
|
934 |
-
|
935 |
-
if ($this->checkPostsPage() && SQ_Tools::$options['sq_auto_description'] == 1) {
|
936 |
-
$keywords = stripcslashes(SQ_Tools::i18n($this->grabKeywordsFromPost($this->post->ID)));
|
937 |
-
} elseif (is_single() || is_page()) {
|
938 |
-
$keywords = stripcslashes(SQ_Tools::i18n($this->grabKeywordsFromPost($this->post->ID)));
|
939 |
-
} elseif (SQ_Tools::$options['sq_auto_description'] == 1) {
|
940 |
-
$keywords = trim(SQ_Tools::i18n($this->grabKeywordsFromPost()));
|
941 |
-
}
|
942 |
-
|
943 |
-
/* Check if is a predefined Keyword */
|
944 |
-
if (SQ_Tools::$options['sq_auto_description'] == 1) { //
|
945 |
-
if (($this->isHomePage() &&
|
946 |
-
SQ_Tools::$options['sq_fp_keywords'] <> '')
|
947 |
-
) {
|
948 |
-
$keywords = strip_tags(SQ_Tools::$options ['sq_fp_keywords']);
|
949 |
-
}
|
950 |
-
}
|
951 |
-
|
952 |
-
if (isset($keywords) && !empty($keywords) && !(is_home() && is_paged())) {
|
953 |
-
$this->keywords = apply_filters('sq_keywords', str_replace('"', '', $keywords));
|
954 |
-
|
955 |
-
return sprintf("<meta name=\"keywords\" content=\"%s\" />", $this->keywords);
|
956 |
-
}
|
957 |
-
|
958 |
-
return false;
|
959 |
-
}
|
960 |
-
|
961 |
-
/**
|
962 |
-
* Get the copyright meta
|
963 |
-
*
|
964 |
-
* @return string
|
965 |
-
*/
|
966 |
-
public function getCopyright() {
|
967 |
-
$meta = '';
|
968 |
-
|
969 |
-
$name = $this->getAuthor('display_name');
|
970 |
-
if ($name == '') {
|
971 |
-
$name = $this->meta['blogname'];
|
972 |
-
}
|
973 |
-
|
974 |
-
if ($name <> '') {
|
975 |
-
$meta = sprintf("<meta name=\"dcterms.rightsHolder\" content=\"%s\" />" . "\n", apply_filters('sq_copyright', $name));
|
976 |
-
}
|
977 |
-
|
978 |
-
return apply_filters('sq_copyright_meta', $meta);
|
979 |
-
}
|
980 |
-
|
981 |
-
/**
|
982 |
-
* Get the Google Plus Author meta
|
983 |
-
*
|
984 |
-
* @return string
|
985 |
-
*/
|
986 |
-
public function getGooglePlusMeta() {
|
987 |
-
$meta = '';
|
988 |
-
$author = SQ_Tools::$options['sq_google_plus'];
|
989 |
-
|
990 |
-
if (strpos($author, 'plus.google.com') === false && is_numeric($author)) {
|
991 |
-
$author = 'https://plus.google.com/' . $author;
|
992 |
-
}
|
993 |
-
|
994 |
-
if ($author <> '' && !class_exists('ABH_Classes_ObjController')) {
|
995 |
-
$meta = '<link rel="publisher" href="' . $author . '" />' . "\n";
|
996 |
-
}
|
997 |
-
|
998 |
-
return apply_filters('sq_publisher_meta', $meta);
|
999 |
-
}
|
1000 |
-
|
1001 |
-
/**
|
1002 |
-
* Get the icons for serachengines
|
1003 |
-
*
|
1004 |
-
* @return string
|
1005 |
-
*/
|
1006 |
-
public function getFavicon() {
|
1007 |
-
$meta = '';
|
1008 |
-
$rnd = '';
|
1009 |
-
|
1010 |
-
if (current_user_can('manage_options')) {
|
1011 |
-
$rnd = '?' . md5(SQ_Tools::$options['favicon']);
|
1012 |
-
}
|
1013 |
-
|
1014 |
-
if (SQ_Tools::$options['favicon'] <> '' && file_exists(_SQ_CACHE_DIR_ . SQ_Tools::$options['favicon'])) {
|
1015 |
-
$meta .= "\n";
|
1016 |
-
|
1017 |
-
if (!get_option('permalink_structure')) {
|
1018 |
-
$favicon = get_bloginfo('wpurl') . '/index.php?sq_get=favicon';
|
1019 |
-
$touchicon = get_bloginfo('wpurl') . '/index.php?sq_get=touchicon';
|
1020 |
-
} else {
|
1021 |
-
$favicon = get_bloginfo('wpurl') . '/favicon.icon' . $rnd;
|
1022 |
-
$touchicon = get_bloginfo('wpurl') . '/touch-icon.png' . $rnd;
|
1023 |
-
}
|
1024 |
-
$meta .= sprintf("<link rel=\"shortcut icon\" href=\"%s\" />" . "\n", $favicon);
|
1025 |
-
$meta .= sprintf("<link rel=\"apple-touch-icon\" href=\"%s\" />" . "\n", $touchicon);
|
1026 |
-
|
1027 |
-
$appleSizes = preg_split('/[,]+/', _SQ_MOBILE_ICON_SIZES);
|
1028 |
-
foreach ($appleSizes as $size) {
|
1029 |
-
if (!get_option('permalink_structure')) {
|
1030 |
-
$favicon = get_bloginfo('wpurl') . '/index.php?sq_get=touchicon&sq_size=' . $size;
|
1031 |
-
} else {
|
1032 |
-
$favicon = get_bloginfo('wpurl') . '/touch-icon' . $size . '.png' . $rnd;
|
1033 |
-
}
|
1034 |
-
$meta .= sprintf("<link rel=\"apple-touch-icon\" sizes=\"" . $size . "x" . $size . "\" href=\"%s\" />" . "\n", $favicon);
|
1035 |
-
}
|
1036 |
-
} else {
|
1037 |
-
if (file_exists(ABSPATH . 'favicon.ico')) {
|
1038 |
-
$meta .= sprintf("<link rel=\"shortcut icon\" href=\"%s\" />" . "\n", get_bloginfo('wpurl') . '/favicon.ico');
|
1039 |
-
}
|
1040 |
-
}
|
1041 |
-
return apply_filters('sq_publisher_meta', $meta);
|
1042 |
-
}
|
1043 |
-
|
1044 |
-
/**
|
1045 |
-
* Get the language meta
|
1046 |
-
*
|
1047 |
-
* @return string
|
1048 |
-
*/
|
1049 |
-
public function getLanguage() {
|
1050 |
-
$meta = '';
|
1051 |
-
$language = get_bloginfo('language');
|
1052 |
-
|
1053 |
-
if ($language <> '') {
|
1054 |
-
$url = get_bloginfo('url');
|
1055 |
-
if (strpos($language, '-') !== false) {
|
1056 |
-
$hreflang = substr($language, 0, strpos($language, '-'));
|
1057 |
-
}
|
1058 |
-
|
1059 |
-
|
1060 |
-
$meta .= sprintf("<meta name=\"dc.language\" content=\"%s\" />", $language) . "\n";
|
1061 |
-
}
|
1062 |
-
|
1063 |
-
return apply_filters('sq_language_meta', $meta);
|
1064 |
-
}
|
1065 |
-
|
1066 |
-
/**
|
1067 |
-
* Get the DC.publisher meta
|
1068 |
-
*
|
1069 |
-
* @return string
|
1070 |
-
*/
|
1071 |
-
public function getDublinCore() {
|
1072 |
-
$date = null;
|
1073 |
-
$meta = '';
|
1074 |
-
|
1075 |
-
$name = $this->getAuthor('display_name');
|
1076 |
-
if (!$name) {
|
1077 |
-
$name = $this->meta['blogname'];
|
1078 |
-
}
|
1079 |
-
|
1080 |
-
if ($name <> '') {
|
1081 |
-
$meta .= sprintf("<meta name=\"dc.publisher\" content=\"%s\" />", $name) . "\n";
|
1082 |
-
}
|
1083 |
-
|
1084 |
-
$meta .= sprintf('<meta name="dc.title" content="%s" />', $this->title) . "\n";
|
1085 |
-
$meta .= sprintf('<meta name="dc.description" content="%s" />', $this->description) . "\n";
|
1086 |
-
|
1087 |
-
if ($this->isHomePage()) {
|
1088 |
-
$date = date('Y-m-d', strtotime(get_lastpostmodified('gmt')));
|
1089 |
-
} elseif (is_single() && isset($this->post->post_date)) {
|
1090 |
-
$date = date('Y-m-d', strtotime($this->post->post_date));
|
1091 |
-
}
|
1092 |
-
|
1093 |
-
if (isset($date)) {
|
1094 |
-
$meta .= sprintf("<meta name=\"dc.date.issued\" content=\"%s\" />", $date) . "\n";
|
1095 |
-
}
|
1096 |
-
|
1097 |
-
return apply_filters('sq_dublin_meta', $meta);
|
1098 |
-
}
|
1099 |
-
|
1100 |
-
/**
|
1101 |
-
* Get the XML Sitemap meta
|
1102 |
-
*
|
1103 |
-
* @return string
|
1104 |
-
*/
|
1105 |
-
public function getXMLSitemap() {
|
1106 |
-
$meta = '';
|
1107 |
-
|
1108 |
-
$xml_url = SQ_ObjController::getController('SQ_Sitemaps')->getXmlUrl('sitemap');
|
1109 |
-
|
1110 |
-
if ($xml_url <> '') {
|
1111 |
-
$meta = sprintf("<link rel=\"alternate\" type=\"application/rss+xml\" " . (($this->title <> '') ? "title=\"%s\"" : "") . " href=\"%s\" />", $this->title, $xml_url) . "\n";
|
1112 |
-
}
|
1113 |
-
|
1114 |
-
return apply_filters('sq_sitemap_meta', $meta);
|
1115 |
-
}
|
1116 |
-
|
1117 |
-
/**
|
1118 |
-
* Get the google Webmaster Tool code
|
1119 |
-
*
|
1120 |
-
* @return string
|
1121 |
-
*/
|
1122 |
-
public function getGoogleWT() {
|
1123 |
-
$sq_google_wt = SQ_Tools::$options['sq_google_wt'];
|
1124 |
-
|
1125 |
-
if ($this->isHomePage() && $sq_google_wt <> '') {
|
1126 |
-
return sprintf("<meta name=\"google-site-verification\" content=\"%s\" />", $sq_google_wt) . "\n";
|
1127 |
-
}
|
1128 |
-
|
1129 |
-
return false;
|
1130 |
-
}
|
1131 |
-
|
1132 |
-
/**
|
1133 |
-
* Get the google Analytics code
|
1134 |
-
*
|
1135 |
-
* @return string
|
1136 |
-
*/
|
1137 |
-
public function getGoogleAnalytics() {
|
1138 |
-
$sq_google_analytics = SQ_Tools::$options['sq_google_analytics'];
|
1139 |
-
|
1140 |
-
if ($sq_google_analytics <> '') {
|
1141 |
-
if (SQ_Tools::$options['sq_auto_amp']) {
|
1142 |
-
return '<script async custom-element="amp-analytics" src="https://cdn.ampproject.org/v0/amp-analytics-0.1.js"></script>' . "\n";
|
1143 |
-
} else {
|
1144 |
-
SQ_ObjController::getController('SQ_DisplayController', false)
|
1145 |
-
->loadMedia('https://www.google-analytics.com/analytics.js');
|
1146 |
-
|
1147 |
-
return sprintf("<script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', '%s', 'auto');ga('send', 'pageview');</script>", $sq_google_analytics);
|
1148 |
-
}
|
1149 |
-
}
|
1150 |
-
|
1151 |
-
return false;
|
1152 |
-
}
|
1153 |
-
|
1154 |
-
public function getGoogleAnalyticsAMPBody() {
|
1155 |
-
$sq_google_analytics = SQ_Tools::$options['sq_google_analytics'];
|
1156 |
-
|
1157 |
-
if ($sq_google_analytics <> '') {
|
1158 |
-
if (SQ_Tools::$options['sq_auto_amp']) {
|
1159 |
-
return sprintf('<amp-analytics type="googleanalytics" id="analytics1"><script type="application/json">{"vars": {"account": "%s"},"triggers": {"trackPageview": {"on": "visible","request": "pageview"}}}</script></amp-analytics>', $sq_google_analytics) . "\n";
|
1160 |
-
}
|
1161 |
-
}
|
1162 |
-
return '';
|
1163 |
-
}
|
1164 |
-
|
1165 |
-
public function getFacebookPixel() {
|
1166 |
-
$sq_facebook_analytics = SQ_Tools::$options['sq_facebook_analytics'];
|
1167 |
-
if ($sq_facebook_analytics <> '') {
|
1168 |
-
$this->setPost($this->post);
|
1169 |
-
$domain = str_replace(array('http://', 'http://', 'www.'), '', get_bloginfo('url'));
|
1170 |
-
if ($this->isHomePage()) {
|
1171 |
-
$events[] = array(
|
1172 |
-
'type' => 'track',
|
1173 |
-
'name' => 'PageView',
|
1174 |
-
'params' => array('page' => get_bloginfo('url'), 'domain' => $domain)
|
1175 |
-
);
|
1176 |
-
} else {
|
1177 |
-
if (isset($this->post->ID)) {
|
1178 |
-
$params['content_ids'] = array((string)$this->post->ID);
|
1179 |
-
}
|
1180 |
-
|
1181 |
-
$params['content_type'] = $this->post_type;
|
1182 |
-
|
1183 |
-
if ($this->post_type == 'category') {
|
1184 |
-
$category = get_category(get_query_var('cat'), false);
|
1185 |
-
if (isset($category->name)) {
|
1186 |
-
$params['content_category'] = $category->name;
|
1187 |
-
}
|
1188 |
-
} elseif ($this->post_type == 'product') {
|
1189 |
-
$params['content_name'] = $this->post->post_title;
|
1190 |
-
$cat = get_the_terms($this->post->ID, 'product_cat');
|
1191 |
-
if (!empty($cat)) {
|
1192 |
-
$params['content_category'] = $cat[0]->name;
|
1193 |
-
}
|
1194 |
-
|
1195 |
-
if (isset($_POST['product_id']) && isset($params['content_ids']) && isset($params['content_type'])) {
|
1196 |
-
if (function_exists('wc_get_product') && function_exists('get_woocommerce_currency')) {
|
1197 |
-
if ($product = wc_get_product((int)$_POST['product_id'])) {
|
1198 |
-
$params['value'] = $product->get_price();
|
1199 |
-
$params['currency'] = get_woocommerce_currency();
|
1200 |
-
}
|
1201 |
-
}
|
1202 |
-
|
1203 |
-
$events[] = array(
|
1204 |
-
'type' => 'track',
|
1205 |
-
'name' => 'AddToCart',
|
1206 |
-
'params' => $params
|
1207 |
-
);
|
1208 |
-
}
|
1209 |
-
} elseif ($this->post_type == 'search') {
|
1210 |
-
$search = get_search_query(true);
|
1211 |
-
if ($search <> '') {
|
1212 |
-
$params['search_string'] = $search;
|
1213 |
-
$events[] = array(
|
1214 |
-
'type' => 'track',
|
1215 |
-
'name' => 'Search',
|
1216 |
-
'params' => $params
|
1217 |
-
);
|
1218 |
-
}
|
1219 |
-
} elseif ($this->post_type == 'checkout' && isset($this->post->ID)) {
|
1220 |
-
global $woocommerce;
|
1221 |
-
if (isset($woocommerce->cart->total) && $woocommerce->cart->total > 0) {
|
1222 |
-
$params['value'] = $woocommerce->cart->total;
|
1223 |
-
|
1224 |
-
if (isset($woocommerce->cart->cart_contents) && !empty($woocommerce->cart->cart_contents)) {
|
1225 |
-
$quantity = 0;
|
1226 |
-
foreach ($woocommerce->cart->cart_contents as $product) {
|
1227 |
-
$quantity += $product['quantity'];
|
1228 |
-
}
|
1229 |
-
if ($quantity > 0) {
|
1230 |
-
$params['num_items'] = $quantity;
|
1231 |
-
}
|
1232 |
-
}
|
1233 |
-
$events[] = array(
|
1234 |
-
'type' => 'track',
|
1235 |
-
'name' => 'InitiateCheckout',
|
1236 |
-
'params' => $params
|
1237 |
-
);
|
1238 |
-
} elseif (SQ_Tools::getIsset('key')) {
|
1239 |
-
$params['content_type'] = 'purchase';
|
1240 |
-
global $wpdb;
|
1241 |
-
$sql = "SELECT `post_id`
|
1242 |
-
FROM `" . $wpdb->postmeta . "`
|
1243 |
-
WHERE `meta_key` = '_order_key' AND `meta_value`='" . SQ_Tools::getValue('key') . "'";
|
1244 |
-
|
1245 |
-
if ($post = $wpdb->get_row($sql)) {
|
1246 |
-
if ($order = wc_get_order($post->post_id)) {
|
1247 |
-
$params['content_type'] = "checkout";
|
1248 |
-
$params['value'] = $order->get_total();
|
1249 |
-
$params['currency'] = $order->get_order_currency();
|
1250 |
-
|
1251 |
-
$events[] = array(
|
1252 |
-
'type' => 'track',
|
1253 |
-
'name' => 'Purchase',
|
1254 |
-
'params' => $params
|
1255 |
-
);
|
1256 |
-
}
|
1257 |
-
}
|
1258 |
-
}
|
1259 |
-
|
1260 |
-
|
1261 |
-
} else {
|
1262 |
-
$cat = get_the_terms($this->post->ID, 'category');
|
1263 |
-
if (!empty($cat)) {
|
1264 |
-
$params['content_category'] = $cat[0]->name;
|
1265 |
-
}
|
1266 |
-
}
|
1267 |
-
|
1268 |
-
$params['page'] = $this->getCanonicalUrl();
|
1269 |
-
$params['domain'] = $domain;
|
1270 |
-
|
1271 |
-
if (isset($params['content_ids']) && isset($params['content_type'])) {
|
1272 |
-
$events[] = array(
|
1273 |
-
'type' => 'track',
|
1274 |
-
'name' => 'ViewContent',
|
1275 |
-
'params' => $params
|
1276 |
-
);
|
1277 |
-
} else {
|
1278 |
-
$events[] = array(
|
1279 |
-
'type' => 'trackCustom',
|
1280 |
-
'name' => 'GeneralEvent',
|
1281 |
-
'params' => $params
|
1282 |
-
);
|
1283 |
-
}
|
1284 |
-
|
1285 |
-
$events[] = array(
|
1286 |
-
'type' => 'track',
|
1287 |
-
'name' => 'PageView',
|
1288 |
-
'params' => array('page' => $params['page'], 'domain' => $params['domain'])
|
1289 |
-
);
|
1290 |
-
}
|
1291 |
-
$track = '';
|
1292 |
-
foreach ($events as $event) {
|
1293 |
-
$track .= "fbq('" . $event['type'] . "', '" . $event['name'] . "', '" . json_encode($event['params']) . "');";
|
1294 |
-
}
|
1295 |
-
//$track .= json_encode($this->post);
|
1296 |
-
if ($sq_facebook_analytics <> '') {
|
1297 |
-
if (SQ_Tools::$options['sq_auto_amp']) {
|
1298 |
-
//not yet supported
|
1299 |
-
} else {
|
1300 |
-
return sprintf("<script>!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,document,'script','https://connect.facebook.net/en_US/fbevents.js');fbq('init', '%s');%s</script><noscript><img height='1' width='1' style='display:none'src='https://www.facebook.com/tr?id=%s&ev=PageView&noscript=1'/></noscript>" . "\n", $sq_facebook_analytics, $track, $sq_facebook_analytics);
|
1301 |
-
}
|
1302 |
-
}
|
1303 |
-
}
|
1304 |
-
return false;
|
1305 |
-
}
|
1306 |
-
|
1307 |
-
/**
|
1308 |
-
* Get the Facebook Insights code
|
1309 |
-
*
|
1310 |
-
* @return string
|
1311 |
-
*/
|
1312 |
-
public function getFacebookIns() {
|
1313 |
-
$sq_facebook_insights = SQ_Tools::$options ['sq_facebook_insights'];
|
1314 |
-
|
1315 |
-
if ($this->isHomePage() && $sq_facebook_insights <> '') {
|
1316 |
-
return sprintf("<meta property=\"fb:admins\" content=\"%s\" />", $sq_facebook_insights) . "\n";
|
1317 |
-
}
|
1318 |
-
|
1319 |
-
return false;
|
1320 |
-
}
|
1321 |
-
|
1322 |
-
/**
|
1323 |
-
* Get the Pinterest code
|
1324 |
-
*
|
1325 |
-
* @return string
|
1326 |
-
*/
|
1327 |
-
public function getPinterest() {
|
1328 |
-
$sq_pinterest = SQ_Tools::$options['sq_pinterest'];
|
1329 |
-
|
1330 |
-
if ($this->isHomePage() && $sq_pinterest <> '') {
|
1331 |
-
return sprintf("<meta name=\"p:domain_verify\" content=\"%s\" />", $sq_pinterest) . "\n";
|
1332 |
-
}
|
1333 |
-
|
1334 |
-
return false;
|
1335 |
-
}
|
1336 |
-
|
1337 |
-
/**
|
1338 |
-
* Get the Alexa Tool code
|
1339 |
-
*
|
1340 |
-
* @return string
|
1341 |
-
*/
|
1342 |
-
public function getAlexaT() {
|
1343 |
-
$sq_alexa = SQ_Tools::$options['sq_alexa'];
|
1344 |
-
|
1345 |
-
if ($this->isHomePage() && $sq_alexa <> '') {
|
1346 |
-
return sprintf("<meta name=\"alexaVerifyID\" content=\"%s\" />", $sq_alexa) . "\n";
|
1347 |
-
}
|
1348 |
-
|
1349 |
-
return false;
|
1350 |
-
}
|
1351 |
-
|
1352 |
-
/**
|
1353 |
-
* Get the bing Webmaster Tool code
|
1354 |
-
*
|
1355 |
-
* @return string
|
1356 |
-
*/
|
1357 |
-
public function getBingWT() {
|
1358 |
-
$sq_bing_wt = SQ_Tools::$options['sq_bing_wt'];
|
1359 |
-
|
1360 |
-
if ($this->isHomePage() && $sq_bing_wt <> '') {
|
1361 |
-
return sprintf("<meta name=\"msvalidate.01\" content=\"%s\" />", $sq_bing_wt) . "\n";
|
1362 |
-
}
|
1363 |
-
|
1364 |
-
return false;
|
1365 |
-
}
|
1366 |
-
|
1367 |
-
/**
|
1368 |
-
* Get the JsonLD meta for this site
|
1369 |
-
* @return string
|
1370 |
-
*/
|
1371 |
-
public function getJsonLD() {
|
1372 |
-
$meta = '';
|
1373 |
-
$sep = ",\n";
|
1374 |
-
$jsonld = SQ_ObjController::getModelService('JsonLD');
|
1375 |
-
$markup = array();
|
1376 |
-
if ($this->isHomePage()) {
|
1377 |
-
if (isset(SQ_Tools::$options['sq_jsonld'][SQ_Tools::$options['sq_jsonld_type']])) {
|
1378 |
-
$markup['@type'] = SQ_Tools::$options['sq_jsonld_type'];
|
1379 |
-
$markup['@id'] = $this->url;
|
1380 |
-
$markup['url'] = $this->url;
|
1381 |
-
|
1382 |
-
foreach (SQ_Tools::$options['sq_jsonld'][SQ_Tools::$options['sq_jsonld_type']] as $key => $value) {
|
1383 |
-
if ($value <> '') {
|
1384 |
-
if ($key == 'contactType' || (SQ_Tools::$options['sq_jsonld_type'] == 'Organization' && $key == 'jobTitle')) {
|
1385 |
-
continue;
|
1386 |
-
}
|
1387 |
-
if (SQ_Tools::$options['sq_jsonld_type'] == 'Organization' && $key == 'telephone') {
|
1388 |
-
$markup['contactPoint'] = array(
|
1389 |
-
'@type' => 'ContactPoint',
|
1390 |
-
'telephone' => $value,
|
1391 |
-
'contactType' => SQ_Tools::$options['sq_jsonld'][SQ_Tools::$options['sq_jsonld_type']]['contactType'],
|
1392 |
-
|
1393 |
-
);
|
1394 |
-
}
|
1395 |
-
|
1396 |
-
if ($key == 'logo') {
|
1397 |
-
if (SQ_Tools::$options['sq_jsonld_type'] == 'Person') {
|
1398 |
-
$key = 'image';
|
1399 |
-
}
|
1400 |
-
$markup[$key] = array(
|
1401 |
-
'@type' => 'ImageObject',
|
1402 |
-
'url' => $value,
|
1403 |
-
);
|
1404 |
-
} else {
|
1405 |
-
$markup[$key] = $value;
|
1406 |
-
}
|
1407 |
-
|
1408 |
-
}
|
1409 |
-
}
|
1410 |
-
}
|
1411 |
-
if (!empty($markup)) {
|
1412 |
-
$socials = array();
|
1413 |
-
if (SQ_Tools::$options['sq_twitter_account'] <> '') {
|
1414 |
-
$socials[] = SQ_Tools::$options['sq_twitter_account'];
|
1415 |
-
}
|
1416 |
-
if (SQ_Tools::$options['sq_facebook_account'] <> '') {
|
1417 |
-
$socials[] = SQ_Tools::$options['sq_facebook_account'];
|
1418 |
-
}
|
1419 |
-
if (SQ_Tools::$options['sq_google_plus'] <> '') {
|
1420 |
-
$socials[] = SQ_Tools::$options['sq_google_plus'];
|
1421 |
-
}
|
1422 |
-
if (SQ_Tools::$options['sq_linkedin_account'] <> '') {
|
1423 |
-
$socials[] = SQ_Tools::$options['sq_linkedin_account'];
|
1424 |
-
}
|
1425 |
-
if (SQ_Tools::$options['sq_pinterest_account'] <> '') {
|
1426 |
-
$socials[] = SQ_Tools::$options['sq_pinterest_account'];
|
1427 |
-
}
|
1428 |
-
if (SQ_Tools::$options['sq_instagram_account'] <> '') {
|
1429 |
-
$socials[] = SQ_Tools::$options['sq_instagram_account'];
|
1430 |
-
}
|
1431 |
-
|
1432 |
-
$markup['potentialAction'] = array(
|
1433 |
-
'@type' => 'SearchAction',
|
1434 |
-
'target' => get_bloginfo('url') . '?s={search_string}',
|
1435 |
-
'query-input' => 'required name=search_string',
|
1436 |
-
);
|
1437 |
-
|
1438 |
-
if (!empty($socials)) {
|
1439 |
-
$markup['sameAs'] = $socials;
|
1440 |
-
}
|
1441 |
-
}
|
1442 |
-
//add current markup
|
1443 |
-
$jsonld->set_data($markup);
|
1444 |
-
} elseif ($this->post_type == 'post') {
|
1445 |
-
$markup['@type'] = 'Article';
|
1446 |
-
$markup['@id'] = $this->url;
|
1447 |
-
$markup['url'] = $this->url;
|
1448 |
-
if (isset($this->title)) {
|
1449 |
-
$markup['name'] = $this->truncate($this->title, $this->min_title_length, $this->max_title_length);
|
1450 |
-
}
|
1451 |
-
if (isset($this->description)) {
|
1452 |
-
$markup['headline'] = $this->truncate($this->description, $this->min_description_length, 110);
|
1453 |
-
}
|
1454 |
-
$markup['mainEntityOfPage'] = array(
|
1455 |
-
'@type' => 'WebPage',
|
1456 |
-
'url' => $this->url
|
1457 |
-
);
|
1458 |
-
|
1459 |
-
if (!empty($this->thumb_images)) {
|
1460 |
-
$markup['thumbnailUrl'] = $this->thumb_images[0]['src'];
|
1461 |
-
}
|
1462 |
-
if (isset($this->post->post_date)) {
|
1463 |
-
$markup['datePublished'] = date('c', strtotime($this->post->post_date));
|
1464 |
-
}
|
1465 |
-
if (isset($this->post->post_modified)) {
|
1466 |
-
$markup['dateModified'] = date('c', strtotime($this->post->post_modified));
|
1467 |
-
}
|
1468 |
-
if (!empty($this->thumb_images)) {
|
1469 |
-
foreach ($this->thumb_images as $image) {
|
1470 |
-
$markup['image'] = array(
|
1471 |
-
"@type" => "ImageObject",
|
1472 |
-
"url" => $image['src'],
|
1473 |
-
"height" => ((isset($image['height']) && $image['height'] <> '') ? (int)$image['height'] : 500),
|
1474 |
-
"width" => ((isset($image['width']) && $image['width'] <> '') ? (int)$image['width'] : 700),
|
1475 |
-
);
|
1476 |
-
break;
|
1477 |
-
}
|
1478 |
-
}
|
1479 |
-
$markup['author'] = array(
|
1480 |
-
"@type" => "Person",
|
1481 |
-
"url" => $this->getAuthor('user_url'),
|
1482 |
-
"name" => $this->getAuthor('display_name'),
|
1483 |
-
);
|
1484 |
-
|
1485 |
-
if (SQ_Tools::$options['sq_jsonld_type'] == 'Organization' && isset(SQ_Tools::$options['sq_jsonld'][SQ_Tools::$options['sq_jsonld_type']])) {
|
1486 |
-
|
1487 |
-
$markup['publisher'] = array(
|
1488 |
-
"@type" => SQ_Tools::$options['sq_jsonld_type'],
|
1489 |
-
"url" => $this->url,
|
1490 |
-
"name" => $this->getAuthor('display_name'),
|
1491 |
-
);
|
1492 |
-
|
1493 |
-
foreach (SQ_Tools::$options['sq_jsonld'][SQ_Tools::$options['sq_jsonld_type']] as $key => $value) {
|
1494 |
-
if ($value <> '') {
|
1495 |
-
if ($key == 'contactType' || $key == 'telephone') {
|
1496 |
-
continue;
|
1497 |
-
}
|
1498 |
-
|
1499 |
-
if ($key == 'logo') {
|
1500 |
-
$markup['publisher']['logo'] = array(
|
1501 |
-
"@type" => "ImageObject",
|
1502 |
-
"url" => $value
|
1503 |
-
);
|
1504 |
-
|
1505 |
-
} else {
|
1506 |
-
$markup['publisher'][$key] = $value;
|
1507 |
-
}
|
1508 |
-
}
|
1509 |
-
}
|
1510 |
-
}
|
1511 |
-
$markup['keywords'] = str_replace(',', '","', $this->grabKeywordsFromPost());
|
1512 |
-
|
1513 |
-
//add current markup
|
1514 |
-
$jsonld->set_data($markup);
|
1515 |
-
} elseif (is_author()) {
|
1516 |
-
$markup['@type'] = 'Person';
|
1517 |
-
$markup['@id'] = $this->getAuthor('user_url');
|
1518 |
-
$markup['url'] = $this->getAuthor('user_url');
|
1519 |
-
$markup['name'] = $this->getAuthor('display_name');
|
1520 |
-
|
1521 |
-
//add current markup
|
1522 |
-
$jsonld->set_data($markup);
|
1523 |
-
}
|
1524 |
-
|
1525 |
-
return apply_filters('sq_json_ld_meta', $jsonld->getStructuredData());
|
1526 |
-
}
|
1527 |
-
|
1528 |
-
/**
|
1529 |
-
* *******************************************************************
|
1530 |
-
* ******************************************************************** */
|
1531 |
-
|
1532 |
-
/**
|
1533 |
-
* Get the title from the curent/last post
|
1534 |
-
*
|
1535 |
-
* @return string
|
1536 |
-
*/
|
1537 |
-
public function grabTitleFromPost($id = null) {
|
1538 |
-
global $wp_query;
|
1539 |
-
$post = null;
|
1540 |
-
$title = '';
|
1541 |
-
$advtitle = '';
|
1542 |
-
|
1543 |
-
if (isset($id)) {
|
1544 |
-
$post = get_post($id);
|
1545 |
-
}
|
1546 |
-
|
1547 |
-
if (!$post) {
|
1548 |
-
if (!empty($wp_query->posts))
|
1549 |
-
foreach ($wp_query->posts as $post) {
|
1550 |
-
$id = (is_attachment()) ? ($post->post_parent) : ($post->ID);
|
1551 |
-
$post = get_post($id);
|
1552 |
-
|
1553 |
-
break;
|
1554 |
-
}
|
1555 |
-
}
|
1556 |
-
|
1557 |
-
if ($post) {
|
1558 |
-
if (!$this->isHomePage())
|
1559 |
-
$title = SQ_Tools::i18n($post->post_title);
|
1560 |
-
|
1561 |
-
//If there is title saved in database
|
1562 |
-
if ($advtitle = $this->getAdvancedMeta($post->ID, 'title')) {
|
1563 |
-
$title = SQ_Tools::i18n($advtitle);
|
1564 |
-
} elseif ($advtitle = $this->getOtherPluginsMeta($post->ID, 'title')) {
|
1565 |
-
$title = SQ_Tools::i18n($advtitle);
|
1566 |
-
}
|
1567 |
-
}
|
1568 |
-
|
1569 |
-
return $title;
|
1570 |
-
}
|
1571 |
-
|
1572 |
-
/**
|
1573 |
-
* Get the description from the curent/last post
|
1574 |
-
*
|
1575 |
-
* @return string
|
1576 |
-
*/
|
1577 |
-
public function grabDescriptionFromPost($id = null) {
|
1578 |
-
global $wp_query;
|
1579 |
-
$post = null;
|
1580 |
-
|
1581 |
-
if (isset($id)) {
|
1582 |
-
$post = get_post($id);
|
1583 |
-
}
|
1584 |
-
|
1585 |
-
$description = '';
|
1586 |
-
$advdescription = '';
|
1587 |
-
//echo 'post: ' . get_the_ID();
|
1588 |
-
if (!$post) {
|
1589 |
-
if (!empty($wp_query->posts))
|
1590 |
-
foreach ($wp_query->posts as $post) {
|
1591 |
-
$id = (is_attachment()) ? ($post->post_parent) : ($post->ID);
|
1592 |
-
$post = get_post($id);
|
1593 |
-
break;
|
1594 |
-
}
|
1595 |
-
}
|
1596 |
-
|
1597 |
-
|
1598 |
-
if ($post) {
|
1599 |
-
if (!$this->isHomePage()) {
|
1600 |
-
$description = $this->truncate(SQ_Tools::i18n($post->post_excerpt), $this->min_description_length, $this->max_description_length);
|
1601 |
-
if (!$description) {
|
1602 |
-
$description = $this->truncate(SQ_Tools::i18n($post->post_content), $this->min_description_length, $this->max_description_length);
|
1603 |
-
}
|
1604 |
-
}
|
1605 |
-
|
1606 |
-
//If there is description saved in database
|
1607 |
-
if ($advdescription = $this->getAdvancedMeta($post->ID, 'description')) {
|
1608 |
-
$description = SQ_Tools::i18n($advdescription);
|
1609 |
-
} elseif ($advdescription = $this->getOtherPluginsMeta($post->ID, 'description')) {
|
1610 |
-
$description = SQ_Tools::i18n($advdescription);
|
1611 |
-
}
|
1612 |
-
}
|
1613 |
-
// "internal whitespace trim"
|
1614 |
-
|
1615 |
-
$description = preg_replace("/\s\s+/u", " ", $description);
|
1616 |
-
|
1617 |
-
return $description;
|
1618 |
-
}
|
1619 |
-
|
1620 |
-
/**
|
1621 |
-
* Get the keywords from the curent/last post and from density
|
1622 |
-
*
|
1623 |
-
* @return array
|
1624 |
-
*/
|
1625 |
-
public function grabKeywordsFromPost($id = null) {
|
1626 |
-
global $wp_query;
|
1627 |
-
|
1628 |
-
$this->max_keywords = ($this->max_keywords > 0 ? ($this->max_keywords - 1) : 0);
|
1629 |
-
if ($this->max_keywords == 0) {
|
1630 |
-
return;
|
1631 |
-
}
|
1632 |
-
|
1633 |
-
$keywords = array();
|
1634 |
-
$advkeywords = '';
|
1635 |
-
|
1636 |
-
|
1637 |
-
if (isset($id) && $post = get_post($id)) {
|
1638 |
-
$density = array();
|
1639 |
-
|
1640 |
-
if (SQ_Tools::$options['sq_keywordtag'] == 1) {
|
1641 |
-
foreach (wp_get_post_tags($id) as $keyword) {
|
1642 |
-
$keywords[] = SQ_Tools::i18n($keyword->name);
|
1643 |
-
}
|
1644 |
-
} else {
|
1645 |
-
if ($json = SQ_ObjController::getModel('SQ_Post')->getKeyword($post->ID)) {
|
1646 |
-
if (isset($json->keyword)) {
|
1647 |
-
$keywords[] = SQ_Tools::i18n($json->keyword);
|
1648 |
-
}
|
1649 |
-
}
|
1650 |
-
}
|
1651 |
-
|
1652 |
-
if (count($keywords) <= $this->max_keywords) {
|
1653 |
-
if ($advkeywords = $this->getAdvancedMeta($post->ID, 'keywords')) {
|
1654 |
-
$keywords[] = SQ_Tools::i18n($advkeywords);
|
1655 |
-
}
|
1656 |
-
}
|
1657 |
-
if (sizeof($keywords) > $this->max_keywords) {
|
1658 |
-
$keywords = array_slice($keywords, 0, $this->max_keywords);
|
1659 |
-
}
|
1660 |
-
} else {
|
1661 |
-
if (is_404()) {
|
1662 |
-
return null;
|
1663 |
-
}
|
1664 |
-
|
1665 |
-
if (!is_home() && !is_page() && !is_single() && !$this->checkFrontPage() && !$this->checkPostsPage()) {
|
1666 |
-
return null;
|
1667 |
-
}
|
1668 |
-
|
1669 |
-
if (is_home()) {
|
1670 |
-
if (isset($wp_query->posts) && !empty($wp_query->posts)) {
|
1671 |
-
$posts = (array)$wp_query->posts;
|
1672 |
-
|
1673 |
-
if (SQ_Tools::$options['sq_keywordtag'] == 1) {
|
1674 |
-
foreach ($posts as $post) {
|
1675 |
-
foreach (wp_get_post_tags($post->ID) as $keyword) {
|
1676 |
-
$keywords[] = SQ_Tools::i18n($keyword->name);
|
1677 |
-
}
|
1678 |
-
}
|
1679 |
-
}
|
1680 |
-
|
1681 |
-
if (sizeof($keywords) > $this->max_keywords) {
|
1682 |
-
$keywords = array_slice($keywords, 0, $this->max_keywords);
|
1683 |
-
}
|
1684 |
-
}
|
1685 |
-
}
|
1686 |
-
if (count($keywords) <= $this->max_keywords) {
|
1687 |
-
if (isset($wp_query->posts) && !empty($wp_query->posts)) {
|
1688 |
-
$posts = (array)$wp_query->posts;
|
1689 |
-
|
1690 |
-
foreach ($posts as $post) {
|
1691 |
-
$id = (is_attachment()) ? ($post->post_parent) : ($post->ID);
|
1692 |
-
|
1693 |
-
if (SQ_Tools::$options['sq_keywordtag'] == 1) {
|
1694 |
-
foreach (wp_get_post_tags($id) as $keyword) {
|
1695 |
-
$keywords[] = SQ_Tools::i18n($keyword->name);
|
1696 |
-
}
|
1697 |
-
}
|
1698 |
-
// autometa
|
1699 |
-
$autometa = stripcslashes(get_post_meta($id, 'autometa', true));
|
1700 |
-
//$autometa = stripcslashes(get_post_meta($post->ID, "autometa", true));
|
1701 |
-
if (isset($autometa) && !empty($autometa)) {
|
1702 |
-
|
1703 |
-
$autometa_array = explode(' ', $autometa);
|
1704 |
-
foreach ($autometa_array as $e) {
|
1705 |
-
$keywords[] = SQ_Tools::i18n($e);
|
1706 |
-
}
|
1707 |
-
}
|
1708 |
-
}
|
1709 |
-
}
|
1710 |
-
}
|
1711 |
-
}
|
1712 |
-
|
1713 |
-
//If there are keywords saved in database
|
1714 |
-
if ($advkeywords = $this->getAdvancedMeta($post->ID, 'keyword')) {
|
1715 |
-
$keywords[] = SQ_Tools::i18n($advkeywords);
|
1716 |
-
}
|
1717 |
-
|
1718 |
-
//If there are keywords in other plugins
|
1719 |
-
if ($advkeywords = $this->getOtherPluginsMeta($post->ID, 'keyword')) {
|
1720 |
-
$keywords[] = SQ_Tools::i18n($advkeywords);
|
1721 |
-
}
|
1722 |
-
|
1723 |
-
return $this->getUniqueKeywords($keywords);
|
1724 |
-
}
|
1725 |
-
|
1726 |
-
/**
|
1727 |
-
* Find the correct canonical url
|
1728 |
-
*
|
1729 |
-
* @return string
|
1730 |
-
*/
|
1731 |
-
public function getCanonicalUrl($external = false) {
|
1732 |
-
global $wp_query;
|
1733 |
-
|
1734 |
-
if (!isset($wp_query) || is_404() || is_search()) {
|
1735 |
-
return false;
|
1736 |
-
}
|
1737 |
-
|
1738 |
-
//If external is TRUE, get the original canonical link set
|
1739 |
-
if ($external) {
|
1740 |
-
if (isset($this->post->ID) && $link = $this->getAdvancedMeta($this->post->ID, 'canonical')) {
|
1741 |
-
if ($link <> '') {
|
1742 |
-
return apply_filters('sq_canonical', $link);
|
1743 |
-
}
|
1744 |
-
}
|
1745 |
-
}
|
1746 |
-
|
1747 |
-
//If we have the Post ID
|
1748 |
-
if (isset($this->post->ID)) {
|
1749 |
-
$link = get_permalink($this->post->ID);
|
1750 |
-
$link = $this->getPaged($link);
|
1751 |
-
if ($link <> '') {
|
1752 |
-
return apply_filters('sq_canonical', $link);
|
1753 |
-
}
|
1754 |
-
}
|
1755 |
-
|
1756 |
-
//Find the canonical
|
1757 |
-
$haspost = (count($wp_query->posts) > 0);
|
1758 |
-
|
1759 |
-
if (get_query_var('m') <> '') {
|
1760 |
-
$m = preg_replace('/[^0-9]/', '', get_query_var('m'));
|
1761 |
-
switch (strlen($m)) {
|
1762 |
-
case 4:
|
1763 |
-
$link = get_year_link($m);
|
1764 |
-
break;
|
1765 |
-
case 6:
|
1766 |
-
$link = get_month_link(substr($m, 0, 4), substr($m, 4, 2));
|
1767 |
-
break;
|
1768 |
-
case 8:
|
1769 |
-
$link = get_day_link(substr($m, 0, 4), substr($m, 4, 2), substr($m, 6, 2));
|
1770 |
-
break;
|
1771 |
-
default:
|
1772 |
-
return false;
|
1773 |
-
}
|
1774 |
-
} elseif ((is_single() || is_page()) && $haspost) {
|
1775 |
-
$post = $wp_query->posts[0];
|
1776 |
-
$link = get_permalink($post->ID);
|
1777 |
-
$link = $this->getPaged($link);
|
1778 |
-
} elseif ((is_single() || is_page()) && $haspost) {
|
1779 |
-
$post = $wp_query->posts[0];
|
1780 |
-
$link = get_permalink($post->ID);
|
1781 |
-
$link = $this->getPaged($link);
|
1782 |
-
} elseif (is_author() && $haspost) {
|
1783 |
-
$link = $this->getAuthor('user_url');
|
1784 |
-
} elseif (is_category() && $haspost) {
|
1785 |
-
$link = $this->getPaged(get_category_link(get_query_var('cat')));
|
1786 |
-
} else if (is_tag() && $haspost) {
|
1787 |
-
$tag = get_term_by('slug', get_query_var('tag'), 'post_tag');
|
1788 |
-
if (!empty($tag->term_id)) {
|
1789 |
-
$link = get_tag_link($tag->term_id);
|
1790 |
-
}
|
1791 |
-
$link = $this->getPaged($link);
|
1792 |
-
} elseif (is_day() && $haspost) {
|
1793 |
-
$link = get_day_link(get_query_var('year'), get_query_var('monthnum'), get_query_var('day'));
|
1794 |
-
} elseif (is_month() && $haspost) {
|
1795 |
-
$link = get_month_link(get_query_var('year'), get_query_var('monthnum'));
|
1796 |
-
} elseif (is_year() && $haspost) {
|
1797 |
-
$link = get_year_link(get_query_var('year'));
|
1798 |
-
} elseif (is_home()) {
|
1799 |
-
if ((get_option('show_on_front') == 'page') && ($pageid = get_option('page_for_posts'))) {
|
1800 |
-
$link = trailingslashit($this->getPaged(get_permalink($pageid)));
|
1801 |
-
} else {
|
1802 |
-
if (function_exists('icl_get_home_url')) {
|
1803 |
-
$link = icl_get_home_url();
|
1804 |
-
} else {
|
1805 |
-
$link = get_option('home');
|
1806 |
-
}
|
1807 |
-
$link = trailingslashit($this->getPaged($link));
|
1808 |
-
}
|
1809 |
-
} elseif (is_tax() && $haspost) {
|
1810 |
-
$taxonomy = get_query_var('taxonomy');
|
1811 |
-
$term = get_query_var('term');
|
1812 |
-
$link = $this->getPaged(
|
1813 |
-
get_term_link($term, $taxonomy));
|
1814 |
-
} else {
|
1815 |
-
return false;
|
1816 |
-
}
|
1817 |
-
|
1818 |
-
return apply_filters('sq_canonical', $link);
|
1819 |
-
}
|
1820 |
-
|
1821 |
-
public function getAuthor($what = 'user_nicename') {
|
1822 |
-
if (!isset($this->author)) {
|
1823 |
-
if (is_author()) {
|
1824 |
-
$this->author = get_userdata(get_query_var('author'));
|
1825 |
-
} elseif (is_single() && isset($this->post->post_author)) {
|
1826 |
-
$this->author = get_userdata((int)$this->post->post_author)->data;
|
1827 |
-
}
|
1828 |
-
}
|
1829 |
-
|
1830 |
-
if (isset($this->author)) {
|
1831 |
-
|
1832 |
-
if ($what == 'user_url' && $this->author->$what == '') {
|
1833 |
-
return get_author_posts_url($this->author->ID, $this->author->user_nicename);
|
1834 |
-
}
|
1835 |
-
if (isset($this->author->$what)) {
|
1836 |
-
return $this->author->$what;
|
1837 |
-
}
|
1838 |
-
}
|
1839 |
-
|
1840 |
-
return false;
|
1841 |
-
}
|
1842 |
-
|
1843 |
-
public function getPaged($link) {
|
1844 |
-
$page = (int)get_query_var('paged');
|
1845 |
-
if ($page && $page > 1) {
|
1846 |
-
$link = trailingslashit($link) . "page/" . "$page/";
|
1847 |
-
}
|
1848 |
-
return $link;
|
1849 |
-
}
|
1850 |
-
|
1851 |
-
/**
|
1852 |
-
* Check if is the homepage
|
1853 |
-
*
|
1854 |
-
* @return bool
|
1855 |
-
*/
|
1856 |
-
public function isHomePage() {
|
1857 |
-
global $wp_query;
|
1858 |
-
|
1859 |
-
if (isset($wp_query->queried_object_id)) {
|
1860 |
-
$this->post = get_post($wp_query->queried_object_id);
|
1861 |
-
|
1862 |
-
}
|
1863 |
-
|
1864 |
-
//Check if blog posts page
|
1865 |
-
if (is_home() && $wp_query->is_posts_page) {
|
1866 |
-
return false;
|
1867 |
-
}
|
1868 |
-
|
1869 |
-
return (is_home() || (isset($wp_query->query) && empty($wp_query->query) && !is_preview()));
|
1870 |
-
}
|
1871 |
-
|
1872 |
-
public function isHtmlHeader() {
|
1873 |
-
$headers = headers_list();
|
1874 |
-
|
1875 |
-
foreach ($headers as $index => $value) {
|
1876 |
-
if (strpos($value, ':') !== false) {
|
1877 |
-
$exploded = @explode(': ', $value);
|
1878 |
-
if (count($exploded) > 1) {
|
1879 |
-
$headers[$exploded[0]] = $exploded[1];
|
1880 |
-
}
|
1881 |
-
}
|
1882 |
-
}
|
1883 |
-
|
1884 |
-
if (isset($headers['Content-Type'])) {
|
1885 |
-
if (strpos($headers['Content-Type'], 'text/html') !== false) {
|
1886 |
-
return true;
|
1887 |
-
}
|
1888 |
-
} else {
|
1889 |
-
return false;
|
1890 |
-
}
|
1891 |
-
|
1892 |
-
return false;
|
1893 |
-
}
|
1894 |
-
|
1895 |
-
/**
|
1896 |
-
* Check if page is shown in front
|
1897 |
-
*
|
1898 |
-
* @return bool
|
1899 |
-
*/
|
1900 |
-
public function checkFrontPage() {
|
1901 |
-
return is_page() && get_option('show_on_front') == 'page' && isset($this->post->ID) && $this->post->ID == get_option('page_on_front');
|
1902 |
-
}
|
1903 |
-
|
1904 |
-
/**
|
1905 |
-
* Check if page is shown in home
|
1906 |
-
*
|
1907 |
-
* @return bool
|
1908 |
-
*/
|
1909 |
-
public function checkPostsPage() {
|
1910 |
-
return is_home() && get_option('show_on_front') == 'page' && isset($this->post->ID) && $this->post->ID == get_option('page_for_posts');
|
1911 |
-
}
|
1912 |
-
|
1913 |
-
public function truncate($text, $min, $max) {
|
1914 |
-
if (function_exists('strip_tags')) {
|
1915 |
-
$text = strip_tags($text);
|
1916 |
-
}
|
1917 |
-
$text = str_replace(']]>', ']]>', $text);
|
1918 |
-
$text = @preg_replace('|\[(.+?)\](.+?\[/\\1\])?|s', '', $text);
|
1919 |
-
$text = strip_tags($text);
|
1920 |
-
|
1921 |
-
if ($max < strlen($text)) {
|
1922 |
-
while ($text[$max] != ' ' && $max > $min) {
|
1923 |
-
$max--;
|
1924 |
-
}
|
1925 |
-
}
|
1926 |
-
$text = substr($text, 0, $max);
|
1927 |
-
return trim(stripcslashes($text));
|
1928 |
-
}
|
1929 |
-
|
1930 |
-
|
1931 |
-
/**
|
1932 |
-
* Show just distinct keywords
|
1933 |
-
*
|
1934 |
-
* @return string
|
1935 |
-
*/
|
1936 |
-
public function getUniqueKeywords($keywords) {
|
1937 |
-
$all = array();
|
1938 |
-
if (is_array($keywords)) {
|
1939 |
-
foreach ($keywords as $word) {
|
1940 |
-
if (function_exists('mb_strtolower')) {
|
1941 |
-
$all[] = mb_strtolower($word, get_bloginfo('charset'));
|
1942 |
-
} else {
|
1943 |
-
$all[] = strtolower($word);
|
1944 |
-
}
|
1945 |
-
}
|
1946 |
-
}
|
1947 |
-
|
1948 |
-
if (is_array($all) && count($all) > 0) {
|
1949 |
-
$all = array_unique($all);
|
1950 |
-
if (sizeof($all) > $this->max_keywords) {
|
1951 |
-
$all = array_slice($all, 0, $this->max_keywords);
|
1952 |
-
}
|
1953 |
-
|
1954 |
-
return implode(',', $all);
|
1955 |
-
}
|
1956 |
-
|
1957 |
-
return '';
|
1958 |
-
}
|
1959 |
-
|
1960 |
-
/**
|
1961 |
-
* Check if other plugin are/were installed and don't change the SEO
|
1962 |
-
*
|
1963 |
-
* @param type $post_id
|
1964 |
-
* @return boolean
|
1965 |
-
*/
|
1966 |
-
public function getAdvancedMeta($post_id, $meta = 'title') {
|
1967 |
-
global $wpdb;
|
1968 |
-
|
1969 |
-
$field = '';
|
1970 |
-
$cond = '';
|
1971 |
-
|
1972 |
-
if (!isset($post_id) || (int)$post_id == 0) {
|
1973 |
-
return '';
|
1974 |
-
}
|
1975 |
-
|
1976 |
-
switch ($meta) {
|
1977 |
-
case 'title':
|
1978 |
-
$field = '_sq_fp_title';
|
1979 |
-
break;
|
1980 |
-
case 'description':
|
1981 |
-
$field = '_sq_fp_description';
|
1982 |
-
break;
|
1983 |
-
case 'keyword':
|
1984 |
-
$field = '_sq_fp_keywords';
|
1985 |
-
break;
|
1986 |
-
case 'ogimage':
|
1987 |
-
$field = '_sq_fp_ogimage';
|
1988 |
-
break;
|
1989 |
-
case 'canonical':
|
1990 |
-
$field = '_sq_canonical';
|
1991 |
-
break;
|
1992 |
-
default:
|
1993 |
-
$field = '_sq_fp_title';
|
1994 |
-
}
|
1995 |
-
|
1996 |
-
if ($field <> '' && isset($this->meta[$post_id][$field])) {
|
1997 |
-
return $this->meta[$post_id][$field];
|
1998 |
-
}
|
1999 |
-
|
2000 |
-
// Get the custom Squirrly meta
|
2001 |
-
//////////////////////////////////////////
|
2002 |
-
$fields = array('_sq_fp_title' => '', '_sq_fp_description' => '', '_sq_fp_keywords' => '', '_sq_fp_ogimage' => '', '_sq_canonical' => '');
|
2003 |
-
|
2004 |
-
$sql = "SELECT `meta_key`, `meta_value`
|
2005 |
-
FROM `" . $wpdb->postmeta . "`
|
2006 |
-
WHERE `post_id`=" . (int)$post_id;
|
2007 |
-
|
2008 |
-
if ($rows = $wpdb->get_results($sql)) {
|
2009 |
-
foreach ($rows as $row) {
|
2010 |
-
if (array_key_exists($row->meta_key, $fields)) {
|
2011 |
-
$this->meta[$post_id][$row->meta_key] = $row->meta_value;
|
2012 |
-
}
|
2013 |
-
}
|
2014 |
-
}
|
2015 |
-
if (isset($this->meta[$post_id]) && is_array($this->meta[$post_id])) {
|
2016 |
-
$this->meta[$post_id] = array_merge($fields, $this->meta[$post_id]);
|
2017 |
-
} else {
|
2018 |
-
$this->meta[$post_id] = $fields;
|
2019 |
-
}
|
2020 |
-
//////////////////////////////////////////
|
2021 |
-
|
2022 |
-
if ($field <> '') {
|
2023 |
-
return $this->meta[$post_id][$field];
|
2024 |
-
}
|
2025 |
-
/////////////
|
2026 |
-
return false;
|
2027 |
-
}
|
2028 |
-
|
2029 |
-
/**
|
2030 |
-
* Check if other plugin are/were installed and don't change the SEO
|
2031 |
-
*
|
2032 |
-
* @param type $post_id
|
2033 |
-
* @return boolean
|
2034 |
-
*/
|
2035 |
-
public function getOtherPluginsMeta($post_id, $meta = 'title') {
|
2036 |
-
global $wpdb;
|
2037 |
-
|
2038 |
-
$field = '';
|
2039 |
-
$cond = '';
|
2040 |
-
|
2041 |
-
if (!isset($post_id) || (int)$post_id == 0) {
|
2042 |
-
return '';
|
2043 |
-
}
|
2044 |
-
|
2045 |
-
//check yoast
|
2046 |
-
switch ($meta) {
|
2047 |
-
case 'title':
|
2048 |
-
$field = '_yoast_wpseo_title';
|
2049 |
-
break;
|
2050 |
-
case 'description':
|
2051 |
-
$field = '_yoast_wpseo_metadesc';
|
2052 |
-
break;
|
2053 |
-
case 'keyword':
|
2054 |
-
$field = '_yoast_wpseo_focuskw';
|
2055 |
-
break;
|
2056 |
-
default:
|
2057 |
-
$field = '_yoast_wpseo_title';
|
2058 |
-
}
|
2059 |
-
|
2060 |
-
if ($field <> '' && isset($this->meta[$post_id][$field])) {
|
2061 |
-
return $this->meta[$post_id][$field];
|
2062 |
-
}
|
2063 |
-
|
2064 |
-
// Get the custom Squirrly meta
|
2065 |
-
//////////////////////////////////////////
|
2066 |
-
$fields = array('_yoast_wpseo_title' => '', '_yoast_wpseo_metadesc' => '', '_yoast_wpseo_focuskw' => '');
|
2067 |
-
|
2068 |
-
$sql = "SELECT `meta_key`, `meta_value`
|
2069 |
-
FROM `" . $wpdb->postmeta . "`
|
2070 |
-
WHERE `post_id`=" . (int)$post_id;
|
2071 |
-
|
2072 |
-
$rows = $wpdb->get_results($sql);
|
2073 |
-
if ($rows) {
|
2074 |
-
foreach ($rows as $row) {
|
2075 |
-
if (array_key_exists($row->meta_key, $fields)) {
|
2076 |
-
$this->meta[$post_id][$row->meta_key] = $row->meta_value;
|
2077 |
-
}
|
2078 |
-
}
|
2079 |
-
}
|
2080 |
-
if (isset($this->meta[$post_id]) && is_array($this->meta[$post_id])) {
|
2081 |
-
$this->meta[$post_id] = array_merge($fields, $this->meta[$post_id]);
|
2082 |
-
} else {
|
2083 |
-
$this->meta[$post_id] = $fields;
|
2084 |
-
}
|
2085 |
-
//////////////////////////////////////////
|
2086 |
-
if ($field <> '') {
|
2087 |
-
return $this->meta[$post_id][$field];
|
2088 |
-
}
|
2089 |
-
/////////////
|
2090 |
-
return false;
|
2091 |
-
}
|
2092 |
-
|
2093 |
-
/**
|
2094 |
-
* ROBOTSTXT
|
2095 |
-
*/
|
2096 |
-
// add sitemap location in robots.txt generated by WP
|
2097 |
-
public function robots($content = '') {
|
2098 |
-
global $blog_id;
|
2099 |
-
|
2100 |
-
/** display robots.txt */
|
2101 |
-
header('Status: 200 OK', true, 200);
|
2102 |
-
header('Content-type: text/plain; charset=' . get_bloginfo('charset'));
|
2103 |
-
|
2104 |
-
|
2105 |
-
echo "\n# Squirrly SEO Robots";
|
2106 |
-
|
2107 |
-
if (get_option('blog_public') != 1) {
|
2108 |
-
echo "\n# Squirrly Sitemaps is disabled. Please see Site Visibility on Settings > Reading.";
|
2109 |
-
} else {
|
2110 |
-
if (SQ_Tools::$options['sq_auto_sitemap'] == 1) {
|
2111 |
-
foreach ((array)SQ_Tools::$options['sq_sitemap'] as $name => $sitemap) {
|
2112 |
-
if ($name == 'sitemap-product' && !SQ_ObjController::getModel('SQ_BlockSettingsSeo')->isEcommerce()) {
|
2113 |
-
continue;
|
2114 |
-
}
|
2115 |
-
if ($sitemap[1] == 1 || $sitemap[1] == 2) {
|
2116 |
-
echo "\nSitemap: " . trailingslashit(get_bloginfo('url')) . $sitemap[0];
|
2117 |
-
}
|
2118 |
-
}
|
2119 |
-
}
|
2120 |
-
|
2121 |
-
if (empty(SQ_Tools::$options['sq_sitemap']))
|
2122 |
-
echo "\n# No Squirrly SEO Robots found. ";
|
2123 |
-
}
|
2124 |
-
echo "\n\n";
|
2125 |
-
|
2126 |
-
if (!empty(SQ_Tools::$options['sq_robots_permission'])) {
|
2127 |
-
foreach ((array)SQ_Tools::$options['sq_robots_permission'] as $robot_txt)
|
2128 |
-
echo $robot_txt . "\n";
|
2129 |
-
}
|
2130 |
-
echo "\n\n";
|
2131 |
-
|
2132 |
-
echo $content;
|
2133 |
-
exit;
|
2134 |
-
}
|
2135 |
-
|
2136 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
models/SQ_Sitemaps.php
DELETED
@@ -1,453 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/**
|
4 |
-
* Squirrly SEO - Sitemap Model
|
5 |
-
*
|
6 |
-
* Used to get the sitemap format for each type
|
7 |
-
*
|
8 |
-
* @class Model_SQ_Sitemaps
|
9 |
-
*/
|
10 |
-
class Model_SQ_Sitemaps {
|
11 |
-
|
12 |
-
var $args = array();
|
13 |
-
var $frequency;
|
14 |
-
var $type;
|
15 |
-
|
16 |
-
public function __construct() {
|
17 |
-
//For sitemap ping
|
18 |
-
$this->args['timeout'] = 5;
|
19 |
-
|
20 |
-
$this->frequency = array();
|
21 |
-
$this->frequency['daily'] = array('sitemap-home' => array(1, 'daily'), 'sitemap-product' => array(0.8, 'weekly'), 'sitemap-post' => array(0.8, 'daily'), 'sitemap-page' => array(0.6, 'weekly'), 'sitemap-category' => array(0.5, 'weekly'), 'sitemap-post_tag' => array(0.5, 'daily'), 'sitemap-archive' => array(0.3, 'monthly'), 'sitemap-author' => array(0.3, 'weekly'), 'sitemap-custom-tax' => array(0.3, 'weekly'), 'sitemap-custom-post' => array(0.8, 'daily'));
|
22 |
-
$this->frequency['weekly'] = array('sitemap-home' => array(1, 'weekly'), 'sitemap-product' => array(0.8, 'weekly'), 'sitemap-post' => array(0.8, 'weekly'), 'sitemap-page' => array(0.6, 'monthly'), 'sitemap-category' => array(0.3, 'monthly'), 'sitemap-post_tag' => array(0.5, 'weekly'), 'sitemap-archive' => array(0.3, 'monthly'), 'sitemap-author' => array(0.3, 'weekly'), 'sitemap-custom-tax' => array(0.3, 'weekly'), 'sitemap-custom-post' => array(0.8, 'weekly'));
|
23 |
-
$this->frequency['monthly'] = array('sitemap-home' => array(1, 'monthly'), 'sitemap-product' => array(0.8, 'weekly'), 'sitemap-post' => array(0.8, 'monthly'), 'sitemap-page' => array(0.6, 'monthly'), 'sitemap-category' => array(0.3, 'monthly'), 'sitemap-post_tag' => array(0.5, 'monthly'), 'sitemap-archive' => array(0.3, 'monthly'), 'sitemap-author' => array(0.3, 'monthly'), 'sitemap-custom-tax' => array(0.3, 'monthly'), 'sitemap-custom-post' => array(0.8, 'monthly'));
|
24 |
-
$this->frequency['yearly'] = array('sitemap-home' => array(1, 'monthly'), 'sitemap-product' => array(0.8, 'weekly'), 'sitemap-post' => array(0.8, 'monthly'), 'sitemap-page' => array(0.6, 'yearly'), 'sitemap-category' => array(0.3, 'yearly'), 'sitemap-post_tag' => array(0.5, 'monthly'), 'sitemap-archive' => array(0.3, 'yearly'), 'sitemap-author' => array(0.3, 'yearly'), 'sitemap-custom-tax' => array(0.3, 'yearly'), 'sitemap-custom-post' => array(0.8, 'monthly'));
|
25 |
-
}
|
26 |
-
|
27 |
-
/**
|
28 |
-
* Add the Sitemap Index
|
29 |
-
* @global type $polylang
|
30 |
-
* @return type
|
31 |
-
*/
|
32 |
-
public function getHomeLink() {
|
33 |
-
$homes = array();
|
34 |
-
$homes['contains'] = array();
|
35 |
-
global $polylang;
|
36 |
-
|
37 |
-
if (isset($polylang)) {
|
38 |
-
foreach ($polylang->get_languages_list() as $term) {
|
39 |
-
$xml = array();
|
40 |
-
$xml['loc'] = esc_url($polylang->get_home_url($term));
|
41 |
-
$xml['lastmod'] = trim(mysql2date('Y-m-d\TH:i:s+00:00', $this->lastModified(), false));
|
42 |
-
$xml['changefreq'] = $this->frequency[SQ_Tools::$options['sq_sitemap_frequency']]['sitemap-home'][1];
|
43 |
-
$xml['priority'] = $this->frequency[SQ_Tools::$options['sq_sitemap_frequency']]['sitemap-home'][0];
|
44 |
-
$homes[] = $xml;
|
45 |
-
}
|
46 |
-
} else {
|
47 |
-
$xml = array();
|
48 |
-
$xml['loc'] = home_url();
|
49 |
-
$xml['lastmod'] = trim(mysql2date('Y-m-d\TH:i:s+00:00', $this->lastModified(), false));
|
50 |
-
$xml['changefreq'] = $this->frequency[SQ_Tools::$options['sq_sitemap_frequency']]['sitemap-home'][1];
|
51 |
-
$xml['priority'] = $this->frequency[SQ_Tools::$options['sq_sitemap_frequency']]['sitemap-home'][0];
|
52 |
-
if ($post_id = get_option('page_on_front')) {
|
53 |
-
if (SQ_Tools::$options['sq_sitemap_show']['images'] == 1) {
|
54 |
-
if ($images = SQ_ObjController::getModel('SQ_Frontend')->getImagesFromContent($post_id, true)) {
|
55 |
-
array_push($homes['contains'], 'image');
|
56 |
-
$xml['image:image'] = array();
|
57 |
-
foreach ($images as $image) {
|
58 |
-
if (empty($image['src'])) {
|
59 |
-
continue;
|
60 |
-
}
|
61 |
-
|
62 |
-
|
63 |
-
$xml['image:image'][] = array(
|
64 |
-
'image:loc' => $image['src'],
|
65 |
-
'image:title' => SQ_ObjController::getModel('SQ_Frontend')->clearTitle($image['title']),
|
66 |
-
'image:caption' => SQ_ObjController::getModel('SQ_Frontend')->clearDescription($image['description']),
|
67 |
-
);
|
68 |
-
}
|
69 |
-
}
|
70 |
-
}
|
71 |
-
}
|
72 |
-
$homes[] = $xml;
|
73 |
-
unset($xml);
|
74 |
-
}
|
75 |
-
|
76 |
-
return $homes;
|
77 |
-
}
|
78 |
-
|
79 |
-
/**
|
80 |
-
* Add posts/pages in sitemap
|
81 |
-
* @return type
|
82 |
-
*/
|
83 |
-
public function getListPosts() {
|
84 |
-
global $wp_query;
|
85 |
-
$wp_query->get_posts();
|
86 |
-
$posts = array();
|
87 |
-
$posts['contains'] = array();
|
88 |
-
if (have_posts()) {
|
89 |
-
while (have_posts()) {
|
90 |
-
the_post();
|
91 |
-
|
92 |
-
//do not incude password protected pages in sitemap
|
93 |
-
if (post_password_required()) {
|
94 |
-
continue;
|
95 |
-
}
|
96 |
-
|
97 |
-
$post = get_post();
|
98 |
-
|
99 |
-
$xml = array();
|
100 |
-
$xml['loc'] = esc_url(get_permalink());
|
101 |
-
$xml['lastmod'] = trim(mysql2date('Y-m-d\TH:i:s+00:00', $this->lastModified(), false));
|
102 |
-
$xml['changefreq'] = $this->frequency[SQ_Tools::$options['sq_sitemap_frequency']][$this->type][1];
|
103 |
-
$xml['priority'] = $this->frequency[SQ_Tools::$options['sq_sitemap_frequency']][$this->type][0];
|
104 |
-
|
105 |
-
if (SQ_Tools::$options['sq_sitemap_show']['images'] == 1) {
|
106 |
-
if ($images = SQ_ObjController::getModel('SQ_Frontend')->getImagesFromContent($post->ID, true)) {
|
107 |
-
|
108 |
-
array_push($posts['contains'], 'image');
|
109 |
-
$xml['image:image'] = array();
|
110 |
-
foreach ($images as $image) {
|
111 |
-
if (empty($image['src'])) {
|
112 |
-
continue;
|
113 |
-
}
|
114 |
-
|
115 |
-
$xml['image:image'][] = array(
|
116 |
-
'image:loc' => $image['src'],
|
117 |
-
'image:title' => SQ_ObjController::getModel('SQ_Frontend')->clearTitle($image['title']),
|
118 |
-
'image:caption' => SQ_ObjController::getModel('SQ_Frontend')->clearDescription($image['description']),
|
119 |
-
);
|
120 |
-
}
|
121 |
-
}
|
122 |
-
}
|
123 |
-
|
124 |
-
if (SQ_Tools::$options['sq_sitemap_show']['videos'] == 1) {
|
125 |
-
$images = SQ_ObjController::getModel('SQ_Frontend')->getImagesFromContent($post->ID, true);
|
126 |
-
if (isset($images[0]['src']) && $videos = SQ_ObjController::getModel('SQ_Frontend')->getVideosFromContent($post->ID)) {
|
127 |
-
array_push($posts['contains'], 'video');
|
128 |
-
$xml['video:video'] = array();
|
129 |
-
|
130 |
-
foreach ($videos as $video) {
|
131 |
-
if ($video == '') {
|
132 |
-
continue;
|
133 |
-
}
|
134 |
-
|
135 |
-
$xml['video:video'][$post->ID] = array(
|
136 |
-
'video:player_loc' => $video,
|
137 |
-
'video:thumbnail_loc' => $images[0]['src'],
|
138 |
-
'video:title' => SQ_ObjController::getModel('SQ_Frontend')->clearTitle(SQ_ObjController::getModel('SQ_Frontend')->grabTitleFromPost($post->ID)),
|
139 |
-
'video:description' => SQ_ObjController::getModel('SQ_Frontend')->clearDescription(SQ_ObjController::getModel('SQ_Frontend')->grabDescriptionFromPost($post->ID)),
|
140 |
-
);
|
141 |
-
|
142 |
-
//set the first keyword for this video
|
143 |
-
$keywords = SQ_ObjController::getModel('SQ_Frontend')->grabKeywordsFromPost($post->ID);
|
144 |
-
$keywords = preg_split('/,/', $keywords);
|
145 |
-
if (is_array($keywords)) {
|
146 |
-
$xml['video:video'][$post->ID]['video:tag'] = $keywords[0];
|
147 |
-
}
|
148 |
-
}
|
149 |
-
}
|
150 |
-
}
|
151 |
-
$posts[] = $xml;
|
152 |
-
unset($xml);
|
153 |
-
}
|
154 |
-
}
|
155 |
-
|
156 |
-
return $posts;
|
157 |
-
}
|
158 |
-
|
159 |
-
/**
|
160 |
-
* Add the post news in sitemap
|
161 |
-
* If the site is registeres for google news
|
162 |
-
* @return type
|
163 |
-
*/
|
164 |
-
public function getListNews() {
|
165 |
-
global $wp_query;
|
166 |
-
$wp_query->get_posts();
|
167 |
-
|
168 |
-
$posts = array();
|
169 |
-
$posts['contains'] = array();
|
170 |
-
|
171 |
-
if (have_posts()) {
|
172 |
-
while (have_posts()) {
|
173 |
-
the_post();
|
174 |
-
$post = get_post();
|
175 |
-
|
176 |
-
$xml = array();
|
177 |
-
|
178 |
-
$xml['loc'] = esc_url(get_permalink());
|
179 |
-
$language = convert_chars(strip_tags(get_bloginfo('language')));
|
180 |
-
$language = substr($language, 0, strpos($language, '-'));
|
181 |
-
if ($language == '')
|
182 |
-
$language = 'en';
|
183 |
-
|
184 |
-
$xml['news:news'][$post->ID] = array(
|
185 |
-
'news:publication' => array(
|
186 |
-
'news:name' => $this->sanitizeString(get_bloginfo('name')),
|
187 |
-
'news:language' => $language
|
188 |
-
)
|
189 |
-
);
|
190 |
-
$xml['news:news'][$post->ID]['news:publication_date'] = trim(mysql2date('Y-m-d\TH:i:s+00:00', $this->lastModified(), false));
|
191 |
-
$xml['news:news'][$post->ID]['news:title'] = $this->sanitizeString(get_the_title());
|
192 |
-
$xml['news:news'][$post->ID]['news:keywords'] = (string) SQ_ObjController::getModel('SQ_Frontend')->grabKeywordsFromPost($post->ID);
|
193 |
-
|
194 |
-
|
195 |
-
if (SQ_Tools::$options['sq_sitemap_show']['images'] == 1) {
|
196 |
-
if ($images = SQ_ObjController::getModel('SQ_Frontend')->getImagesFromContent($post->ID, true)) {
|
197 |
-
array_push($posts['contains'], 'image');
|
198 |
-
$xml['image:image'] = array();
|
199 |
-
foreach ($images as $image) {
|
200 |
-
if (empty($image['src'])) {
|
201 |
-
continue;
|
202 |
-
}
|
203 |
-
|
204 |
-
$xml['image:image'][] = array(
|
205 |
-
'image:loc' => $image['src'],
|
206 |
-
'image:title' => SQ_ObjController::getModel('SQ_Frontend')->clearTitle($image['title']),
|
207 |
-
'image:caption' => SQ_ObjController::getModel('SQ_Frontend')->clearDescription($image['description']),
|
208 |
-
);
|
209 |
-
}
|
210 |
-
}
|
211 |
-
}
|
212 |
-
|
213 |
-
if (SQ_Tools::$options['sq_sitemap_show']['videos'] == 1) {
|
214 |
-
$images = SQ_ObjController::getModel('SQ_Frontend')->getImagesFromContent($post->ID, true);
|
215 |
-
if (isset($images[0]['src']) && $videos = SQ_ObjController::getModel('SQ_Frontend')->getVideosFromContent($post->ID)) {
|
216 |
-
array_push($posts['contains'], 'video');
|
217 |
-
$xml['video:video'] = array();
|
218 |
-
foreach ($videos as $video) {
|
219 |
-
if ($video == '') {
|
220 |
-
continue;
|
221 |
-
}
|
222 |
-
|
223 |
-
$xml['video:video'][$post->ID] = array(
|
224 |
-
'video:player_loc' => $video,
|
225 |
-
'video:thumbnail_loc' => $images[0]['src'],
|
226 |
-
'video:title' => SQ_ObjController::getModel('SQ_Frontend')->clearTitle(SQ_ObjController::getModel('SQ_Frontend')->grabTitleFromPost($post->ID)),
|
227 |
-
'video:description' => SQ_ObjController::getModel('SQ_Frontend')->clearDescription(SQ_ObjController::getModel('SQ_Frontend')->grabDescriptionFromPost($post->ID)),
|
228 |
-
);
|
229 |
-
|
230 |
-
//set the first keyword for this video
|
231 |
-
$keywords = SQ_ObjController::getModel('SQ_Frontend')->grabKeywordsFromPost($post->ID);
|
232 |
-
$keywords = preg_split('/,/', $keywords);
|
233 |
-
if (is_array($keywords)) {
|
234 |
-
$xml['video:video'][$post->ID]['video:tag'] = $keywords[0];
|
235 |
-
}
|
236 |
-
}
|
237 |
-
}
|
238 |
-
}
|
239 |
-
$posts[] = $xml;
|
240 |
-
unset($xml);
|
241 |
-
}
|
242 |
-
}
|
243 |
-
|
244 |
-
return $posts;
|
245 |
-
}
|
246 |
-
|
247 |
-
/**
|
248 |
-
* Add the Taxonomies in sitemap
|
249 |
-
* @param type $type
|
250 |
-
* @return type
|
251 |
-
*/
|
252 |
-
public function getListTerms($type = null) {
|
253 |
-
if (!isset($type)) {
|
254 |
-
$type = $this->type;
|
255 |
-
}
|
256 |
-
|
257 |
-
$terms = $array = array();
|
258 |
-
$array['contains'] = array();
|
259 |
-
if ($type == 'sitemap-custom-tax') {
|
260 |
-
$taxonomies = $this->excludeTypes(get_taxonomies(), array('category', 'post_tag', 'nav_menu', 'link_category', 'post_format'));
|
261 |
-
if (!empty($taxonomies)) {
|
262 |
-
$taxonomies = array_unique($taxonomies);
|
263 |
-
}
|
264 |
-
foreach ($taxonomies as $taxonomy) {
|
265 |
-
$array = array_merge($array, $this->getListTerms($taxonomy));
|
266 |
-
}
|
267 |
-
} else {
|
268 |
-
$terms = get_terms(str_replace('sitemap-', '', $type));
|
269 |
-
}
|
270 |
-
|
271 |
-
if (!isset(SQ_Tools::$options['sq_sitemap'][$type])) {
|
272 |
-
$type = 'sitemap-custom-tax';
|
273 |
-
}
|
274 |
-
|
275 |
-
if (!empty($terms)) {
|
276 |
-
foreach ($terms AS $term) {
|
277 |
-
$xml = array();
|
278 |
-
if (!isset($term->lastmod)){
|
279 |
-
continue;
|
280 |
-
}
|
281 |
-
|
282 |
-
$xml['loc'] = esc_url(get_term_link($term, $term->taxonomy));
|
283 |
-
$xml['lastmod'] = date('Y-m-d\TH:i:s+00:00', $term->lastmod);
|
284 |
-
$xml['changefreq'] = $this->frequency[SQ_Tools::$options['sq_sitemap_frequency']][$type][1];
|
285 |
-
$xml['priority'] = $this->frequency[SQ_Tools::$options['sq_sitemap_frequency']][$type][0];
|
286 |
-
|
287 |
-
$array[] = $xml;
|
288 |
-
}
|
289 |
-
}
|
290 |
-
return $array;
|
291 |
-
}
|
292 |
-
|
293 |
-
/**
|
294 |
-
* Add the authors in sitemap
|
295 |
-
* @return type
|
296 |
-
*/
|
297 |
-
public function getListAuthors() {
|
298 |
-
$authors = $array = array();
|
299 |
-
$authors = apply_filters('sq-sitemap-authors', $this->type);
|
300 |
-
|
301 |
-
if (!empty($authors)) {
|
302 |
-
foreach ($authors AS $author) {
|
303 |
-
$xml = array();
|
304 |
-
|
305 |
-
$xml['loc'] = get_author_posts_url($author->ID, $author->user_nicename);
|
306 |
-
if (isset($author->lastmod) && $author->lastmod <> '')
|
307 |
-
$xml['lastmod'] = date('Y-m-d\TH:i:s+00:00', strtotime($author->lastmod));
|
308 |
-
$xml['changefreq'] = $this->frequency[SQ_Tools::$options['sq_sitemap_frequency']][$this->type][1];
|
309 |
-
$xml['priority'] = $this->frequency[SQ_Tools::$options['sq_sitemap_frequency']][$this->type][0];
|
310 |
-
|
311 |
-
$array[] = $xml;
|
312 |
-
}
|
313 |
-
}
|
314 |
-
return $array;
|
315 |
-
}
|
316 |
-
|
317 |
-
/**
|
318 |
-
* Add the archive in sitemap
|
319 |
-
* @return type
|
320 |
-
*/
|
321 |
-
public function getListArchive() {
|
322 |
-
$array = array();
|
323 |
-
$archives = apply_filters('sq-sitemap-archive', $this->type);
|
324 |
-
if (!empty($archives)) {
|
325 |
-
foreach ($archives as $archive) {
|
326 |
-
$xml = array();
|
327 |
-
|
328 |
-
$xml['loc'] = get_month_link($archive->year, $archive->month);
|
329 |
-
if (isset($archive->lastmod) && $archive->lastmod <> '')
|
330 |
-
$xml['lastmod'] = date('Y-m-d\TH:i:s+00:00', strtotime($archive->lastmod));
|
331 |
-
|
332 |
-
$xml['changefreq'] = $this->frequency[SQ_Tools::$options['sq_sitemap_frequency']][$this->type][1];
|
333 |
-
$xml['priority'] = $this->frequency[SQ_Tools::$options['sq_sitemap_frequency']][$this->type][0];
|
334 |
-
|
335 |
-
$array[] = $xml;
|
336 |
-
}
|
337 |
-
}
|
338 |
-
|
339 |
-
return $array;
|
340 |
-
}
|
341 |
-
|
342 |
-
private function sanitizeString($string) {
|
343 |
-
return esc_html(ent2ncr(strip_tags($string)));
|
344 |
-
}
|
345 |
-
|
346 |
-
/**
|
347 |
-
* Get the last modified date for the specific post/page
|
348 |
-
*
|
349 |
-
* @global WP_Post $post
|
350 |
-
* @param string $sitemap
|
351 |
-
* @param string $term
|
352 |
-
* @return string
|
353 |
-
*/
|
354 |
-
public function lastModified($sitemap = 'post_type', $term = '') {
|
355 |
-
if ('post_type' == $sitemap) :
|
356 |
-
|
357 |
-
global $post;
|
358 |
-
|
359 |
-
if (isset($post->ID)) {
|
360 |
-
if (empty($this->postmodified[$post->ID])) {
|
361 |
-
$postmodified = get_post_modified_time('Y-m-d H:i:s', true, $post->ID);
|
362 |
-
$options = get_option('post_types');
|
363 |
-
|
364 |
-
if (!empty($options[$post->post_type]['update_lastmod_on_comments']))
|
365 |
-
$lastcomment = get_comments(array(
|
366 |
-
'status' => 'approve',
|
367 |
-
'number' => 1,
|
368 |
-
'post_id' => $post->ID,
|
369 |
-
));
|
370 |
-
|
371 |
-
if (isset($lastcomment[0]->comment_date_gmt))
|
372 |
-
if (mysql2date('U', $lastcomment[0]->comment_date_gmt) > mysql2date('U', $postmodified))
|
373 |
-
$postmodified = $lastcomment[0]->comment_date_gmt;
|
374 |
-
|
375 |
-
$this->postmodified[$post->ID] = $postmodified;
|
376 |
-
}
|
377 |
-
}
|
378 |
-
return $this->postmodified[$post->ID];
|
379 |
-
|
380 |
-
elseif (!empty($term)) :
|
381 |
-
|
382 |
-
if (is_object($term)) {
|
383 |
-
if (!isset($this->termmodified[$term->term_id])) {
|
384 |
-
// get the latest post in this taxonomy item, to use its post_date as lastmod
|
385 |
-
$posts = get_posts(array(
|
386 |
-
'post_type' => 'any',
|
387 |
-
'numberposts' => 1,
|
388 |
-
'no_found_rows' => true,
|
389 |
-
'update_post_meta_cache' => false,
|
390 |
-
'update_post_term_cache' => false,
|
391 |
-
'update_cache' => false,
|
392 |
-
'tax_query' => array(
|
393 |
-
array(
|
394 |
-
'taxonomy' => $term->taxonomy,
|
395 |
-
'field' => 'slug',
|
396 |
-
'terms' => $term->slug
|
397 |
-
)
|
398 |
-
)
|
399 |
-
)
|
400 |
-
);
|
401 |
-
$this->termmodified[$term->term_id] = isset($posts[0]->post_date_gmt) ? $posts[0]->post_date_gmt : '';
|
402 |
-
}
|
403 |
-
return $this->termmodified[$term->term_id];
|
404 |
-
} else {
|
405 |
-
$obj = get_taxonomy($term);
|
406 |
-
return get_lastdate('gmt', $obj->object_type);
|
407 |
-
}
|
408 |
-
|
409 |
-
else :
|
410 |
-
|
411 |
-
return '0000-00-00 00:00:00';
|
412 |
-
|
413 |
-
endif;
|
414 |
-
}
|
415 |
-
|
416 |
-
/**
|
417 |
-
* Check if the current page is the home page
|
418 |
-
* @global type $polylang
|
419 |
-
* @param type $id
|
420 |
-
* @return type
|
421 |
-
*/
|
422 |
-
public function is_home($id) {
|
423 |
-
$home = array();
|
424 |
-
$id = get_option('page_for_posts');
|
425 |
-
|
426 |
-
if (!empty($id)) {
|
427 |
-
global $polylang;
|
428 |
-
if (isset($polylang)) {
|
429 |
-
$home = $polylang->get_translations('post', $id);
|
430 |
-
} else {
|
431 |
-
$home = array($id);
|
432 |
-
}
|
433 |
-
}
|
434 |
-
|
435 |
-
return in_array($id, $home);
|
436 |
-
}
|
437 |
-
|
438 |
-
/**
|
439 |
-
* Excude types from array
|
440 |
-
* @param array $types
|
441 |
-
* @param array $exclude
|
442 |
-
* @return array
|
443 |
-
*/
|
444 |
-
public function excludeTypes($types, $exclude) {
|
445 |
-
foreach ($exclude as $value) {
|
446 |
-
if (in_array($value, $types)) {
|
447 |
-
unset($types[$value]);
|
448 |
-
}
|
449 |
-
}
|
450 |
-
return $types;
|
451 |
-
}
|
452 |
-
|
453 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
models/Sitemaps.php
ADDED
@@ -0,0 +1,495 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Squirrly SEO - Sitemap Model
|
5 |
+
*
|
6 |
+
* Used to get the sitemap format for each type
|
7 |
+
*
|
8 |
+
* @class SQ_Models_Sitemaps
|
9 |
+
*/
|
10 |
+
class SQ_Models_Sitemaps extends SQ_Models_Abstract_Seo {
|
11 |
+
|
12 |
+
var $args = array();
|
13 |
+
var $frequency;
|
14 |
+
var $type;
|
15 |
+
|
16 |
+
public function __construct() {
|
17 |
+
//parent::__construct();
|
18 |
+
//For sitemap ping
|
19 |
+
$this->args['timeout'] = 5;
|
20 |
+
|
21 |
+
$this->frequency = array();
|
22 |
+
$this->frequency['daily'] = array('sitemap-home' => array(1, 'daily'), 'sitemap-product' => array(0.8, 'weekly'), 'sitemap-post' => array(0.8, 'daily'), 'sitemap-page' => array(0.6, 'weekly'), 'sitemap-category' => array(0.5, 'weekly'), 'sitemap-post_tag' => array(0.5, 'daily'), 'sitemap-archive' => array(0.3, 'monthly'), 'sitemap-author' => array(0.3, 'weekly'), 'sitemap-custom-tax' => array(0.3, 'weekly'), 'sitemap-custom-post' => array(0.8, 'daily'));
|
23 |
+
$this->frequency['weekly'] = array('sitemap-home' => array(1, 'weekly'), 'sitemap-product' => array(0.8, 'weekly'), 'sitemap-post' => array(0.8, 'weekly'), 'sitemap-page' => array(0.6, 'monthly'), 'sitemap-category' => array(0.3, 'monthly'), 'sitemap-post_tag' => array(0.5, 'weekly'), 'sitemap-archive' => array(0.3, 'monthly'), 'sitemap-author' => array(0.3, 'weekly'), 'sitemap-custom-tax' => array(0.3, 'weekly'), 'sitemap-custom-post' => array(0.8, 'weekly'));
|
24 |
+
$this->frequency['monthly'] = array('sitemap-home' => array(1, 'monthly'), 'sitemap-product' => array(0.8, 'weekly'), 'sitemap-post' => array(0.8, 'monthly'), 'sitemap-page' => array(0.6, 'monthly'), 'sitemap-category' => array(0.3, 'monthly'), 'sitemap-post_tag' => array(0.5, 'monthly'), 'sitemap-archive' => array(0.3, 'monthly'), 'sitemap-author' => array(0.3, 'monthly'), 'sitemap-custom-tax' => array(0.3, 'monthly'), 'sitemap-custom-post' => array(0.8, 'monthly'));
|
25 |
+
$this->frequency['yearly'] = array('sitemap-home' => array(1, 'monthly'), 'sitemap-product' => array(0.8, 'weekly'), 'sitemap-post' => array(0.8, 'monthly'), 'sitemap-page' => array(0.6, 'yearly'), 'sitemap-category' => array(0.3, 'yearly'), 'sitemap-post_tag' => array(0.5, 'monthly'), 'sitemap-archive' => array(0.3, 'yearly'), 'sitemap-author' => array(0.3, 'yearly'), 'sitemap-custom-tax' => array(0.3, 'yearly'), 'sitemap-custom-post' => array(0.8, 'monthly'));
|
26 |
+
}
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Add the Sitemap Index
|
30 |
+
* @global $polylang
|
31 |
+
* @return array
|
32 |
+
*/
|
33 |
+
public function getHomeLink() {
|
34 |
+
$homes = array();
|
35 |
+
$homes['contains'] = array();
|
36 |
+
global $polylang;
|
37 |
+
|
38 |
+
if (isset($polylang)) {
|
39 |
+
foreach ($polylang->get_languages_list() as $term) {
|
40 |
+
$xml = array();
|
41 |
+
$xml['loc'] = esc_url($polylang->get_home_url($term));
|
42 |
+
$xml['lastmod'] = trim(mysql2date('Y-m-d\TH:i:s+00:00', $this->lastModified(), false));
|
43 |
+
$xml['changefreq'] = $this->frequency[SQ_Classes_Tools::getOption('sq_sitemap_frequency')]['sitemap-home'][1];
|
44 |
+
$xml['priority'] = $this->frequency[SQ_Classes_Tools::getOption('sq_sitemap_frequency')]['sitemap-home'][0];
|
45 |
+
$homes[] = $xml;
|
46 |
+
}
|
47 |
+
} else {
|
48 |
+
$xml = array();
|
49 |
+
$xml['loc'] = home_url();
|
50 |
+
$xml['lastmod'] = trim(mysql2date('Y-m-d\TH:i:s+00:00', $this->lastModified(), false));
|
51 |
+
$xml['changefreq'] = $this->frequency[SQ_Classes_Tools::getOption('sq_sitemap_frequency')]['sitemap-home'][1];
|
52 |
+
$xml['priority'] = $this->frequency[SQ_Classes_Tools::getOption('sq_sitemap_frequency')]['sitemap-home'][0];
|
53 |
+
if ($post_id = get_option('page_on_front')) {
|
54 |
+
if (SQ_Classes_Tools::$options['sq_sitemap_show']['images'] == 1) {
|
55 |
+
if ($images = $this->getPostImages($post_id, true)) {
|
56 |
+
array_push($homes['contains'], 'image');
|
57 |
+
$xml['image:image'] = array();
|
58 |
+
foreach ($images as $image) {
|
59 |
+
if (empty($image['src'])) {
|
60 |
+
continue;
|
61 |
+
}
|
62 |
+
|
63 |
+
|
64 |
+
$xml['image:image'][] = array(
|
65 |
+
'image:loc' => $image['src'],
|
66 |
+
'image:title' => $this->clearTitle($image['title']),
|
67 |
+
'image:caption' => $this->clearDescription($image['description']),
|
68 |
+
);
|
69 |
+
}
|
70 |
+
}
|
71 |
+
}
|
72 |
+
}
|
73 |
+
$homes[] = $xml;
|
74 |
+
unset($xml);
|
75 |
+
}
|
76 |
+
|
77 |
+
return $homes;
|
78 |
+
}
|
79 |
+
|
80 |
+
/**
|
81 |
+
* Add posts/pages in sitemap
|
82 |
+
* @return array
|
83 |
+
*/
|
84 |
+
public function getListPosts() {
|
85 |
+
global $wp_query;
|
86 |
+
$wp_query->get_posts();
|
87 |
+
$posts = array();
|
88 |
+
$posts['contains'] = array();
|
89 |
+
if (have_posts()) {
|
90 |
+
while (have_posts()) {
|
91 |
+
the_post();
|
92 |
+
|
93 |
+
//do not incude password protected pages in sitemap
|
94 |
+
if (post_password_required()) {
|
95 |
+
continue;
|
96 |
+
}
|
97 |
+
|
98 |
+
if (function_exists('pll_get_post_translations')) {
|
99 |
+
$translates = pll_get_post_translations(get_post()->ID);
|
100 |
+
|
101 |
+
if (!empty($translates)) {
|
102 |
+
foreach ($translates as $post_id) {
|
103 |
+
|
104 |
+
if ($post = SQ_Classes_ObjController::getClass('SQ_Controllers_Menu')->setPostByID(get_post($post_id))) {
|
105 |
+
if ($post->sq->nositemap) {
|
106 |
+
continue;
|
107 |
+
}
|
108 |
+
|
109 |
+
$posts[] = $this->_getPostXml($post);
|
110 |
+
}
|
111 |
+
}
|
112 |
+
//the polylang has both posts so continue
|
113 |
+
continue;
|
114 |
+
}
|
115 |
+
}
|
116 |
+
|
117 |
+
if ($post = SQ_Classes_ObjController::getClass('SQ_Controllers_Menu')->setPostByID(get_post())) {
|
118 |
+
if ($post->sq->nositemap) {
|
119 |
+
continue;
|
120 |
+
}
|
121 |
+
|
122 |
+
$posts[] = $this->_getPostXml($post);
|
123 |
+
}
|
124 |
+
|
125 |
+
|
126 |
+
}
|
127 |
+
}
|
128 |
+
|
129 |
+
foreach ($posts as $post) {
|
130 |
+
if (array_key_exists('image:image', $post)) {
|
131 |
+
array_push($posts['contains'], 'image');
|
132 |
+
}
|
133 |
+
if (array_key_exists('video:video', $post)) {
|
134 |
+
array_push($posts['contains'], 'video');
|
135 |
+
}
|
136 |
+
}
|
137 |
+
|
138 |
+
return $posts;
|
139 |
+
}
|
140 |
+
|
141 |
+
private function _getPostXml($post) {
|
142 |
+
$xml = array();
|
143 |
+
$xml['loc'] = esc_url(get_permalink());
|
144 |
+
$xml['lastmod'] = trim(mysql2date('Y-m-d\TH:i:s+00:00', $this->lastModified(), false));
|
145 |
+
$xml['changefreq'] = $this->frequency[SQ_Classes_Tools::getOption('sq_sitemap_frequency')][$this->type][1];
|
146 |
+
$xml['priority'] = $this->frequency[SQ_Classes_Tools::getOption('sq_sitemap_frequency')][$this->type][0];
|
147 |
+
|
148 |
+
if (SQ_Classes_Tools::$options['sq_sitemap_show']['images'] == 1) {
|
149 |
+
if ($images = $this->getPostImages($post->ID, true)) {
|
150 |
+
$xml['image:image'] = array();
|
151 |
+
foreach ($images as $image) {
|
152 |
+
if (empty($image['src'])) {
|
153 |
+
continue;
|
154 |
+
}
|
155 |
+
|
156 |
+
$xml['image:image'][] = array(
|
157 |
+
'image:loc' => $image['src'],
|
158 |
+
'image:title' => $this->clearTitle($image['title']),
|
159 |
+
'image:caption' => $this->clearDescription($image['description']),
|
160 |
+
);
|
161 |
+
}
|
162 |
+
}
|
163 |
+
}
|
164 |
+
|
165 |
+
if (SQ_Classes_Tools::$options['sq_sitemap_show']['videos'] == 1) {
|
166 |
+
$images = $this->getPostImages($post->ID, true);
|
167 |
+
if (isset($images[0]['src']) && $videos = $this->getPostVideos($post->ID)) {
|
168 |
+
$xml['video:video'] = array();
|
169 |
+
foreach ($videos as $video) {
|
170 |
+
if ($video == '') {
|
171 |
+
continue;
|
172 |
+
}
|
173 |
+
|
174 |
+
$xml['video:video'][$post->ID] = array(
|
175 |
+
'video:player_loc' => $video,
|
176 |
+
'video:thumbnail_loc' => $images[0]['src'],
|
177 |
+
'video:title' => $this->clearTitle($post->sq->title),
|
178 |
+
'video:description' => $this->clearDescription($post->sq->description),
|
179 |
+
);
|
180 |
+
|
181 |
+
//set the first keyword for this video
|
182 |
+
$keywords = $post->sq->keywords;
|
183 |
+
$keywords = preg_split('/,/', $keywords);
|
184 |
+
if (is_array($keywords)) {
|
185 |
+
$xml['video:video'][$post->ID]['video:tag'] = $keywords[0];
|
186 |
+
}
|
187 |
+
}
|
188 |
+
}
|
189 |
+
}
|
190 |
+
return $xml;
|
191 |
+
}
|
192 |
+
|
193 |
+
/**
|
194 |
+
* Add the post news in sitemap
|
195 |
+
* If the site is registeres for google news
|
196 |
+
* @return array
|
197 |
+
*/
|
198 |
+
public function getListNews() {
|
199 |
+
global $wp_query;
|
200 |
+
$wp_query->get_posts();
|
201 |
+
|
202 |
+
$posts = array();
|
203 |
+
$posts['contains'] = array();
|
204 |
+
|
205 |
+
if (have_posts()) {
|
206 |
+
while (have_posts()) {
|
207 |
+
the_post();
|
208 |
+
|
209 |
+
if ($post = SQ_Classes_ObjController::getClass('SQ_Models_Frontend')->setPost(get_post())->getPost()) {
|
210 |
+
if ($post->sq->nositemap) {
|
211 |
+
continue;
|
212 |
+
}
|
213 |
+
|
214 |
+
$xml = array();
|
215 |
+
|
216 |
+
$xml['loc'] = esc_url(get_permalink());
|
217 |
+
$language = convert_chars(strip_tags(get_bloginfo('language')));
|
218 |
+
$language = substr($language, 0, strpos($language, '-'));
|
219 |
+
if ($language == '')
|
220 |
+
$language = 'en';
|
221 |
+
|
222 |
+
$xml['news:news'][$post->ID] = array(
|
223 |
+
'news:publication' => array(
|
224 |
+
'news:name' => $this->sanitizeString(get_bloginfo('name')),
|
225 |
+
'news:language' => $language
|
226 |
+
)
|
227 |
+
);
|
228 |
+
$xml['news:news'][$post->ID]['news:publication_date'] = trim(mysql2date('Y-m-d\TH:i:s+00:00', $this->lastModified(), false));
|
229 |
+
$xml['news:news'][$post->ID]['news:title'] = $this->sanitizeString($post->sq->title);
|
230 |
+
$xml['news:news'][$post->ID]['news:keywords'] = $post->sq->keywords;
|
231 |
+
|
232 |
+
|
233 |
+
if (SQ_Classes_Tools::$options['sq_sitemap_show']['images'] == 1) {
|
234 |
+
if ($images = $this->getPostImages($post->ID, true)) {
|
235 |
+
array_push($posts['contains'], 'image');
|
236 |
+
$xml['image:image'] = array();
|
237 |
+
foreach ($images as $image) {
|
238 |
+
if (empty($image['src'])) {
|
239 |
+
continue;
|
240 |
+
}
|
241 |
+
|
242 |
+
$xml['image:image'][] = array(
|
243 |
+
'image:loc' => $image['src'],
|
244 |
+
'image:title' => $this->clearTitle($image['title']),
|
245 |
+
'image:caption' => $this->clearDescription($image['description']),
|
246 |
+
);
|
247 |
+
}
|
248 |
+
}
|
249 |
+
}
|
250 |
+
|
251 |
+
if (SQ_Classes_Tools::$options['sq_sitemap_show']['videos'] == 1) {
|
252 |
+
$images = $this->getPostImages($post->ID, true);
|
253 |
+
if (isset($images[0]['src']) && $videos = $this->getPostVideos($post->ID)) {
|
254 |
+
array_push($posts['contains'], 'video');
|
255 |
+
$xml['video:video'] = array();
|
256 |
+
foreach ($videos as $video) {
|
257 |
+
if ($video == '') {
|
258 |
+
continue;
|
259 |
+
}
|
260 |
+
|
261 |
+
|
262 |
+
$xml['video:video'][$post->ID] = array(
|
263 |
+
'video:player_loc' => $video,
|
264 |
+
'video:thumbnail_loc' => $images[0]['src'],
|
265 |
+
'video:title' => $this->clearTitle($post->sq->title),
|
266 |
+
'video:description' => $this->clearDescription($post->sq->description),
|
267 |
+
);
|
268 |
+
|
269 |
+
//set the first keyword for this video
|
270 |
+
$keywords = $post->sq->keywords;
|
271 |
+
$keywords = preg_split('/,/', $keywords);
|
272 |
+
if (is_array($keywords)) {
|
273 |
+
$xml['video:video'][$post->ID]['video:tag'] = $keywords[0];
|
274 |
+
}
|
275 |
+
}
|
276 |
+
}
|
277 |
+
}
|
278 |
+
$posts[] = $xml;
|
279 |
+
unset($xml);
|
280 |
+
}
|
281 |
+
}
|
282 |
+
}
|
283 |
+
|
284 |
+
return $posts;
|
285 |
+
}
|
286 |
+
|
287 |
+
/**
|
288 |
+
* Add the Taxonomies in sitemap
|
289 |
+
* @param string $type
|
290 |
+
* @return array
|
291 |
+
*/
|
292 |
+
public function getListTerms($type = null) {
|
293 |
+
if (!isset($type)) {
|
294 |
+
$type = $this->type;
|
295 |
+
}
|
296 |
+
|
297 |
+
$terms = $array = array();
|
298 |
+
$array['contains'] = array();
|
299 |
+
if ($type == 'sitemap-custom-tax') {
|
300 |
+
$taxonomies = $this->excludeTypes(get_taxonomies(), array('category', 'post_tag', 'nav_menu', 'link_category', 'post_format'));
|
301 |
+
if (!empty($taxonomies)) {
|
302 |
+
$taxonomies = array_unique($taxonomies);
|
303 |
+
}
|
304 |
+
foreach ($taxonomies as $taxonomy) {
|
305 |
+
$array = array_merge($array, $this->getListTerms($taxonomy));
|
306 |
+
|
307 |
+
}
|
308 |
+
} else {
|
309 |
+
$terms = get_terms(str_replace('sitemap-', '', $type));
|
310 |
+
}
|
311 |
+
|
312 |
+
if (!isset(SQ_Classes_Tools::$options['sq_sitemap'][$type])) {
|
313 |
+
$type = 'sitemap-custom-tax';
|
314 |
+
}
|
315 |
+
|
316 |
+
if (!empty($terms)) {
|
317 |
+
foreach ($terms AS $term) {
|
318 |
+
$xml = array();
|
319 |
+
if (!isset($term->taxonomy)) {
|
320 |
+
continue;
|
321 |
+
}
|
322 |
+
$term->lastmod = (isset($term->lastmod) ? $term->lastmod : time());
|
323 |
+
$xml['loc'] = esc_url(get_term_link($term, $term->taxonomy));
|
324 |
+
$xml['lastmod'] = date('Y-m-d\TH:i:s+00:00', $term->lastmod);
|
325 |
+
$xml['changefreq'] = $this->frequency[SQ_Classes_Tools::getOption('sq_sitemap_frequency')][$type][1];
|
326 |
+
$xml['priority'] = $this->frequency[SQ_Classes_Tools::getOption('sq_sitemap_frequency')][$type][0];
|
327 |
+
|
328 |
+
$array[] = $xml;
|
329 |
+
}
|
330 |
+
}
|
331 |
+
|
332 |
+
return $array;
|
333 |
+
}
|
334 |
+
|
335 |
+
/**
|
336 |
+
* Add the authors in sitemap
|
337 |
+
* @return array
|
338 |
+
*/
|
339 |
+
public function getListAuthors() {
|
340 |
+
$array = array();
|
341 |
+
$authors = apply_filters('sq-sitemap-authors', $this->type);
|
342 |
+
|
343 |
+
if (!empty($authors)) {
|
344 |
+
foreach ($authors AS $author) {
|
345 |
+
$xml = array();
|
346 |
+
|
347 |
+
$xml['loc'] = get_author_posts_url($author->ID, $author->user_nicename);
|
348 |
+
if (isset($author->lastmod) && $author->lastmod <> '')
|
349 |
+
$xml['lastmod'] = date('Y-m-d\TH:i:s+00:00', strtotime($author->lastmod));
|
350 |
+
$xml['changefreq'] = $this->frequency[SQ_Classes_Tools::getOption('sq_sitemap_frequency')][$this->type][1];
|
351 |
+
$xml['priority'] = $this->frequency[SQ_Classes_Tools::getOption('sq_sitemap_frequency')][$this->type][0];
|
352 |
+
|
353 |
+
$array[] = $xml;
|
354 |
+
}
|
355 |
+
}
|
356 |
+
return $array;
|
357 |
+
}
|
358 |
+
|
359 |
+
/**
|
360 |
+
* Add the archive in sitemap
|
361 |
+
* @return array
|
362 |
+
*/
|
363 |
+
public function getListArchive() {
|
364 |
+
$array = array();
|
365 |
+
$archives = apply_filters('sq-sitemap-archive', $this->type);
|
366 |
+
if (!empty($archives)) {
|
367 |
+
foreach ($archives as $archive) {
|
368 |
+
$xml = array();
|
369 |
+
|
370 |
+
$xml['loc'] = get_month_link($archive->year, $archive->month);
|
371 |
+
if (isset($archive->lastmod) && $archive->lastmod <> '')
|
372 |
+
$xml['lastmod'] = date('Y-m-d\TH:i:s+00:00', strtotime($archive->lastmod));
|
373 |
+
|
374 |
+
$xml['changefreq'] = $this->frequency[SQ_Classes_Tools::getOption('sq_sitemap_frequency')][$this->type][1];
|
375 |
+
$xml['priority'] = $this->frequency[SQ_Classes_Tools::getOption('sq_sitemap_frequency')][$this->type][0];
|
376 |
+
|
377 |
+
$array[] = $xml;
|
378 |
+
}
|
379 |
+
}
|
380 |
+
|
381 |
+
return $array;
|
382 |
+
}
|
383 |
+
|
384 |
+
private function sanitizeString($string) {
|
385 |
+
return esc_html(ent2ncr(strip_tags($string)));
|
386 |
+
}
|
387 |
+
|
388 |
+
/**
|
389 |
+
* Get the last modified date for the specific post/page
|
390 |
+
*
|
391 |
+
* @global WP_Post $post
|
392 |
+
* @param string $sitemap
|
393 |
+
* @param string $term
|
394 |
+
* @return string
|
395 |
+
*/
|
396 |
+
public function lastModified($sitemap = 'post_type', $term = '') {
|
397 |
+
if ('post_type' == $sitemap) :
|
398 |
+
|
399 |
+
global $post;
|
400 |
+
|
401 |
+
if (isset($post->ID)) {
|
402 |
+
if (empty($this->postmodified[$post->ID])) {
|
403 |
+
$postmodified = get_post_modified_time('Y-m-d H:i:s', true, $post->ID);
|
404 |
+
$options = get_option('post_types');
|
405 |
+
|
406 |
+
if (!empty($options[$post->post_type]['update_lastmod_on_comments']))
|
407 |
+
$lastcomment = get_comments(array(
|
408 |
+
'status' => 'approve',
|
409 |
+
'number' => 1,
|
410 |
+
'post_id' => $post->ID,
|
411 |
+
));
|
412 |
+
|
413 |
+
if (isset($lastcomment[0]->comment_date_gmt))
|
414 |
+
if (mysql2date('U', $lastcomment[0]->comment_date_gmt) > mysql2date('U', $postmodified))
|
415 |
+
$postmodified = $lastcomment[0]->comment_date_gmt;
|
416 |
+
|
417 |
+
$this->postmodified[$post->ID] = $postmodified;
|
418 |
+
}
|
419 |
+
}
|
420 |
+
return $this->postmodified[$post->ID];
|
421 |
+
|
422 |
+
elseif (!empty($term)) :
|
423 |
+
|
424 |
+
if (is_object($term)) {
|
425 |
+
if (!isset($this->termmodified[$term->term_id])) {
|
426 |
+
// get the latest post in this taxonomy item, to use its post_date as lastmod
|
427 |
+
$posts = get_posts(array(
|
428 |
+
'post_type' => 'any',
|
429 |
+
'numberposts' => 1,
|
430 |
+
'no_found_rows' => true,
|
431 |
+
'update_post_meta_cache' => false,
|
432 |
+
'update_post_term_cache' => false,
|
433 |
+
'update_cache' => false,
|
434 |
+
'tax_query' => array(
|
435 |
+
array(
|
436 |
+
'taxonomy' => $term->taxonomy,
|
437 |
+
'field' => 'slug',
|
438 |
+
'terms' => $term->slug
|
439 |
+
)
|
440 |
+
)
|
441 |
+
)
|
442 |
+
);
|
443 |
+
$this->termmodified[$term->term_id] = isset($posts[0]->post_date_gmt) ? $posts[0]->post_date_gmt : '';
|
444 |
+
}
|
445 |
+
return $this->termmodified[$term->term_id];
|
446 |
+
} else {
|
447 |
+
$obj = get_taxonomy($term);
|
448 |
+
return get_lastdate('gmt', $obj->object_type);
|
449 |
+
}
|
450 |
+
|
451 |
+
else :
|
452 |
+
|
453 |
+
return '0000-00-00 00:00:00';
|
454 |
+
|
455 |
+
endif;
|
456 |
+
}
|
457 |
+
|
458 |
+
/**
|
459 |
+
* Check if the current page is the home page
|
460 |
+
* @global $polylang
|
461 |
+
* @param integer $id
|
462 |
+
* @return boolean
|
463 |
+
*/
|
464 |
+
public function is_home($id) {
|
465 |
+
$home = array();
|
466 |
+
$id = get_option('page_for_posts');
|
467 |
+
|
468 |
+
if (!empty($id)) {
|
469 |
+
global $polylang;
|
470 |
+
if (isset($polylang)) {
|
471 |
+
$home = $polylang->get_translations('post', $id);
|
472 |
+
} else {
|
473 |
+
$home = array($id);
|
474 |
+
}
|
475 |
+
}
|
476 |
+
|
477 |
+
return in_array($id, $home);
|
478 |
+
}
|
479 |
+
|
480 |
+
/**
|
481 |
+
* Excude types from array
|
482 |
+
* @param array $types
|
483 |
+
* @param array $exclude
|
484 |
+
* @return array
|
485 |
+
*/
|
486 |
+
public function excludeTypes($types, $exclude) {
|
487 |
+
foreach ($exclude as $value) {
|
488 |
+
if (in_array($value, $types)) {
|
489 |
+
unset($types[$value]);
|
490 |
+
}
|
491 |
+
}
|
492 |
+
return $types;
|
493 |
+
}
|
494 |
+
|
495 |
+
}
|
models/abstract/Domain.php
ADDED
@@ -0,0 +1,457 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* ObjectAbstract
|
5 |
+
*
|
6 |
+
* Abstract base class for domain objects.
|
7 |
+
* Magic setters and getters and get<Property>/set<Property> based on protected properies defined.
|
8 |
+
*/
|
9 |
+
abstract class SQ_Models_Abstract_Domain implements ArrayAccess {
|
10 |
+
|
11 |
+
public function __construct($properties = null) {
|
12 |
+
if (isset($properties)) {
|
13 |
+
if (!is_array($properties)) {
|
14 |
+
$properties = (array)$properties;
|
15 |
+
}
|
16 |
+
|
17 |
+
if (isset($properties) && !empty($properties)) {
|
18 |
+
foreach ($properties as $key => $value) {
|
19 |
+
// assign value to key
|
20 |
+
$this->$key = $value;
|
21 |
+
}
|
22 |
+
}
|
23 |
+
}
|
24 |
+
}
|
25 |
+
|
26 |
+
// -----------------------------------------------------------------------
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Magic methods
|
30 |
+
*/
|
31 |
+
|
32 |
+
/**
|
33 |
+
* Magic isset
|
34 |
+
*/
|
35 |
+
public function __isset($name) {
|
36 |
+
// map name to key; prepend _
|
37 |
+
$key = '_' . $name;
|
38 |
+
|
39 |
+
// if there is no such property
|
40 |
+
if (!property_exists($this, $key))
|
41 |
+
return FALSE;
|
42 |
+
|
43 |
+
return isset($this->$key);
|
44 |
+
}
|
45 |
+
|
46 |
+
/**
|
47 |
+
* Magic getter
|
48 |
+
*
|
49 |
+
* @param string $name the name of the property
|
50 |
+
* @return mixed the value of the property
|
51 |
+
*/
|
52 |
+
public function __get($name) {
|
53 |
+
// map name to getter method; prepend 'get'
|
54 |
+
$method = 'get' . ucfirst($name);
|
55 |
+
return $this->$method();
|
56 |
+
}
|
57 |
+
|
58 |
+
/**
|
59 |
+
* Magic setter
|
60 |
+
* $object->innerAttribute = $value; will call setInnerAttribute($value)
|
61 |
+
*
|
62 |
+
* @param string $name the name of the property
|
63 |
+
* @param mixed $value the value to assign
|
64 |
+
*/
|
65 |
+
public function __set($name, $value) {
|
66 |
+
// map name to setter method; prepend 'set'
|
67 |
+
$method = 'set' . ucfirst($name);
|
68 |
+
$this->$method($value);
|
69 |
+
}
|
70 |
+
|
71 |
+
/**
|
72 |
+
* Magic unset
|
73 |
+
*/
|
74 |
+
public function __unset($name) {
|
75 |
+
$this->$name = null;
|
76 |
+
}
|
77 |
+
|
78 |
+
/**
|
79 |
+
* Return the string representation of this model.
|
80 |
+
*
|
81 |
+
* @return string
|
82 |
+
*/
|
83 |
+
public function __toString() {
|
84 |
+
return get_class($this);
|
85 |
+
}
|
86 |
+
|
87 |
+
/**
|
88 |
+
* Magic call to implement default setters and getters.
|
89 |
+
*
|
90 |
+
* get<MyProperty>
|
91 |
+
* set<MyProperty>
|
92 |
+
* maps to $_myProperty if property exists
|
93 |
+
*
|
94 |
+
* @param string $name
|
95 |
+
* @param array $arguments
|
96 |
+
* @return mixed
|
97 |
+
*/
|
98 |
+
public function __call($method, array $arguments) {
|
99 |
+
$matches = array();
|
100 |
+
|
101 |
+
// generate default getters
|
102 |
+
if (preg_match('/^get(\w+?)?$/', $method, $matches)) {
|
103 |
+
// matches[0] = method
|
104 |
+
// matches[1] = property
|
105 |
+
// map name to property; prepend _
|
106 |
+
if (function_exists('lcfirst'))
|
107 |
+
$property = lcfirst($matches[1]);
|
108 |
+
else
|
109 |
+
$property = strtolower(substr($matches[1], 0, 1)) . substr($matches[1], 1);
|
110 |
+
|
111 |
+
$_property = "_" . $property;
|
112 |
+
|
113 |
+
if (!property_exists($this, $_property))
|
114 |
+
return null;
|
115 |
+
// no property, throw exception
|
116 |
+
// throw new Exception('Object does not have property [' . $property . ']');
|
117 |
+
|
118 |
+
return $this->$_property;
|
119 |
+
}
|
120 |
+
|
121 |
+
if (preg_match('/^set(\w+?)?$/', $method, $matches)) {
|
122 |
+
|
123 |
+
// matches[0] = method
|
124 |
+
// matches[1] = property
|
125 |
+
// map name to property; prepend _
|
126 |
+
if ($matches[1] == 'ID') {
|
127 |
+
$property = $matches[1];
|
128 |
+
} elseif (function_exists('lcfirst')) {
|
129 |
+
$property = lcfirst($matches[1]);
|
130 |
+
} else {
|
131 |
+
$property = strtolower(substr($matches[1], 0, 1)) . substr($matches[1], 1);
|
132 |
+
}
|
133 |
+
|
134 |
+
$value = $arguments[0];
|
135 |
+
|
136 |
+
$_property = "_" . $property;
|
137 |
+
// echo $_property . ' = ' . $value . '<br />';
|
138 |
+
if (property_exists($this, $_property)) {
|
139 |
+
|
140 |
+
// no property, throw exception
|
141 |
+
// throw new Exception('Object does not have property [' . $property . ']');
|
142 |
+
// property exists, assign the value
|
143 |
+
$this->$_property = $value;
|
144 |
+
}
|
145 |
+
// return $this to provide fluid interface
|
146 |
+
return $this;
|
147 |
+
}
|
148 |
+
}
|
149 |
+
|
150 |
+
// -----------------------------------------------------------------------
|
151 |
+
|
152 |
+
/**
|
153 |
+
* Utility methods
|
154 |
+
*
|
155 |
+
*/
|
156 |
+
|
157 |
+
/**
|
158 |
+
* Return this model as an array.
|
159 |
+
* Any properties of type object will be converted to string.
|
160 |
+
*
|
161 |
+
* @return array
|
162 |
+
*/
|
163 |
+
public function toArray() {
|
164 |
+
$args = func_get_args();
|
165 |
+
|
166 |
+
$data = array();
|
167 |
+
if (empty($args)) {
|
168 |
+
|
169 |
+
// iterate over each property in this object
|
170 |
+
foreach ($this->_getProperties() as $property => $value) {
|
171 |
+
|
172 |
+
// if the property is ignored, just skip it
|
173 |
+
if (in_array($property, $this->_getIgnoredProperties()))
|
174 |
+
continue;
|
175 |
+
|
176 |
+
// if the property value is traversable
|
177 |
+
if ($value instanceof Traversable) {
|
178 |
+
|
179 |
+
// if value is an array or an object traversable using foreach
|
180 |
+
$tmp = array();
|
181 |
+
foreach ($value as $k => $v) {
|
182 |
+
if (is_object($v) && method_exists($v, 'toArray'))
|
183 |
+
$tmp[$k] = $v->toArray();
|
184 |
+
else
|
185 |
+
$tmp[$k] = $v . '';
|
186 |
+
}
|
187 |
+
|
188 |
+
// if value is an iterator (or subclass), rewind it
|
189 |
+
if ($value instanceof Iterator)
|
190 |
+
$value->rewind();
|
191 |
+
|
192 |
+
$data[$property] = $tmp;
|
193 |
+
} elseif (is_object($value)) {
|
194 |
+
|
195 |
+
if (method_exists($value, 'toArray'))
|
196 |
+
$data[$property] = $value->toArray();
|
197 |
+
elseif (method_exists($value, 'toString'))
|
198 |
+
$data[$property] = $value->toString();
|
199 |
+
else
|
200 |
+
$data[$property] = $value;
|
201 |
+
} elseif (is_array($value)) {
|
202 |
+
$data[$property] = current($value);
|
203 |
+
} else {
|
204 |
+
$data[$property] = $value . '';
|
205 |
+
}
|
206 |
+
}
|
207 |
+
} else {
|
208 |
+
|
209 |
+
foreach ($args as $arg)
|
210 |
+
if (isset($this->$arg))
|
211 |
+
$data[$arg] = $this->$arg;
|
212 |
+
}
|
213 |
+
|
214 |
+
return $data;
|
215 |
+
}
|
216 |
+
|
217 |
+
/**
|
218 |
+
* Return this model as an array.
|
219 |
+
* Any properties of type object will be converted to string.
|
220 |
+
*
|
221 |
+
* @return array
|
222 |
+
*/
|
223 |
+
public function prepareDB() {
|
224 |
+
$args = func_get_args();
|
225 |
+
|
226 |
+
$data = array();
|
227 |
+
if (empty($args)) {
|
228 |
+
|
229 |
+
// iterate over each property in this object
|
230 |
+
foreach ($this->_getProperties() as $property => $value) {
|
231 |
+
|
232 |
+
// if the property is ignored, just skip it
|
233 |
+
if (in_array($property, $this->_getIgnoredProperties()))
|
234 |
+
continue;
|
235 |
+
|
236 |
+
// if the property value is traversable
|
237 |
+
if ($value instanceof Traversable) {
|
238 |
+
|
239 |
+
// if value is an array or an object traversable using foreach
|
240 |
+
$tmp = array();
|
241 |
+
foreach ($value as $k => $v) {
|
242 |
+
if (is_object($v) && method_exists($v, 'toArray'))
|
243 |
+
$tmp[$k] = $v->prepareDB();
|
244 |
+
else
|
245 |
+
$tmp[$k] = $v . '';
|
246 |
+
}
|
247 |
+
|
248 |
+
// if value is an iterator (or subclass), rewind it
|
249 |
+
if ($value instanceof Iterator)
|
250 |
+
$value->rewind();
|
251 |
+
|
252 |
+
$data[$property] = $tmp;
|
253 |
+
} // if the property is a object
|
254 |
+
else if (is_object($value)) {
|
255 |
+
|
256 |
+
if (method_exists($value, 'toArray'))
|
257 |
+
$data[$property] = $value->prepareDB();
|
258 |
+
elseif (method_exists($value, 'toString'))
|
259 |
+
$data[$property] = $value->toString();
|
260 |
+
else
|
261 |
+
$data[$property] = $value;
|
262 |
+
} // otherwise
|
263 |
+
else {
|
264 |
+
if (isset($value))
|
265 |
+
$data[$property] = $value . '';
|
266 |
+
}
|
267 |
+
}
|
268 |
+
} else {
|
269 |
+
|
270 |
+
foreach ($args as $arg)
|
271 |
+
if (isset($this->$arg))
|
272 |
+
$data[$arg] = $this->$arg;
|
273 |
+
}
|
274 |
+
|
275 |
+
return $data;
|
276 |
+
}
|
277 |
+
|
278 |
+
/**
|
279 |
+
* Return this model as json.
|
280 |
+
* Any properties of type object will be converted to string.
|
281 |
+
*
|
282 |
+
* @return string
|
283 |
+
*/
|
284 |
+
public function toJson() {
|
285 |
+
return json_encode($this->toArray());
|
286 |
+
}
|
287 |
+
|
288 |
+
/**
|
289 |
+
* Return this model as xml.
|
290 |
+
* Any properties of type object will be converted to string.
|
291 |
+
*
|
292 |
+
* @return string
|
293 |
+
*/
|
294 |
+
public function toXml() {
|
295 |
+
$schema = $this->_xmlSchema();
|
296 |
+
|
297 |
+
// the dom document
|
298 |
+
$dom = new DOMDocument;
|
299 |
+
$dom->formatOutput = true;
|
300 |
+
|
301 |
+
// the node
|
302 |
+
$nodeKey = key($schema);
|
303 |
+
$node = $dom->createElement($nodeKey);
|
304 |
+
|
305 |
+
// attributes
|
306 |
+
$attributes = @$schema[$nodeKey]['attributes'];
|
307 |
+
if (isset($attributes) && is_array($attributes))
|
308 |
+
foreach ($attributes as $key => $value) {
|
309 |
+
$attribute = $dom->createAttribute($key);
|
310 |
+
$attribute->value = htmlentities($value);
|
311 |
+
$node->appendChild($attribute);
|
312 |
+
}
|
313 |
+
|
314 |
+
// elements
|
315 |
+
$elements = @$schema[$nodeKey]['elements'];
|
316 |
+
if (isset($elements) && is_array($elements))
|
317 |
+
foreach ($elements as $key => $element) {
|
318 |
+
if (is_array($element) || ($element instanceof Traversable)) {
|
319 |
+
if (is_int($key)) {
|
320 |
+
foreach ($element as $e) {
|
321 |
+
$tmpDom = new DOMDocument;
|
322 |
+
$tmpDom->loadXML($e->toXml());
|
323 |
+
$iNode = $tmpDom->getElementsByTagName('*')->item(0);
|
324 |
+
$node->appendChild($dom->importNode($iNode, true));
|
325 |
+
}
|
326 |
+
} elseif (is_string($key)) {
|
327 |
+
$tmp = $dom->createElement($key);
|
328 |
+
foreach ($element as $e) {
|
329 |
+
$tmpDom = new DOMDocument;
|
330 |
+
$tmpDom->loadXML($e->toXml());
|
331 |
+
$iNode = $tmpDom->getElementsByTagName('*')->item(0);
|
332 |
+
$tmp->appendChild($dom->importNode($iNode, true));
|
333 |
+
}
|
334 |
+
$node->appendChild($tmp);
|
335 |
+
}
|
336 |
+
} else {
|
337 |
+
$tmpDom = new DOMDocument;
|
338 |
+
$tmpDom->loadXML($element->toXml());
|
339 |
+
$iNode = $tmpDom->getElementsByTagName('*')->item(0);
|
340 |
+
$node->appendChild($dom->importNode($iNode, true));
|
341 |
+
}
|
342 |
+
}
|
343 |
+
|
344 |
+
// add node to the dom
|
345 |
+
$dom->appendChild($node);
|
346 |
+
|
347 |
+
// only get node xml
|
348 |
+
return $dom->saveXML($node);
|
349 |
+
}
|
350 |
+
|
351 |
+
/**
|
352 |
+
* The xml schema is an array that defines how the xml is build from the current object.
|
353 |
+
* This method may be overriden in child classes which may add/modify attributes/elements.
|
354 |
+
*
|
355 |
+
* @return array
|
356 |
+
*/
|
357 |
+
protected function _xmlSchema() {
|
358 |
+
$className = get_class($this);
|
359 |
+
$classParts = explode('_', $className);
|
360 |
+
$node = array_pop($classParts);
|
361 |
+
|
362 |
+
// build an xml schema automatically based on data members' name and value
|
363 |
+
$attributes = array();
|
364 |
+
$elements = array();
|
365 |
+
|
366 |
+
// traverse all dtaa members, getting the key (name of the variable) and value
|
367 |
+
foreach ($this->_getProperties() as $property => $value) {
|
368 |
+
if (is_scalar($value) || !isset($value))
|
369 |
+
// if the value is scalar or null
|
370 |
+
// treat is as an attribute
|
371 |
+
$attributes[ucfirst($property)] = $value;
|
372 |
+
else
|
373 |
+
if (is_array($value))
|
374 |
+
$elements[ucfirst($property)] = $value;
|
375 |
+
}
|
376 |
+
|
377 |
+
return array(
|
378 |
+
// node name => node content
|
379 |
+
$node => array(
|
380 |
+
'attributes' => $attributes,
|
381 |
+
'elements' => $elements,
|
382 |
+
)
|
383 |
+
);
|
384 |
+
}
|
385 |
+
|
386 |
+
// -----------------------------------------------------------------------
|
387 |
+
|
388 |
+
/**
|
389 |
+
* Methods required by the ArrayAccess interface.
|
390 |
+
* Allows to access object properties using the array notation, with [].
|
391 |
+
*/
|
392 |
+
public function offsetExists($offset) {
|
393 |
+
return isset($this->$offset);
|
394 |
+
}
|
395 |
+
|
396 |
+
public function offsetGet($offset) {
|
397 |
+
return $this->offsetExists($offset) ? $this->$offset : null;
|
398 |
+
}
|
399 |
+
|
400 |
+
public function offsetSet($offset, $value) {
|
401 |
+
$this->$offset = $value;
|
402 |
+
}
|
403 |
+
|
404 |
+
public function offsetUnset($offset) {
|
405 |
+
$this->$offset = null;
|
406 |
+
}
|
407 |
+
|
408 |
+
// -----------------------------------------------------------------------
|
409 |
+
|
410 |
+
/**
|
411 |
+
* Get ignored properties
|
412 |
+
*
|
413 |
+
* Allows to define a list of property names that will be ignored
|
414 |
+
* when converting the object to array, json, xml.
|
415 |
+
*
|
416 |
+
* There may be multiple reasons to ignore properties:
|
417 |
+
* - we don't want to export the value for the property
|
418 |
+
* - to resolve circular reference
|
419 |
+
* (eg. an object contains one or more children objects, which will each
|
420 |
+
* contain a reference back to the parent; we may set the 'parent' property
|
421 |
+
* as ignored in the child object to eliminate circular toArray() calls
|
422 |
+
* which result in 'out of memory' error)
|
423 |
+
*
|
424 |
+
* @return array
|
425 |
+
*/
|
426 |
+
protected function _getIgnoredProperties() {
|
427 |
+
return array();
|
428 |
+
}
|
429 |
+
|
430 |
+
/**
|
431 |
+
* Get an array with the object's properties.
|
432 |
+
*
|
433 |
+
* The valid object's properties are
|
434 |
+
* - protected
|
435 |
+
* - start with one underscore
|
436 |
+
*
|
437 |
+
* Private properties will be ignored.
|
438 |
+
*
|
439 |
+
* @return array
|
440 |
+
* @throws Exception
|
441 |
+
*/
|
442 |
+
protected function _getProperties() {
|
443 |
+
$properties = array();
|
444 |
+
|
445 |
+
// get object vars
|
446 |
+
$vars = get_object_vars($this);
|
447 |
+
foreach ($vars as $key => $value)
|
448 |
+
$properties[substr($key, 1)] = $value;
|
449 |
+
|
450 |
+
// if no properies are found
|
451 |
+
if (empty($properties))
|
452 |
+
throw new Exception('no properties found');
|
453 |
+
|
454 |
+
return $properties;
|
455 |
+
}
|
456 |
+
|
457 |
+
}
|
models/abstract/Seo.php
ADDED
@@ -0,0 +1,194 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
abstract class SQ_Models_Abstract_Seo {
|
4 |
+
protected $_post;
|
5 |
+
protected $_patterns;
|
6 |
+
protected $_sq_use;
|
7 |
+
|
8 |
+
public function __construct() {
|
9 |
+
//SQ_Classes_Tools::dump("apply post");
|
10 |
+
$this->_post = SQ_Classes_ObjController::getClass('SQ_Models_Frontend')->getPost();
|
11 |
+
if (class_exists('SQ_Classes_Tools')) {
|
12 |
+
$this->_sq_use = SQ_Classes_Tools::getOption('sq_use');
|
13 |
+
}
|
14 |
+
}
|
15 |
+
|
16 |
+
/**************************** CLEAR THE VALUES *************************************/
|
17 |
+
/***********************************************************************************/
|
18 |
+
/**
|
19 |
+
* Clear and format the title for all languages
|
20 |
+
* @param $title
|
21 |
+
* @return string
|
22 |
+
*/
|
23 |
+
public function clearTitle($title) {
|
24 |
+
return SQ_Classes_Tools::clearTitle($title);;
|
25 |
+
}
|
26 |
+
|
27 |
+
/**
|
28 |
+
* Clear and format the descrition for all languages
|
29 |
+
* @param $description
|
30 |
+
* @return mixed|string
|
31 |
+
*/
|
32 |
+
public function clearDescription($description) {
|
33 |
+
return SQ_Classes_Tools::clearDescription($description);
|
34 |
+
}
|
35 |
+
|
36 |
+
public function clearKeywords($keywords) {
|
37 |
+
if ($keywords <> '') {
|
38 |
+
$keywords = SQ_Classes_Tools::i18n(trim(esc_html(ent2ncr(strip_tags($keywords)))));
|
39 |
+
$keywords = addcslashes($keywords, '$');
|
40 |
+
|
41 |
+
$keywords = preg_replace('/\s{2,}/', ' ', $keywords);
|
42 |
+
}
|
43 |
+
return $keywords;
|
44 |
+
}
|
45 |
+
|
46 |
+
/**
|
47 |
+
* Get the image from post
|
48 |
+
*
|
49 |
+
* @return array
|
50 |
+
* @param integer $post_id Custom post is
|
51 |
+
* @param boolean $all take all the images or stop at the first one
|
52 |
+
* @return array
|
53 |
+
*/
|
54 |
+
public function getPostImages($post_id = null, $all = false) {
|
55 |
+
$images = array();
|
56 |
+
|
57 |
+
//for sitemap calls
|
58 |
+
if (isset($post_id)) {
|
59 |
+
$this->_post = SQ_Classes_ObjController::getDomain('SQ_Models_Domain_Post');
|
60 |
+
$this->_post->ID = (int)$post_id;
|
61 |
+
}
|
62 |
+
|
63 |
+
if ((int)$this->_post->ID == 0) {
|
64 |
+
return $images;
|
65 |
+
}
|
66 |
+
|
67 |
+
if (has_post_thumbnail($this->_post->ID)) {
|
68 |
+
$attachment = get_post(get_post_thumbnail_id($this->_post->ID));
|
69 |
+
if (isset($attachment->ID)) {
|
70 |
+
$url = wp_get_attachment_image_src($attachment->ID, 'full');
|
71 |
+
$images[] = array(
|
72 |
+
'src' => esc_url($url[0]),
|
73 |
+
'title' => $this->clearTitle($this->_post->post_title),
|
74 |
+
'description' => $this->clearDescription($this->_post->post_excerpt),
|
75 |
+
'width' => $url[1],
|
76 |
+
'height' => $url[2],
|
77 |
+
);
|
78 |
+
}
|
79 |
+
}
|
80 |
+
|
81 |
+
if ($all || empty($images)) {
|
82 |
+
if (isset($this->_post->post_content)) {
|
83 |
+
preg_match('/<img[^>]*src="([^"]*)"[^>]*>/i', $this->_post->post_content, $match);
|
84 |
+
|
85 |
+
if (!empty($match)) {
|
86 |
+
preg_match('/alt="([^"]*)"/i', $match[0], $alt);
|
87 |
+
|
88 |
+
if (strpos($match[1], '//') === false) {
|
89 |
+
$match[1] = get_bloginfo('url') . $match[1];
|
90 |
+
}
|
91 |
+
|
92 |
+
$images[] = array(
|
93 |
+
'src' => esc_url($match[1]),
|
94 |
+
'title' => $this->clearTitle(!empty($alt[1]) ? $alt[1] : ''),
|
95 |
+
'description' => '',
|
96 |
+
'width' => '500',
|
97 |
+
'height' => null,
|
98 |
+
);
|
99 |
+
}
|
100 |
+
}
|
101 |
+
}
|
102 |
+
|
103 |
+
|
104 |
+
return $images;
|
105 |
+
}
|
106 |
+
|
107 |
+
/**
|
108 |
+
* Get the video from content
|
109 |
+
* @param integer $post_id Custom post is
|
110 |
+
* @return array
|
111 |
+
*/
|
112 |
+
public function getPostVideos($post_id = null) {
|
113 |
+
$videos = array();
|
114 |
+
|
115 |
+
//for sitemap calls
|
116 |
+
if (isset($post_id)) {
|
117 |
+
$this->_post = SQ_Classes_ObjController::getDomain('SQ_Models_Domain_Post');
|
118 |
+
$this->_post->ID = (int)$post_id;
|
119 |
+
}
|
120 |
+
|
121 |
+
if ((int)$this->_post->ID == 0) {
|
122 |
+
return $videos;
|
123 |
+
}
|
124 |
+
|
125 |
+
if (isset($this->_post->post_content)) {
|
126 |
+
preg_match('/(?:http(?:s)?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed)\/)([^\?&\"\'>\s]+)/si', $this->_post->post_content, $match);
|
127 |
+
|
128 |
+
if (isset($match[0])) {
|
129 |
+
if (strpos($match[0], '//') !== false && strpos($match[0], 'http') === false) {
|
130 |
+
$match[0] = 'http:' . $match[0];
|
131 |
+
}
|
132 |
+
$videos[] = esc_url($match[0]);
|
133 |
+
}
|
134 |
+
|
135 |
+
preg_match('/(?:http(?:s)?:\/\/)?(?:fwd4\.wistia\.com\/(?:medias)\/)([^\?&\"\'>\s]+)/si', $this->_post->post_content, $match);
|
136 |
+
|
137 |
+
if (isset($match[0])) {
|
138 |
+
$videos[] = esc_url('http://fast.wistia.net/embed/iframe/' . $match[1]);
|
139 |
+
}
|
140 |
+
|
141 |
+
preg_match('/class=["|\']([^"\']*wistia_async_([^\?&\"\'>\s]+)[^"\']*["|\'])/si', $this->_post->post_content, $match);
|
142 |
+
|
143 |
+
if (isset($match[0])) {
|
144 |
+
$videos[] = esc_url('http://fast.wistia.net/embed/iframe/' . $match[2]);
|
145 |
+
}
|
146 |
+
|
147 |
+
preg_match('/src=["|\']([^"\']*(.mpg|.mpeg|.mp4|.mov|.wmv|.asf|.avi|.ra|.ram|.rm|.flv)["|\'])/i', $this->_post->post_content, $match);
|
148 |
+
|
149 |
+
if (isset($match[1])) {
|
150 |
+
$videos[] = esc_url($match[1]);
|
151 |
+
}
|
152 |
+
}
|
153 |
+
|
154 |
+
return $videos;
|
155 |
+
}
|
156 |
+
|
157 |
+
/**
|
158 |
+
* Check if is the homepage
|
159 |
+
*
|
160 |
+
* @return bool
|
161 |
+
*/
|
162 |
+
public function isHomePage() {
|
163 |
+
return SQ_Classes_ObjController::getClass('SQ_Models_Frontend')->isHomePage();
|
164 |
+
}
|
165 |
+
|
166 |
+
public function getPost() {
|
167 |
+
return SQ_Classes_ObjController::getClass('SQ_Models_Frontend')->getPost();
|
168 |
+
}
|
169 |
+
|
170 |
+
public function returnFalse() {
|
171 |
+
return false;
|
172 |
+
}
|
173 |
+
|
174 |
+
public function truncate($text, $min = 100, $max = 110) {
|
175 |
+
if ($text <> '' && strlen($text) > $max) {
|
176 |
+
if (function_exists('strip_tags')) {
|
177 |
+
$text = strip_tags($text);
|
178 |
+
}
|
179 |
+
$text = str_replace(']]>', ']]>', $text);
|
180 |
+
$text = @preg_replace('|\[(.+?)\](.+?\[/\\1\])?|s', '', $text);
|
181 |
+
$text = strip_tags($text);
|
182 |
+
|
183 |
+
if ($max < strlen($text)) {
|
184 |
+
while ($text[$max] != ' ' && $max > $min) {
|
185 |
+
$max--;
|
186 |
+
}
|
187 |
+
}
|
188 |
+
$text = substr($text, 0, $max);
|
189 |
+
return trim(stripcslashes($text));
|
190 |
+
}
|
191 |
+
|
192 |
+
return $text;
|
193 |
+
}
|
194 |
+
}
|
models/domain/Patterns.php
ADDED
@@ -0,0 +1,366 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SQ_Models_Domain_Patterns extends SQ_Models_Abstract_Domain {
|
4 |
+
|
5 |
+
protected $_id; //Replaced with the post/page ID
|
6 |
+
protected $_post_type; //Replaced with the post/page type
|
7 |
+
protected $_guid; //Replaced with the post/page slug
|
8 |
+
|
9 |
+
public function setId($id) {
|
10 |
+
$this->_id = $id;
|
11 |
+
}
|
12 |
+
|
13 |
+
/*********************************************************************************/
|
14 |
+
protected $_date; //Replaced with the date of the post/page
|
15 |
+
|
16 |
+
public function setPost_date($value) {
|
17 |
+
$this->_date = $value;
|
18 |
+
}
|
19 |
+
|
20 |
+
//
|
21 |
+
protected $_title; //Replaced with the title of the post/page
|
22 |
+
|
23 |
+
public function setPost_title($value) {
|
24 |
+
if ($value <> '') {
|
25 |
+
$this->_title = $value;
|
26 |
+
}
|
27 |
+
}
|
28 |
+
|
29 |
+
//
|
30 |
+
protected $_post_parent;
|
31 |
+
protected $_parent_title; //Replaced with the title of the parent page of the current page
|
32 |
+
|
33 |
+
public function getParent_title() {
|
34 |
+
if (isset($this->_post_parent) && (int)$this->_post_parent > 0) {
|
35 |
+
if ($post = $this->_getPost($this->_post_parent)) {
|
36 |
+
$this->_parent_title = $post->post_title;
|
37 |
+
}
|
38 |
+
}
|
39 |
+
|
40 |
+
return $this->_parent_title;
|
41 |
+
}
|
42 |
+
|
43 |
+
protected $_sitename; //The site's name
|
44 |
+
|
45 |
+
public function getSitename() {
|
46 |
+
return get_bloginfo('name');
|
47 |
+
}
|
48 |
+
|
49 |
+
//
|
50 |
+
protected $_sitedesc; //The site's tag line / description
|
51 |
+
|
52 |
+
public function getSitedesc() {
|
53 |
+
return $this->truncate(get_bloginfo('description'), 100, $this->_sq->description_maxlength);
|
54 |
+
}
|
55 |
+
|
56 |
+
//
|
57 |
+
protected $_excerpt; //Replaced with the post/page excerpt (or auto-generated if it does not exist)
|
58 |
+
|
59 |
+
public function setPost_excerpt($value) {
|
60 |
+
if ($value <> '') {
|
61 |
+
$this->_excerpt = $value;
|
62 |
+
}
|
63 |
+
}
|
64 |
+
|
65 |
+
public function getExcerpt() {
|
66 |
+
if (!isset($this->_excerpt)) {
|
67 |
+
if ($post = $this->_currentPost()) {
|
68 |
+
if ($post->post_excerpt <> '') {
|
69 |
+
$this->_excerpt = $post->post_excerpt;
|
70 |
+
} elseif ($post->post_content <> '') {
|
71 |
+
$this->_excerpt = $this->truncate($post->post_content, 100, $this->_sq->description_maxlength);
|
72 |
+
}
|
73 |
+
}
|
74 |
+
}
|
75 |
+
return $this->_excerpt;
|
76 |
+
}
|
77 |
+
|
78 |
+
protected $_excerpt_only; //Replaced with the post/page excerpt (without auto-generation)
|
79 |
+
|
80 |
+
public function getExcerpt_only() {
|
81 |
+
if (!isset($this->_excerpt_only) && isset($this->_id)) {
|
82 |
+
$this->_excerpt_only = get_the_excerpt($this->_id);
|
83 |
+
}
|
84 |
+
return $this->_excerpt_only;
|
85 |
+
}
|
86 |
+
|
87 |
+
//
|
88 |
+
protected $_category; //Replaced with the post categories (comma separated)
|
89 |
+
|
90 |
+
public function getCategory() {
|
91 |
+
if (!isset($this->_category)) {
|
92 |
+
$this->_category = $this->_title;
|
93 |
+
}
|
94 |
+
return $this->_category;
|
95 |
+
}
|
96 |
+
|
97 |
+
protected $_primary_category; //Replaced with the primary category of the post/page
|
98 |
+
|
99 |
+
public function getPrimary_category() {
|
100 |
+
if (!isset($this->_primary_category)) {
|
101 |
+
if ($category = get_category_by_slug($this->_guid)) {
|
102 |
+
$args = array(
|
103 |
+
'type' => 'post',
|
104 |
+
'child_of' => $category->term_id,
|
105 |
+
'orderby' => 'name',
|
106 |
+
'order' => 'ASC', // or any order you like
|
107 |
+
'hide_empty' => FALSE,
|
108 |
+
'hierarchical' => 1,
|
109 |
+
'taxonomy' => 'category',
|
110 |
+
);
|
111 |
+
if ($child_categories = get_categories($args)) {
|
112 |
+
if (!empty($child_categories)) {
|
113 |
+
$this->_primary_category = $child_categories[0]->name;
|
114 |
+
}
|
115 |
+
}
|
116 |
+
}
|
117 |
+
|
118 |
+
}
|
119 |
+
return $this->_primary_category;
|
120 |
+
}
|
121 |
+
|
122 |
+
//
|
123 |
+
protected $_category_description; //Replaced with the category description
|
124 |
+
|
125 |
+
public function getCategory_description() {
|
126 |
+
if (!isset($this->_category_description)) {
|
127 |
+
$this->_category_description = $this->_excerpt;
|
128 |
+
}
|
129 |
+
|
130 |
+
return $this->truncate($this->_category_description, 100, $this->_sq->description_maxlength);
|
131 |
+
}
|
132 |
+
|
133 |
+
protected $_tag; //Replaced with the current tag/tags
|
134 |
+
|
135 |
+
public function getTag() {
|
136 |
+
if (!isset($this->_tag)) {
|
137 |
+
$this->_tag = $this->_title;
|
138 |
+
}
|
139 |
+
return $this->_tag;
|
140 |
+
}
|
141 |
+
|
142 |
+
protected $_tag_description; //Replaced with the tag description
|
143 |
+
|
144 |
+
public function getTag_description() {
|
145 |
+
if (!isset($this->_tag_description)) {
|
146 |
+
$this->_tag_description = $this->_excerpt;
|
147 |
+
}
|
148 |
+
|
149 |
+
return $this->truncate($this->_tag_description, 100, $this->_sq->description_maxlength);
|
150 |
+
}
|
151 |
+
|
152 |
+
protected $_term_title; //Replaced with the term name
|
153 |
+
|
154 |
+
public function getTerm_title() {
|
155 |
+
if (!isset($this->_term_title)) {
|
156 |
+
$this->_term_title = $this->_title;
|
157 |
+
}
|
158 |
+
|
159 |
+
return $this->truncate($this->_term_title, 10,$this->_sq->title_maxlength);
|
160 |
+
}
|
161 |
+
|
162 |
+
protected $_term_description; //Replaced with the term description
|
163 |
+
|
164 |
+
public function getTerm_description() {
|
165 |
+
if (!isset($this->_term_description)) {
|
166 |
+
$this->_term_description = $this->_excerpt;
|
167 |
+
}
|
168 |
+
|
169 |
+
return $this->truncate($this->_term_description, 100,$this->_sq->description_maxlength);
|
170 |
+
}
|
171 |
+
|
172 |
+
//
|
173 |
+
protected $_searchphrase; //Replaced with the current search phrase
|
174 |
+
|
175 |
+
public function getSearchphrase() {
|
176 |
+
if (!isset($this->_searchphrase)) {
|
177 |
+
$search = get_query_var('s');
|
178 |
+
if ($search !== '') {
|
179 |
+
$this->_searchphrase = esc_html($search);
|
180 |
+
}
|
181 |
+
}
|
182 |
+
return $this->_searchphrase;
|
183 |
+
}
|
184 |
+
|
185 |
+
//
|
186 |
+
protected $_sep; //The separator defined in your theme's wp_title tag
|
187 |
+
|
188 |
+
public function setSep($sep = null) {
|
189 |
+
if (isset($sep)) {
|
190 |
+
$this->_sep = $sep;
|
191 |
+
}
|
192 |
+
}
|
193 |
+
|
194 |
+
public function getSep() {
|
195 |
+
if (!isset($this->_sep)) {
|
196 |
+
$this->_sep = SQ_Classes_Tools::getOption('sq_separator');
|
197 |
+
}
|
198 |
+
|
199 |
+
$seps = json_decode(SQ_ALL_SEP, true);
|
200 |
+
|
201 |
+
if (isset($seps[$this->_sep])) {
|
202 |
+
return $seps[$this->_sep];
|
203 |
+
} else {
|
204 |
+
return $this->_sep;
|
205 |
+
}
|
206 |
+
}
|
207 |
+
|
208 |
+
/*********************************************************************************/
|
209 |
+
//
|
210 |
+
protected $_page; //Replaced with the current page number with context (i.e. page 2 of 4)
|
211 |
+
|
212 |
+
public function getPage() {
|
213 |
+
if (is_paged()) {
|
214 |
+
return $this->sep . ' ' . __('Page', _SQ_PLUGIN_NAME_) . ' ' . (int)get_query_var('paged') . ' ' .
|
215 |
+
__('of', _SQ_PLUGIN_NAME_) . ' ' . $this->pagetotal;
|
216 |
+
}
|
217 |
+
return '';
|
218 |
+
}
|
219 |
+
|
220 |
+
//
|
221 |
+
protected $_pagetotal; //Replaced with the current page total
|
222 |
+
|
223 |
+
public function getPagetotal() {
|
224 |
+
global $wp_query;
|
225 |
+
if (isset($wp_query->max_num_pages))
|
226 |
+
return (int)$wp_query->max_num_pages;
|
227 |
+
|
228 |
+
return '';
|
229 |
+
}
|
230 |
+
|
231 |
+
protected $_pagenumber; //Replaced with the current page number
|
232 |
+
|
233 |
+
//
|
234 |
+
public function getPagenumber() {
|
235 |
+
if (is_paged()) {
|
236 |
+
return (int)get_query_var('paged');
|
237 |
+
}
|
238 |
+
return '';
|
239 |
+
}
|
240 |
+
|
241 |
+
//
|
242 |
+
protected $_pt_single; //Replaced with the post type single label
|
243 |
+
protected $_pt_plural; //Replaced with the post type plural label
|
244 |
+
protected $_modified; //Replaced with the post/page modified time
|
245 |
+
|
246 |
+
public function setPost_modified($value) {
|
247 |
+
if ($value <> '') {
|
248 |
+
$this->_modified = $value;
|
249 |
+
}
|
250 |
+
}
|
251 |
+
|
252 |
+
|
253 |
+
protected $_name; //Replaced with the post/page author's 'nicename'
|
254 |
+
|
255 |
+
public function setPost_author($value) {
|
256 |
+
if ($value <> '') {
|
257 |
+
$this->_name = $value;
|
258 |
+
}
|
259 |
+
}
|
260 |
+
|
261 |
+
protected $_user_description; //Replaced with the post/page author's 'Biographical Info'
|
262 |
+
|
263 |
+
public function getUser_description() {
|
264 |
+
if (!isset($this->_user_description)) {
|
265 |
+
$this->_user_description = $this->_excerpt;
|
266 |
+
}
|
267 |
+
|
268 |
+
return $this->truncate($this->_user_description, 100, $this->_sq->description_maxlength);
|
269 |
+
}
|
270 |
+
|
271 |
+
protected $_userid; //Replaced with the post/page author's userid
|
272 |
+
protected $_currenttime; //Replaced with the current time
|
273 |
+
|
274 |
+
public function getCurrenttime() {
|
275 |
+
return date(get_option('time_format'));
|
276 |
+
}
|
277 |
+
|
278 |
+
protected $_currentdate; //Replaced with the current date
|
279 |
+
|
280 |
+
public function getCurrentdate() {
|
281 |
+
return date(get_option('date_format'));
|
282 |
+
}
|
283 |
+
|
284 |
+
protected $_currentday; //Replaced with the current day
|
285 |
+
|
286 |
+
public function getCurrentday() {
|
287 |
+
return date('d');
|
288 |
+
}
|
289 |
+
|
290 |
+
protected $_currentmonth; //Replaced with the current month
|
291 |
+
|
292 |
+
public function getCurrentmonth() {
|
293 |
+
return date('m');
|
294 |
+
}
|
295 |
+
|
296 |
+
protected $_currentyear; //Replaced with the current year
|
297 |
+
|
298 |
+
public function getCurrentyear() {
|
299 |
+
return date('y');
|
300 |
+
}
|
301 |
+
|
302 |
+
protected $_caption; //Attachment caption
|
303 |
+
protected $_keyword; //Replaced with the posts focus keyword
|
304 |
+
protected $_focuskw; //Same as keyword
|
305 |
+
protected $_term404; //Replaced with the slug which caused the 404
|
306 |
+
/*********************************************************************************/
|
307 |
+
|
308 |
+
//get the sq for title and description limits
|
309 |
+
protected $_sq;
|
310 |
+
|
311 |
+
///////////
|
312 |
+
public function getPatterns() {
|
313 |
+
$patterns = array();
|
314 |
+
foreach ($this->_getProperties() as $property => $value) {
|
315 |
+
$patterns[$property] = '{{' . $property . '}}';
|
316 |
+
}
|
317 |
+
|
318 |
+
return $patterns;
|
319 |
+
}
|
320 |
+
|
321 |
+
protected $_currentpost;
|
322 |
+
|
323 |
+
private function _currentPost() {
|
324 |
+
if (!isset($this->_currentpost)) {
|
325 |
+
if (isset($this->id) && (int)$this->id > 0) {
|
326 |
+
$this->_currentpost = $this->_getPost($this->id);
|
327 |
+
}
|
328 |
+
}
|
329 |
+
|
330 |
+
return $this->_currentpost;
|
331 |
+
}
|
332 |
+
|
333 |
+
private function _getPost($id = null) {
|
334 |
+
$post = false;
|
335 |
+
|
336 |
+
if (isset($id)) {
|
337 |
+
if (isset($this->id) && (int)$this->id > 0) {
|
338 |
+
$post = get_post($id);
|
339 |
+
}
|
340 |
+
}
|
341 |
+
|
342 |
+
return $post;
|
343 |
+
}
|
344 |
+
|
345 |
+
public function truncate($text, $min = 100, $max = 110) {
|
346 |
+
if ($text <> '' && strlen($text) > $max) {
|
347 |
+
if (function_exists('strip_tags')) {
|
348 |
+
$text = strip_tags($text);
|
349 |
+
}
|
350 |
+
$text = str_replace(']]>', ']]>', $text);
|
351 |
+
$text = @preg_replace('|\[(.+?)\](.+?\[/\\1\])?|s', '', $text);
|
352 |
+
$text = strip_tags($text);
|
353 |
+
|
354 |
+
if ($max < strlen($text)) {
|
355 |
+
while ($text[$max] != ' ' && $max > $min) {
|
356 |
+
$max--;
|
357 |
+
}
|
358 |
+
}
|
359 |
+
$text = substr($text, 0, $max);
|
360 |
+
return trim(stripcslashes($text));
|
361 |
+
}
|
362 |
+
|
363 |
+
return $text;
|
364 |
+
}
|
365 |
+
|
366 |
+
}
|
models/domain/Post.php
ADDED
@@ -0,0 +1,151 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SQ_Models_Domain_Post extends SQ_Models_Abstract_Domain {
|
4 |
+
|
5 |
+
protected $_ID;
|
6 |
+
protected $_term_taxonomy_id;
|
7 |
+
protected $_taxonomy;
|
8 |
+
protected $_post_type;
|
9 |
+
protected $_url; //set the canonical link for this post type
|
10 |
+
protected $_hash;
|
11 |
+
protected $_sq;
|
12 |
+
protected $_sq_adm;
|
13 |
+
protected $_socials;
|
14 |
+
protected $_patterns;
|
15 |
+
//
|
16 |
+
protected $_post_name;
|
17 |
+
protected $_guid;
|
18 |
+
protected $_post_author;
|
19 |
+
protected $_post_date;
|
20 |
+
protected $_post_title;
|
21 |
+
protected $_post_excerpt;
|
22 |
+
protected $_post_attachment;
|
23 |
+
protected $_post_content;
|
24 |
+
protected $_post_status;
|
25 |
+
protected $_post_password;
|
26 |
+
|
27 |
+
protected $_post_parent;
|
28 |
+
protected $_post_modified;
|
29 |
+
protected $_category;
|
30 |
+
protected $_category_description;
|
31 |
+
protected $_noindex;
|
32 |
+
|
33 |
+
protected $_debug;
|
34 |
+
|
35 |
+
public function getSocials() {
|
36 |
+
if (!isset($this->_socials)) {
|
37 |
+
$this->_socials = json_decode(json_encode(SQ_Classes_Tools::getOption('socials')));
|
38 |
+
}
|
39 |
+
|
40 |
+
return $this->_socials;
|
41 |
+
}
|
42 |
+
|
43 |
+
public function getSq() {
|
44 |
+
if (!isset($this->_sq) && isset($this->_post_type) && $this->_post_type <> '') {
|
45 |
+
//Get the saved sq settings
|
46 |
+
$this->_sq = SQ_Classes_ObjController::getClass('SQ_Models_Frontend')->getSqSeo($this->_hash);
|
47 |
+
if (!empty($this->_sq)) {
|
48 |
+
$patterns = SQ_Classes_Tools::getOption('patterns');
|
49 |
+
//print_R($patterns);
|
50 |
+
if (!empty($patterns) && $sq_array = $this->_sq->toArray()) {
|
51 |
+
if (!empty($sq_array))
|
52 |
+
foreach ($sq_array as $key => $value) {
|
53 |
+
if ($value == '') {
|
54 |
+
if (isset($patterns[$this->_post_type])) {
|
55 |
+
if (isset($patterns[$this->_post_type][$key])) {
|
56 |
+
$this->_sq->$key = $patterns[$this->_post_type][$key];
|
57 |
+
if (isset($patterns[$this->_post_type]['sep'])) $this->_sq->sep = $patterns[$this->_post_type]['sep'];
|
58 |
+
if (isset($patterns[$this->_post_type]['noindex']) && !$this->_sq->noindex) $this->_sq->noindex = $patterns[$this->_post_type]['noindex'];
|
59 |
+
if (isset($patterns[$this->_post_type]['nofollow']) && !$this->_sq->nofollow) $this->_sq->nofollow = $patterns[$this->_post_type]['nofollow'];
|
60 |
+
}
|
61 |
+
} else {
|
62 |
+
if (isset($patterns['custom'][$key])) {
|
63 |
+
$this->_sq->$key = $patterns['custom'][$key];
|
64 |
+
if (isset($patterns['custom']['sep'])) $this->_sq->sep = $patterns['custom']['sep'];
|
65 |
+
if (isset($patterns['custom']['noindex']) && !$this->_sq->noindex) $this->_sq->noindex = $patterns['custom']['noindex'];
|
66 |
+
if (isset($patterns['custom']['nofollow']) && !$this->_sq->nofollow) $this->_sq->nofollow = $patterns['custom']['nofollow'];
|
67 |
+
}
|
68 |
+
}
|
69 |
+
}
|
70 |
+
}
|
71 |
+
}
|
72 |
+
}
|
73 |
+
|
74 |
+
|
75 |
+
}
|
76 |
+
|
77 |
+
return $this->_sq;
|
78 |
+
}
|
79 |
+
|
80 |
+
public function getSq_adm() {
|
81 |
+
|
82 |
+
if (!isset($this->_sq_adm) && isset($this->_post_type) && $this->_post_type <> '') {
|
83 |
+
if (is_user_logged_in()) {
|
84 |
+
$this->_sq_adm = SQ_Classes_ObjController::getClass('SQ_Models_Frontend')->getSqSeo($this->_hash, $this->ID);
|
85 |
+
|
86 |
+
if (!empty($this->_sq_adm)) {
|
87 |
+
$patterns = SQ_Classes_Tools::getOption('patterns');
|
88 |
+
//print_R($this);
|
89 |
+
if (!empty($patterns) && $sq_array = $this->_sq_adm->toArray()) {
|
90 |
+
if (!empty($sq_array))
|
91 |
+
foreach ($sq_array as $key => $value) {
|
92 |
+
if ($value == '') {
|
93 |
+
if (isset($patterns[$this->_post_type])) {
|
94 |
+
$this->_sq_adm->patterns = json_decode(json_encode($patterns[$this->_post_type]));
|
95 |
+
} else {
|
96 |
+
$this->_sq_adm->patterns = json_decode(json_encode($patterns['custom']));
|
97 |
+
}
|
98 |
+
}
|
99 |
+
}
|
100 |
+
}
|
101 |
+
}
|
102 |
+
}
|
103 |
+
}
|
104 |
+
return $this->_sq_adm;
|
105 |
+
}
|
106 |
+
|
107 |
+
public function getID() {
|
108 |
+
return $this->_ID;
|
109 |
+
}
|
110 |
+
|
111 |
+
public function importSEO() {
|
112 |
+
if (isset($this->_ID) && (int)$this->_ID > 0) {
|
113 |
+
$platforms = apply_filters('sq_importList', false);
|
114 |
+
$import = array();
|
115 |
+
|
116 |
+
if (!empty($platforms)) {
|
117 |
+
foreach ($platforms as $path => &$metas) {
|
118 |
+
if ($metas = SQ_Classes_ObjController::getClass('SQ_Models_Admin')->getDBSeo($this->_ID, $metas)) {
|
119 |
+
if (strpos($metas, '%%') !== false) {
|
120 |
+
$metas = preg_replace('/%%([^\%]+)%%/', '{{$1}}', $metas);
|
121 |
+
}
|
122 |
+
$import[SQ_Classes_ObjController::getClass('SQ_Models_Admin')->getName($path)] = $metas;
|
123 |
+
}
|
124 |
+
}
|
125 |
+
}
|
126 |
+
|
127 |
+
return $import;
|
128 |
+
}
|
129 |
+
}
|
130 |
+
|
131 |
+
public function getPost_attachment() {
|
132 |
+
if (!isset($this->_post_attachment) && isset($this->_ID) && (int)$this->_ID > 0) {
|
133 |
+
if (has_post_thumbnail($this->_ID)) {
|
134 |
+
$attachment = get_post(get_post_thumbnail_id($this->_ID));
|
135 |
+
if (isset($attachment->ID)) {
|
136 |
+
$url = wp_get_attachment_image_src($attachment->ID, 'full');
|
137 |
+
$this->_post_attachment = esc_url($url[0]);
|
138 |
+
}
|
139 |
+
}
|
140 |
+
}
|
141 |
+
|
142 |
+
return $this->_post_attachment;
|
143 |
+
}
|
144 |
+
|
145 |
+
public function toArray() {
|
146 |
+
$array = parent::toArray();
|
147 |
+
$array['sq'] = $this->sq;
|
148 |
+
|
149 |
+
return $array;
|
150 |
+
}
|
151 |
+
}
|
models/domain/Sq.php
ADDED
@@ -0,0 +1,146 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SQ_Models_Domain_Sq extends SQ_Models_Abstract_Domain {
|
4 |
+
|
5 |
+
protected $_doseo;
|
6 |
+
protected $_noindex;
|
7 |
+
protected $_nofollow;
|
8 |
+
protected $_nositemap;
|
9 |
+
//
|
10 |
+
protected $_title;
|
11 |
+
protected $_description;
|
12 |
+
protected $_keywords;
|
13 |
+
protected $_canonical;
|
14 |
+
|
15 |
+
protected $_robots;
|
16 |
+
protected $_cornerstone;
|
17 |
+
//
|
18 |
+
protected $_tw_media;
|
19 |
+
protected $_tw_title;
|
20 |
+
protected $_tw_description;
|
21 |
+
protected $_tw_type;
|
22 |
+
//
|
23 |
+
protected $_og_title;
|
24 |
+
protected $_og_description;
|
25 |
+
protected $_og_author;
|
26 |
+
protected $_og_type;
|
27 |
+
protected $_og_media;
|
28 |
+
|
29 |
+
//
|
30 |
+
// protected $_jsonld_title;
|
31 |
+
// protected $_jsonld_description;
|
32 |
+
// protected $_jsonld_type;
|
33 |
+
// protected $_jsonld_media;
|
34 |
+
|
35 |
+
// lengths
|
36 |
+
protected $_title_maxlength = 75;
|
37 |
+
protected $_description_maxlength = 165;
|
38 |
+
protected $_og_title_maxlength = 75;
|
39 |
+
protected $_og_description_maxlength = 110;
|
40 |
+
protected $_tw_title_maxlength = 75;
|
41 |
+
protected $_tw_description_maxlength = 100;
|
42 |
+
protected $_jsonld_title_maxlength = 75;
|
43 |
+
protected $_jsonld_description_maxlength = 110;
|
44 |
+
|
45 |
+
// for sq_adm patterns
|
46 |
+
protected $_patterns;
|
47 |
+
//get custom post type separator
|
48 |
+
protected $_sep;
|
49 |
+
|
50 |
+
|
51 |
+
public function getDoseo() {
|
52 |
+
if (!isset($this->_doseo)) {
|
53 |
+
$this->_doseo = 1;
|
54 |
+
}
|
55 |
+
|
56 |
+
return (int)$this->_doseo;
|
57 |
+
}
|
58 |
+
|
59 |
+
public function getNoindex() {
|
60 |
+
if (!isset($this->_noindex)) {
|
61 |
+
$this->_noindex = 0;
|
62 |
+
}
|
63 |
+
|
64 |
+
return (int)$this->_noindex;
|
65 |
+
}
|
66 |
+
|
67 |
+
public function getNositemap() {
|
68 |
+
if (!isset($this->_nositemap)) {
|
69 |
+
$this->_nositemap = 0;
|
70 |
+
}
|
71 |
+
|
72 |
+
return (int)$this->_nositemap;
|
73 |
+
}
|
74 |
+
|
75 |
+
public function getNofollow() {
|
76 |
+
if (!isset($this->_nofollow)) {
|
77 |
+
$this->_nofollow = 0;
|
78 |
+
}
|
79 |
+
|
80 |
+
return (int)$this->_nofollow;
|
81 |
+
}
|
82 |
+
|
83 |
+
public function getOg_type() {
|
84 |
+
if (!isset($this->_og_type)) {
|
85 |
+
global $post;
|
86 |
+
if (isset($post->post_type)) {
|
87 |
+
$this->_og_type = $this->getPostType($post->post_type);
|
88 |
+
}
|
89 |
+
}
|
90 |
+
|
91 |
+
return $this->_og_type;
|
92 |
+
}
|
93 |
+
|
94 |
+
|
95 |
+
public function getPostType($type) {
|
96 |
+
$types = array(
|
97 |
+
'home' => 'website',
|
98 |
+
'profile' => 'profile',
|
99 |
+
'post' => 'article',
|
100 |
+
'page' => 'article',
|
101 |
+
'book' => 'book',
|
102 |
+
'music' => 'music',
|
103 |
+
'product' => 'product',
|
104 |
+
'video' => 'video');
|
105 |
+
|
106 |
+
if (in_array($type, array_keys($types))) {
|
107 |
+
return $types[$type];
|
108 |
+
}
|
109 |
+
|
110 |
+
return $types['home'];
|
111 |
+
}
|
112 |
+
|
113 |
+
public function getClearedTitle() {
|
114 |
+
if (isset($this->_title)) {
|
115 |
+
$this->_title = $this->clearTitle($this->_title);
|
116 |
+
}
|
117 |
+
|
118 |
+
return $this->_title;
|
119 |
+
}
|
120 |
+
|
121 |
+
public function getClearedDescription() {
|
122 |
+
if (isset($this->_description)) {
|
123 |
+
$this->_description = $this->clearDescription($this->_description);
|
124 |
+
}
|
125 |
+
|
126 |
+
return $this->_description;
|
127 |
+
}
|
128 |
+
|
129 |
+
/**
|
130 |
+
* Clear and format the title for all languages
|
131 |
+
* @param $title
|
132 |
+
* @return string
|
133 |
+
*/
|
134 |
+
public function clearTitle($title) {
|
135 |
+
return SQ_Classes_Tools::clearTitle($title);
|
136 |
+
}
|
137 |
+
|
138 |
+
/**
|
139 |
+
* Clear and format the descrition for all languages
|
140 |
+
* @param $description
|
141 |
+
* @return mixed|string
|
142 |
+
*/
|
143 |
+
public function clearDescription($description) {
|
144 |
+
return SQ_Classes_Tools::clearDescription($description);
|
145 |
+
}
|
146 |
+
}
|
models/services/Analytics.php
ADDED
@@ -0,0 +1,64 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SQ_Models_Services_Analytics extends SQ_Models_Abstract_Seo {
|
4 |
+
|
5 |
+
|
6 |
+
public function __construct() {
|
7 |
+
parent::__construct();
|
8 |
+
if ($this->_post->sq->doseo) {
|
9 |
+
if (!SQ_Classes_Tools::getOption('sq_auto_amp')) {
|
10 |
+
add_filter('sq_google_analytics', array($this, 'generateGoogleAnalytics'));
|
11 |
+
add_filter('sq_google_analytics', array($this, 'packGoogleAnalytics'), 99);
|
12 |
+
} else {
|
13 |
+
add_filter('sq_google_analytics', array($this, 'generateGoogleAnalyticsAMP'));
|
14 |
+
add_filter('sq_google_analytics_amp', array($this, 'packGoogleAnalyticsAMP'));
|
15 |
+
}
|
16 |
+
} else {
|
17 |
+
add_filter('sq_google_analytics', array($this, 'returnFalse'));
|
18 |
+
add_filter('sq_google_analytics_footer', array($this, 'returnFalse'));
|
19 |
+
}
|
20 |
+
}
|
21 |
+
|
22 |
+
public function generateGoogleAnalytics($track = '') {
|
23 |
+
$codes = json_decode(json_encode(SQ_Classes_Tools::getOption('codes')));
|
24 |
+
|
25 |
+
if (isset($codes->google_analytics) && $codes->google_analytics <> '') {
|
26 |
+
$track = $codes->google_analytics;
|
27 |
+
}
|
28 |
+
|
29 |
+
return $track;
|
30 |
+
}
|
31 |
+
|
32 |
+
public function packGoogleAnalytics($track = '') {
|
33 |
+
if ($track <> '') {
|
34 |
+
return sprintf("<script async src='https://www.google-analytics.com/analytics.js'></script><script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', '%s', 'auto');ga('send', 'pageview');</script>", $track);
|
35 |
+
}
|
36 |
+
|
37 |
+
return false;
|
38 |
+
}
|
39 |
+
|
40 |
+
/*************************** FOR AMP VERSION**********************************/
|
41 |
+
|
42 |
+
public function generateGoogleAnalyticsAMP() {
|
43 |
+
$codes = json_decode(json_encode(SQ_Classes_Tools::getOption('codes')));
|
44 |
+
|
45 |
+
if (isset($codes->google_analytics) && $codes->google_analytics <> '') {
|
46 |
+
return '<script async custom-element="amp-analytics" src="https://cdn.ampproject.org/v0/amp-analytics-0.1.js"></script>';
|
47 |
+
}
|
48 |
+
|
49 |
+
return false;
|
50 |
+
}
|
51 |
+
|
52 |
+
/**
|
53 |
+
* Return the AMP Analytics
|
54 |
+
* @return string
|
55 |
+
*/
|
56 |
+
public function packGoogleAnalyticsAMP() {
|
57 |
+
$codes = json_decode(json_encode(SQ_Classes_Tools::getOption('codes')));
|
58 |
+
|
59 |
+
if (isset($codes->google_analytics) && $codes->google_analytics <> '') {
|
60 |
+
return sprintf('<amp-analytics type="googleanalytics"><script type="application/json">{"vars": {"account": "%s"},"triggers": {"trackPageview": {"on": "visible","request": "pageview"}}}</script></amp-analytics>', $codes->google_analytics);
|
61 |
+
}
|
62 |
+
|
63 |
+
}
|
64 |
+
}
|
models/services/Canonical.php
ADDED
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SQ_Models_Services_Canonical extends SQ_Models_Abstract_Seo {
|
4 |
+
|
5 |
+
|
6 |
+
public function __construct() {
|
7 |
+
parent::__construct();
|
8 |
+
if ($this->_post->sq->doseo) {
|
9 |
+
add_filter('sq_canonical', array($this, 'generateCanonical'));
|
10 |
+
add_filter('sq_canonical', array($this, 'packCanonical'), 99);
|
11 |
+
} else {
|
12 |
+
add_filter('sq_canonical', array($this, 'returnFalse'));
|
13 |
+
}
|
14 |
+
}
|
15 |
+
|
16 |
+
public function generateCanonical($canonical = '') {
|
17 |
+
if (SQ_Classes_Tools::getOption('sq_auto_canonical') && isset($this->_post->sq->canonical) && $this->_post->sq->canonical <> '') {
|
18 |
+
$canonical = esc_url($this->_post->sq->canonical);
|
19 |
+
}else{
|
20 |
+
$canonical = urldecode(esc_url($this->_post->url));
|
21 |
+
}
|
22 |
+
|
23 |
+
return $canonical;
|
24 |
+
}
|
25 |
+
|
26 |
+
public function packCanonical($canonical = '') {
|
27 |
+
if ($canonical <> '') {
|
28 |
+
return sprintf("<link rel=\"canonical\" href=\"%s\" />", $canonical);
|
29 |
+
}
|
30 |
+
|
31 |
+
return false;
|
32 |
+
}
|
33 |
+
}
|
models/services/Description.php
ADDED
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SQ_Models_Services_Description extends SQ_Models_Abstract_Seo {
|
4 |
+
|
5 |
+
|
6 |
+
public function __construct() {
|
7 |
+
parent::__construct();
|
8 |
+
if ($this->_post->sq->doseo) {
|
9 |
+
add_filter('sq_description', array($this, 'generateDescription'));
|
10 |
+
add_filter('sq_description', array($this, 'clearDescription'), 98);
|
11 |
+
add_filter('sq_description', array($this, 'packDescription'), 99);
|
12 |
+
} else {
|
13 |
+
add_filter('sq_description', array($this, 'returnFalse'));
|
14 |
+
}
|
15 |
+
|
16 |
+
}
|
17 |
+
|
18 |
+
public function generateDescription($description = '') {
|
19 |
+
|
20 |
+
if ( $this->_post->sq->description <> '') {
|
21 |
+
$description = $this->_post->sq->description;
|
22 |
+
}
|
23 |
+
|
24 |
+
return $description;
|
25 |
+
}
|
26 |
+
|
27 |
+
public function packDescription($description) {
|
28 |
+
if ($description <> '') {
|
29 |
+
return sprintf("<meta name=\"description\" content=\"%s\" />", $description);
|
30 |
+
}
|
31 |
+
return false;
|
32 |
+
}
|
33 |
+
}
|
models/services/DublinCore.php
ADDED
@@ -0,0 +1,99 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SQ_Models_Services_DublinCore extends SQ_Models_Abstract_Seo {
|
4 |
+
|
5 |
+
public function __construct() {
|
6 |
+
parent::__construct();
|
7 |
+
|
8 |
+
if ($this->_post->sq->doseo) {
|
9 |
+
add_filter('sq_dublin_core', array($this, 'generateMeta'));
|
10 |
+
add_filter('sq_dublin_core', array($this, 'packMeta'), 99);
|
11 |
+
} else {
|
12 |
+
add_filter('sq_dublin_core', array($this, 'returnFalse'));
|
13 |
+
}
|
14 |
+
|
15 |
+
}
|
16 |
+
|
17 |
+
/**
|
18 |
+
* Get all metas for Dublin Core
|
19 |
+
* @param string $metas
|
20 |
+
* @return string
|
21 |
+
*/
|
22 |
+
public function generateMeta($metas = array()) {
|
23 |
+
$date = null;
|
24 |
+
if (get_bloginfo('language') <> '') {
|
25 |
+
$metas['dc.language'] = get_bloginfo('language');
|
26 |
+
$metas['dc.language.iso'] = str_replace('-', '_', get_bloginfo('language'));
|
27 |
+
}
|
28 |
+
if (!$name = $this->getAuthor('display_name')) {
|
29 |
+
$name = get_bloginfo('name');
|
30 |
+
}
|
31 |
+
|
32 |
+
if ($name <> '') {
|
33 |
+
$metas['dc.publisher'] = $name;
|
34 |
+
}
|
35 |
+
if ($this->_post->sq->title <> '') {
|
36 |
+
$metas['dc.title'] = $this->clearTitle($this->_post->sq->title);
|
37 |
+
}
|
38 |
+
if ($this->_post->sq->description <> '') {
|
39 |
+
$metas['dc.description'] = $this->clearDescription($this->_post->sq->description);
|
40 |
+
}
|
41 |
+
|
42 |
+
if ($this->_post->post_type == 'home') {
|
43 |
+
$metas['dc.date.issued'] = date('Y-m-d', strtotime(get_lastpostmodified('gmt')));
|
44 |
+
} elseif ($this->_post->post_date <> '') {
|
45 |
+
$metas['dc.date.issued'] = date('Y-m-d', strtotime($this->_post->post_date));
|
46 |
+
}
|
47 |
+
|
48 |
+
if (isset($this->_post->post_modified) && $this->_post->post_modified <> '') {
|
49 |
+
$og['dc.date.updated'] = $this->_post->post_modified;
|
50 |
+
}
|
51 |
+
|
52 |
+
return $metas;
|
53 |
+
}
|
54 |
+
|
55 |
+
/**
|
56 |
+
* Get the author
|
57 |
+
* @param string $what
|
58 |
+
* @return bool|mixed|string
|
59 |
+
*/
|
60 |
+
protected function getAuthor($what = 'user_nicename') {
|
61 |
+
if (!isset($this->author)) {
|
62 |
+
if (is_author()) {
|
63 |
+
$this->author = get_userdata(get_query_var('author'));
|
64 |
+
} elseif (is_single() && isset($this->_post->post_author)) {
|
65 |
+
$this->author = get_userdata((int)$this->_post->post_author)->data;
|
66 |
+
}
|
67 |
+
}
|
68 |
+
|
69 |
+
if (isset($this->author)) {
|
70 |
+
|
71 |
+
if ($what == 'user_url' && $this->author->$what == '') {
|
72 |
+
return get_author_posts_url($this->author->ID, $this->author->user_nicename);
|
73 |
+
}
|
74 |
+
if (isset($this->author->$what)) {
|
75 |
+
return $this->author->$what;
|
76 |
+
}
|
77 |
+
}
|
78 |
+
|
79 |
+
return false;
|
80 |
+
}
|
81 |
+
|
82 |
+
/**
|
83 |
+
* Pack the Dublin Core
|
84 |
+
* @param array $metas
|
85 |
+
* @return bool|string
|
86 |
+
*/
|
87 |
+
public function packMeta($metas = array()) {
|
88 |
+
if (!empty($metas)) {
|
89 |
+
foreach ($metas as $key => &$meta) {
|
90 |
+
$meta = sprintf('<meta name="%s" content="%s" />', $key, $meta);
|
91 |
+
}
|
92 |
+
|
93 |
+
return "\n" . join("\n", array_values($metas));
|
94 |
+
}
|
95 |
+
|
96 |
+
return false;
|
97 |
+
}
|
98 |
+
|
99 |
+
}
|
models/services/Favicon.php
ADDED
@@ -0,0 +1,71 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SQ_Models_Services_Favicon extends SQ_Models_Abstract_Seo {
|
4 |
+
|
5 |
+
public function __construct() {
|
6 |
+
parent::__construct();
|
7 |
+
if ($this->_post->sq->doseo) {
|
8 |
+
add_filter('sq_favicon', array($this, 'generateFavicon'));
|
9 |
+
add_filter('sq_favicon', array($this, 'packFavicon'), 99);
|
10 |
+
} else {
|
11 |
+
add_filter('sq_favicon', array($this, 'returnFalse'));
|
12 |
+
}
|
13 |
+
}
|
14 |
+
|
15 |
+
public function generateFavicon($favicons = array()) {
|
16 |
+
$rnd = '';
|
17 |
+
|
18 |
+
if (current_user_can('manage_options')) {
|
19 |
+
$rnd = '?' . md5(SQ_Classes_Tools::getOption('favicon'));
|
20 |
+
}
|
21 |
+
|
22 |
+
if (SQ_Classes_Tools::getOption('favicon') <> '' && file_exists(_SQ_CACHE_DIR_ . SQ_Classes_Tools::getOption('favicon'))) {
|
23 |
+
if (!get_option('permalink_structure')) {
|
24 |
+
$favicon = home_url() . '/index.php?sq_get=favicon';
|
25 |
+
$touchicon = home_url() . '/index.php?sq_get=touchicon';
|
26 |
+
} else {
|
27 |
+
$favicon = home_url() . '/favicon.icon' . $rnd;
|
28 |
+
$touchicon = home_url() . '/touch-icon.png' . $rnd;
|
29 |
+
}
|
30 |
+
|
31 |
+
$favicons['shortcut icon'] = $favicon;
|
32 |
+
$favicons['apple-touch-icon']['32'] = $touchicon;
|
33 |
+
|
34 |
+
$appleSizes = preg_split('/[,]+/', _SQ_MOBILE_ICON_SIZES);
|
35 |
+
foreach ($appleSizes as $size) {
|
36 |
+
if (!get_option('permalink_structure')) {
|
37 |
+
$favicon = home_url() . '/index.php?sq_get=touchicon&sq_size=' . $size;
|
38 |
+
} else {
|
39 |
+
$favicon = home_url() . '/touch-icon' . $size . '.png' . $rnd;
|
40 |
+
}
|
41 |
+
$favicons['apple-touch-icon'][$size] = $favicon;
|
42 |
+
}
|
43 |
+
} else {
|
44 |
+
if (file_exists(ABSPATH . 'favicon.ico')) {
|
45 |
+
$favicons['shortcut icon'] = home_url() . '/favicon.ico';
|
46 |
+
}
|
47 |
+
}
|
48 |
+
|
49 |
+
return $favicons;
|
50 |
+
}
|
51 |
+
|
52 |
+
public function packFavicon($favicons = array()) {
|
53 |
+
$allfavicons = array();
|
54 |
+
if (!empty($favicons)) {
|
55 |
+
foreach ($favicons as $key => $favicon) {
|
56 |
+
if (!is_array($favicon)) {
|
57 |
+
$allfavicons[] = sprintf('<link rel="%s" href="%s" />', $key, $favicon);
|
58 |
+
} elseif (!empty($favicon)) {
|
59 |
+
foreach ($favicon as $size => $value) {
|
60 |
+
$allfavicons[] = sprintf('<link rel="%s" sizes="%s" href="%s" />', $key, $size . 'x' . $size, $value);
|
61 |
+
}
|
62 |
+
}
|
63 |
+
}
|
64 |
+
|
65 |
+
return "\n" . join("\n", array_values($allfavicons));
|
66 |
+
}
|
67 |
+
|
68 |
+
return false;
|
69 |
+
}
|
70 |
+
|
71 |
+
}
|
models/services/JsonLD.php
CHANGED
@@ -1,24 +1,55 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class
|
4 |
private $_data = array();
|
5 |
private $_types = array();
|
6 |
|
7 |
-
|
8 |
-
* Constructor.
|
9 |
-
*/
|
10 |
public function __construct() {
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
} else {
|
20 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
}
|
|
|
|
|
22 |
}
|
23 |
|
24 |
/**
|
@@ -54,6 +85,7 @@ class Model_Service_JsonLD {
|
|
54 |
return $this->_data;
|
55 |
}
|
56 |
|
|
|
57 |
/**
|
58 |
* Structures and returns data.
|
59 |
*
|
@@ -79,7 +111,7 @@ class Model_Service_JsonLD {
|
|
79 |
// Wrap the multiple values of each type inside a graph... Then add context to each type.
|
80 |
foreach ($data as $type => $value) {
|
81 |
$data[$type] = count($value) > 1 ? array('@graph' => $value) : $value[0];
|
82 |
-
$data[$type] = apply_filters('
|
83 |
}
|
84 |
|
85 |
// If requested types, pick them up... Finally change the associative array to an indexed one.
|
@@ -110,25 +142,210 @@ class Model_Service_JsonLD {
|
|
110 |
return array_filter(apply_filters('sq_structured_data_type_for_page', $this->_types));
|
111 |
}
|
112 |
|
113 |
-
/**
|
114 |
-
* Sanitizes, encodes and outputs structured data.
|
115 |
-
*
|
116 |
-
* Hooked into `wp_footer` action hook.
|
117 |
-
* Hooked into `sq_email_order_details` action hook.
|
118 |
-
*/
|
119 |
-
public function getStructuredData() {
|
120 |
-
$types = $this->get_data_type_for_page();
|
121 |
-
if ($data = $this->clean($this->get_structured_data($types))) {
|
122 |
-
return '<script type="application/ld+json">' . wp_json_encode($data) . '</script>';
|
123 |
-
}
|
124 |
-
}
|
125 |
|
126 |
public function clean($var) {
|
127 |
if (is_array($var)) {
|
128 |
return array_map(array($this, 'clean'), $var);
|
129 |
} else {
|
130 |
-
return
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
131 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
132 |
}
|
133 |
|
134 |
|
@@ -172,19 +389,19 @@ class Model_Service_JsonLD {
|
|
172 |
}
|
173 |
}
|
174 |
|
175 |
-
$this->set_data(
|
176 |
}
|
177 |
|
178 |
/**
|
179 |
* Generates Product structured data.
|
180 |
*
|
181 |
-
* Hooked into `
|
182 |
-
* Hooked into `
|
183 |
*
|
184 |
* @param WC_Product $product Product data (default: null).
|
185 |
*/
|
186 |
public function generate_product_data($product = null) {
|
187 |
-
if (
|
188 |
global $product;
|
189 |
}
|
190 |
|
@@ -203,8 +420,8 @@ class Model_Service_JsonLD {
|
|
203 |
$markup['name'] = $product->get_title();
|
204 |
}
|
205 |
|
206 |
-
if (apply_filters('
|
207 |
-
$this->set_data(apply_filters('
|
208 |
return;
|
209 |
}
|
210 |
|
@@ -212,8 +429,8 @@ class Model_Service_JsonLD {
|
|
212 |
'@type' => 'Offer',
|
213 |
'priceCurrency' => $currency,
|
214 |
'availability' => 'http://schema.org/' . $stock = ($product->is_in_stock() ? 'InStock' : 'OutOfStock'),
|
215 |
-
'sku' => $product->get_sku(),
|
216 |
-
'image' => wp_get_attachment_url($product->get_image_id()),
|
217 |
'description' => (method_exists($product, 'get_description') ? $product->get_description() : $product->get_title()),
|
218 |
'seller' => array(
|
219 |
'@type' => 'Organization',
|
@@ -223,7 +440,7 @@ class Model_Service_JsonLD {
|
|
223 |
);
|
224 |
|
225 |
if ($product->is_type('variable') && method_exists($product, 'get_variation_prices')) {
|
226 |
-
|
227 |
|
228 |
$markup_offer['priceSpecification'] = array(
|
229 |
'price' => wc_format_decimal($product->get_price(), wc_get_price_decimals()),
|
@@ -235,7 +452,7 @@ class Model_Service_JsonLD {
|
|
235 |
$markup_offer['price'] = wc_format_decimal($product->get_price(), wc_get_price_decimals());
|
236 |
}
|
237 |
|
238 |
-
$markup['offers'] =
|
239 |
|
240 |
if ($product->get_rating_count()) {
|
241 |
$markup['aggregateRating'] = array(
|
@@ -246,13 +463,13 @@ class Model_Service_JsonLD {
|
|
246 |
);
|
247 |
}
|
248 |
|
249 |
-
$this->set_data(
|
250 |
}
|
251 |
|
252 |
/**
|
253 |
* Generates Review structured data.
|
254 |
*
|
255 |
-
* Hooked into `
|
256 |
*
|
257 |
* @param WP_Comment $comment Comment data.
|
258 |
*/
|
@@ -279,13 +496,12 @@ class Model_Service_JsonLD {
|
|
279 |
'name' => get_comment_author($comment->comment_ID),
|
280 |
);
|
281 |
|
282 |
-
$this->set_data(
|
283 |
}
|
284 |
|
285 |
/**
|
286 |
* Generates BreadcrumbList structured data.
|
287 |
*
|
288 |
-
* Hooked into `sq_breadcrumb` action hook.
|
289 |
*
|
290 |
* @param WC_Breadcrumb $breadcrumbs Breadcrumb data.
|
291 |
*/
|
@@ -310,13 +526,12 @@ class Model_Service_JsonLD {
|
|
310 |
}
|
311 |
}
|
312 |
|
313 |
-
$this->set_data(
|
314 |
}
|
315 |
|
316 |
/**
|
317 |
* Generates WebSite structured data.
|
318 |
*
|
319 |
-
* Hooked into `sq_before_main_content` action hook.
|
320 |
*/
|
321 |
public function generate_website_data() {
|
322 |
$markup = array();
|
@@ -329,13 +544,12 @@ class Model_Service_JsonLD {
|
|
329 |
'query-input' => 'required name=search_term_string',
|
330 |
);
|
331 |
|
332 |
-
$this->set_data(
|
333 |
}
|
334 |
|
335 |
/**
|
336 |
* Generates Order structured data.
|
337 |
*
|
338 |
-
* Hooked into `sq_email_order_details` action hook.
|
339 |
*
|
340 |
* @param WP_Order $order Order data.
|
341 |
* @param bool $sent_to_admin Send to admin (default: false).
|
@@ -361,11 +575,11 @@ class Model_Service_JsonLD {
|
|
361 |
|
362 |
$markup_offers = array();
|
363 |
foreach ($order->get_items() as $item) {
|
364 |
-
if (!apply_filters('
|
365 |
continue;
|
366 |
}
|
367 |
|
368 |
-
$product = apply_filters('
|
369 |
$product_exists = is_object($product);
|
370 |
$is_visible = $product_exists && $product->is_visible();
|
371 |
|
@@ -378,12 +592,12 @@ class Model_Service_JsonLD {
|
|
378 |
'priceCurrency' => $order->get_currency(),
|
379 |
'eligibleQuantity' => array(
|
380 |
'@type' => 'QuantitativeValue',
|
381 |
-
'value' => apply_filters('
|
382 |
),
|
383 |
),
|
384 |
'itemOffered' => array(
|
385 |
'@type' => 'Product',
|
386 |
-
'name' => apply_filters('
|
387 |
'sku' => $product_exists ? $product->get_sku() : '',
|
388 |
'image' => $product_exists ? wp_get_attachment_image_url($product->get_image_id()) : '',
|
389 |
'url' => $is_visible ? get_permalink($product->get_id()) : get_home_url(),
|
@@ -439,6 +653,6 @@ class Model_Service_JsonLD {
|
|
439 |
'target' => $order_url,
|
440 |
);
|
441 |
|
442 |
-
$this->set_data(apply_filters('
|
443 |
}
|
444 |
}
|
1 |
<?php
|
2 |
|
3 |
+
class SQ_Models_Services_JsonLD extends SQ_Models_Abstract_Seo {
|
4 |
private $_data = array();
|
5 |
private $_types = array();
|
6 |
|
7 |
+
|
|
|
|
|
8 |
public function __construct() {
|
9 |
+
parent::__construct();
|
10 |
+
if ($this->_post->sq->doseo) {
|
11 |
+
if (class_exists('WooCommerce')) {
|
12 |
+
// Generate structured data for Woocommerce 3.
|
13 |
+
add_action('woocommerce_before_main_content', array($this, 'generate_website_data'), 31);
|
14 |
+
add_action('woocommerce_breadcrumb', array($this, 'generate_breadcrumblist_data'), 11);
|
15 |
+
add_action('woocommerce_shop_loop', array($this, 'generate_product_data'), 11);
|
16 |
+
add_action('woocommerce_single_product_summary', array($this, 'generate_product_data'), 61);
|
17 |
+
add_action('woocommerce_review_meta', array($this, 'generate_review_data'), 21);
|
18 |
+
add_action('woocommerce_email_order_details', array($this, 'generate_order_data'), 21, 3);
|
19 |
+
} else {
|
20 |
+
add_filter('sq_json_ld', array($this, 'generate_breadcrumblist_data_blog'), 9);
|
21 |
+
}
|
22 |
+
add_filter('sq_json_ld', array($this, 'generate_structured_data_blog'), 9);
|
23 |
+
|
24 |
+
add_filter('sq_json_ld', array($this, 'generateJsonLd'));
|
25 |
+
add_filter('sq_json_ld', array($this, 'packJsonLd'), 99);
|
26 |
} else {
|
27 |
+
add_filter('sq_json_ld', array($this, 'returnFalse'));
|
28 |
+
}
|
29 |
+
}
|
30 |
+
|
31 |
+
|
32 |
+
/**
|
33 |
+
* Sanitizes, encodes and outputs structured data.
|
34 |
+
*
|
35 |
+
* @return array|string
|
36 |
+
*/
|
37 |
+
public function generateJsonLd() {
|
38 |
+
$types = $this->get_data_type_for_page();
|
39 |
+
$data = $this->clean($this->get_structured_data($types));
|
40 |
+
|
41 |
+
return $data;
|
42 |
+
}
|
43 |
+
|
44 |
+
/**
|
45 |
+
* Pack the Structured Data
|
46 |
+
*/
|
47 |
+
public function packJsonLd($data = array()) {
|
48 |
+
if (!empty($data)) {
|
49 |
+
return '<script type="application/ld+json">' . wp_json_encode($data) . '</script>';
|
50 |
}
|
51 |
+
|
52 |
+
return false;
|
53 |
}
|
54 |
|
55 |
/**
|
85 |
return $this->_data;
|
86 |
}
|
87 |
|
88 |
+
|
89 |
/**
|
90 |
* Structures and returns data.
|
91 |
*
|
111 |
// Wrap the multiple values of each type inside a graph... Then add context to each type.
|
112 |
foreach ($data as $type => $value) {
|
113 |
$data[$type] = count($value) > 1 ? array('@graph' => $value) : $value[0];
|
114 |
+
$data[$type] = apply_filters('woocommerce_structured_data_context', array('@context' => 'http://schema.org/'), $data, $type, $value) + $data[$type];
|
115 |
}
|
116 |
|
117 |
// If requested types, pick them up... Finally change the associative array to an indexed one.
|
142 |
return array_filter(apply_filters('sq_structured_data_type_for_page', $this->_types));
|
143 |
}
|
144 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
145 |
|
146 |
public function clean($var) {
|
147 |
if (is_array($var)) {
|
148 |
return array_map(array($this, 'clean'), $var);
|
149 |
} else {
|
150 |
+
return is_string($var) ? ((strpos($var,'://') !== false) ? esc_url($var) : sanitize_text_field($var)) : $var;
|
151 |
+
}
|
152 |
+
}
|
153 |
+
|
154 |
+
public function generate_structured_data_blog() {
|
155 |
+
$jsonld = SQ_Classes_Tools::getOption('sq_jsonld');
|
156 |
+
$jsonld_type = SQ_Classes_Tools::getOption('sq_jsonld_type');
|
157 |
+
$socials = SQ_Classes_Tools::getOption('socials');
|
158 |
+
|
159 |
+
if ($this->_post->post_type == 'home') {
|
160 |
+
$markup['@type'] = $jsonld_type;
|
161 |
+
$markup['@id'] = $this->_post->url;
|
162 |
+
$markup['url'] = $this->_post->url;
|
163 |
+
|
164 |
+
if (isset($jsonld[$jsonld_type])) {
|
165 |
+
foreach ($jsonld[$jsonld_type] as $key => $value) {
|
166 |
+
if ($value <> '') {
|
167 |
+
if ($key == 'contactType' || ($jsonld_type == 'Organization' && $key == 'jobTitle') ) {
|
168 |
+
continue;
|
169 |
+
}
|
170 |
+
if ($jsonld_type == 'Organization' && $key == 'telephone' ) {
|
171 |
+
$markup['contactPoint'] = array(
|
172 |
+
'@type' => 'ContactPoint',
|
173 |
+
'telephone' => $value,
|
174 |
+
'contactType' => $jsonld[$jsonld_type]['contactType'],
|
175 |
+
|
176 |
+
);
|
177 |
+
}
|
178 |
+
|
179 |
+
if ($key == 'logo') {
|
180 |
+
if ($jsonld_type == 'Person') {
|
181 |
+
$key = 'image';
|
182 |
+
}
|
183 |
+
$markup[$key] = array(
|
184 |
+
'@type' => 'ImageObject',
|
185 |
+
'url' => $value,
|
186 |
+
);
|
187 |
+
} else {
|
188 |
+
$markup[$key] = $value;
|
189 |
+
}
|
190 |
+
|
191 |
+
}
|
192 |
+
}
|
193 |
+
}
|
194 |
+
|
195 |
+
if (!empty($markup)) {
|
196 |
+
$jsonld_socials = array();
|
197 |
+
if (isset($socials['facebook_site']) && $socials['facebook_site'] <> '') {
|
198 |
+
$jsonld_socials[] = $socials['facebook_site'];
|
199 |
+
}
|
200 |
+
if (isset($socials['twitter_site']) && $socials['twitter_site'] <> '') {
|
201 |
+
$jsonld_socials[] = $socials['twitter_site'];
|
202 |
+
}
|
203 |
+
if (isset($socials['instagram_url']) && $socials['instagram_url'] <> '') {
|
204 |
+
$jsonld_socials[] = $socials['instagram_url'];
|
205 |
+
}
|
206 |
+
if (isset($socials['linkedin_url']) && $socials['linkedin_url'] <> '') {
|
207 |
+
$jsonld_socials[] = $socials['linkedin_url'];
|
208 |
+
}
|
209 |
+
if (isset($socials['myspace_url']) && $socials['myspace_url'] <> '') {
|
210 |
+
$jsonld_socials[] = $socials['myspace_url'];
|
211 |
+
}
|
212 |
+
if (isset($socials['twitter']) && $socials['twitter'] <> '') {
|
213 |
+
$jsonld_socials[] = $socials['twitter'];
|
214 |
+
}
|
215 |
+
if (isset($socials['pinterest_url']) && $socials['pinterest_url'] <> '') {
|
216 |
+
$jsonld_socials[] = $socials['pinterest_url'];
|
217 |
+
}
|
218 |
+
if (isset($socials['youtube_url']) && $socials['youtube_url'] <> '') {
|
219 |
+
$jsonld_socials[] = $socials['youtube_url'];
|
220 |
+
}
|
221 |
+
if (isset($socials['google_plus_url']) && $socials['google_plus_url'] <> '') {
|
222 |
+
$jsonld_socials[] = $socials['google_plus_url'];
|
223 |
+
}
|
224 |
+
|
225 |
+
$markup['potentialAction'] = array(
|
226 |
+
'@type' => 'SearchAction',
|
227 |
+
'target' => get_bloginfo('url') . '?s={search_string}',
|
228 |
+
'query-input' => 'required name=search_string',
|
229 |
+
);
|
230 |
+
|
231 |
+
if (!empty($jsonld_socials)) {
|
232 |
+
$markup['sameAs'] = $jsonld_socials;
|
233 |
+
}
|
234 |
+
}
|
235 |
+
//add current markup
|
236 |
+
$this->set_data($markup);
|
237 |
+
} elseif ($this->_post->post_type == 'post' || $this->_post->sq->og_type == 'article') {
|
238 |
+
|
239 |
+
$markup['@type'] = 'Article';
|
240 |
+
$markup['@id'] = $this->_post->url;
|
241 |
+
$markup['url'] = $this->_post->url;
|
242 |
+
|
243 |
+
if (isset($this->_post->sq->title)) {
|
244 |
+
$markup['name'] = $this->truncate($this->_post->sq->title, 0, $this->_post->sq->jsonld_title_maxlength);
|
245 |
+
}
|
246 |
+
|
247 |
+
if (isset($this->_post->sq->description)) {
|
248 |
+
$markup['headline'] = $this->truncate($this->_post->sq->description, 0, $this->_post->sq->jsonld_description_maxlength);
|
249 |
+
}
|
250 |
+
$markup['mainEntityOfPage'] = array(
|
251 |
+
'@type' => 'WebPage',
|
252 |
+
'url' => $this->_post->url
|
253 |
+
);
|
254 |
+
|
255 |
+
if (isset($this->_post->sq->og_media) && $this->_post->sq->og_media <> '') {
|
256 |
+
$markup['thumbnailUrl'] = $this->_post->sq->og_media;
|
257 |
+
}
|
258 |
+
if (isset($this->_post->post_date)) {
|
259 |
+
$markup['datePublished'] = date('c', strtotime($this->_post->post_date));
|
260 |
+
}
|
261 |
+
if (isset($this->_post->post_modified)) {
|
262 |
+
$markup['dateModified'] = date('c', strtotime($this->_post->post_modified));
|
263 |
+
}
|
264 |
+
|
265 |
+
if (isset($this->_post->sq->og_media) && $this->_post->sq->og_media <> '') {
|
266 |
+
$markup['image'] = array(
|
267 |
+
"@type" => "ImageObject",
|
268 |
+
"url" => $this->_post->sq->og_media,
|
269 |
+
"height" => 500,
|
270 |
+
"width" => 700,
|
271 |
+
);
|
272 |
+
}
|
273 |
+
|
274 |
+
$markup['author'] = array(
|
275 |
+
"@type" => "Person",
|
276 |
+
"url" => $this->getAuthor('user_url'),
|
277 |
+
"name" => $this->getAuthor('display_name'),
|
278 |
+
);
|
279 |
+
|
280 |
+
|
281 |
+
|
282 |
+
if ($jsonld_type == 'Organization' && isset($jsonld[$jsonld_type])) {
|
283 |
+
$markup['publisher'] = array(
|
284 |
+
"@type" => $jsonld_type,
|
285 |
+
"url" => $this->_post->url,
|
286 |
+
"name" => $this->getAuthor('display_name'),
|
287 |
+
);
|
288 |
+
|
289 |
+
foreach ($jsonld[$jsonld_type] as $key => $value) {
|
290 |
+
if ($value <> '') {
|
291 |
+
if ($key == 'contactType' || $key == 'telephone' || $key == 'jobTitle') {
|
292 |
+
continue;
|
293 |
+
}
|
294 |
+
|
295 |
+
if ($key == 'logo') {
|
296 |
+
$markup['publisher']['logo'] = array(
|
297 |
+
"@type" => "ImageObject",
|
298 |
+
"url" => $value
|
299 |
+
);
|
300 |
+
|
301 |
+
} else {
|
302 |
+
$markup['publisher'][$key] = $value;
|
303 |
+
}
|
304 |
+
}
|
305 |
+
}
|
306 |
+
}
|
307 |
+
|
308 |
+
if ($this->_post->sq->keywords <> '') {
|
309 |
+
$markup['keywords'] = $this->_post->sq->keywords;
|
310 |
+
}
|
311 |
+
//add current markup
|
312 |
+
$this->set_data($markup);
|
313 |
+
} elseif (is_author()) {
|
314 |
+
$markup['@type'] = 'Person';
|
315 |
+
$markup['@id'] = $this->getAuthor('user_url');
|
316 |
+
$markup['url'] = $this->getAuthor('user_url');
|
317 |
+
$markup['name'] = $this->getAuthor('display_name');
|
318 |
+
|
319 |
+
//add current markup
|
320 |
+
$this->set_data($markup);
|
321 |
+
}
|
322 |
+
}
|
323 |
+
|
324 |
+
/**
|
325 |
+
* Get the author
|
326 |
+
* @param string $what
|
327 |
+
* @return bool|mixed|string
|
328 |
+
*/
|
329 |
+
protected function getAuthor($what = 'user_nicename') {
|
330 |
+
if (!isset($this->author)) {
|
331 |
+
if (is_author()) {
|
332 |
+
$this->author = get_userdata(get_query_var('author'));
|
333 |
+
} elseif (is_single() && isset($this->_post->post_author)) {
|
334 |
+
$this->author = get_userdata((int)$this->_post->post_author)->data;
|
335 |
+
}
|
336 |
}
|
337 |
+
|
338 |
+
if (isset($this->author)) {
|
339 |
+
|
340 |
+
if ($what == 'user_url' && $this->author->$what == '') {
|
341 |
+
return get_author_posts_url($this->author->ID, $this->author->user_nicename);
|
342 |
+
}
|
343 |
+
if (isset($this->author->$what)) {
|
344 |
+
return $this->author->$what;
|
345 |
+
}
|
346 |
+
}
|
347 |
+
|
348 |
+
return false;
|
349 |
}
|
350 |
|
351 |
|
389 |
}
|
390 |
}
|
391 |
|
392 |
+
$this->set_data($markup);
|
393 |
}
|
394 |
|
395 |
/**
|
396 |
* Generates Product structured data.
|
397 |
*
|
398 |
+
* Hooked into `woocommerce_single_product_summary` action hook.
|
399 |
+
* Hooked into `woocommerce_shop_loop` action hook.
|
400 |
*
|
401 |
* @param WC_Product $product Product data (default: null).
|
402 |
*/
|
403 |
public function generate_product_data($product = null) {
|
404 |
+
if (!$product instanceof WC_Product) {
|
405 |
global $product;
|
406 |
}
|
407 |
|
420 |
$markup['name'] = $product->get_title();
|
421 |
}
|
422 |
|
423 |
+
if (apply_filters('woocommerce_structured_data_product_limit', is_product_taxonomy() || is_shop())) {
|
424 |
+
$this->set_data(apply_filters('woocommerce_structured_data_product_limited', $markup, $product));
|
425 |
return;
|
426 |
}
|
427 |
|
429 |
'@type' => 'Offer',
|
430 |
'priceCurrency' => $currency,
|
431 |
'availability' => 'http://schema.org/' . $stock = ($product->is_in_stock() ? 'InStock' : 'OutOfStock'),
|
432 |
+
'sku' => (method_exists($product, 'get_sku')) ? $product->get_sku() : '',
|
433 |
+
'image' => (method_exists($product, 'get_image_id')) ? wp_get_attachment_url($product->get_image_id()) : '',
|
434 |
'description' => (method_exists($product, 'get_description') ? $product->get_description() : $product->get_title()),
|
435 |
'seller' => array(
|
436 |
'@type' => 'Organization',
|
440 |
);
|
441 |
|
442 |
if ($product->is_type('variable') && method_exists($product, 'get_variation_prices')) {
|
443 |
+
$prices = $product->get_variation_prices();
|
444 |
|
445 |
$markup_offer['priceSpecification'] = array(
|
446 |
'price' => wc_format_decimal($product->get_price(), wc_get_price_decimals()),
|
452 |
$markup_offer['price'] = wc_format_decimal($product->get_price(), wc_get_price_decimals());
|
453 |
}
|
454 |
|
455 |
+
$markup['offers'] = $markup_offer;
|
456 |
|
457 |
if ($product->get_rating_count()) {
|
458 |
$markup['aggregateRating'] = array(
|
463 |
);
|
464 |
}
|
465 |
|
466 |
+
$this->set_data($markup);
|
467 |
}
|
468 |
|
469 |
/**
|
470 |
* Generates Review structured data.
|
471 |
*
|
472 |
+
* Hooked into `generate_review_data` action hook.
|
473 |
*
|
474 |
* @param WP_Comment $comment Comment data.
|
475 |
*/
|
496 |
'name' => get_comment_author($comment->comment_ID),
|
497 |
);
|
498 |
|
499 |
+
$this->set_data($markup);
|
500 |
}
|
501 |
|
502 |
/**
|
503 |
* Generates BreadcrumbList structured data.
|
504 |
*
|
|
|
505 |
*
|
506 |
* @param WC_Breadcrumb $breadcrumbs Breadcrumb data.
|
507 |
*/
|
526 |
}
|
527 |
}
|
528 |
|
529 |
+
$this->set_data($markup);
|
530 |
}
|
531 |
|
532 |
/**
|
533 |
* Generates WebSite structured data.
|
534 |
*
|
|
|
535 |
*/
|
536 |
public function generate_website_data() {
|
537 |
$markup = array();
|
544 |
'query-input' => 'required name=search_term_string',
|
545 |
);
|
546 |
|
547 |
+
$this->set_data($markup);
|
548 |
}
|
549 |
|
550 |
/**
|
551 |
* Generates Order structured data.
|
552 |
*
|
|
|
553 |
*
|
554 |
* @param WP_Order $order Order data.
|
555 |
* @param bool $sent_to_admin Send to admin (default: false).
|
575 |
|
576 |
$markup_offers = array();
|
577 |
foreach ($order->get_items() as $item) {
|
578 |
+
if (!apply_filters('woocommerce_order_item_visible', true, $item)) {
|
579 |
continue;
|
580 |
}
|
581 |
|
582 |
+
$product = apply_filters('woocommerce_order_item_product', $order->get_product_from_item($item), $item);
|
583 |
$product_exists = is_object($product);
|
584 |
$is_visible = $product_exists && $product->is_visible();
|
585 |
|
592 |
'priceCurrency' => $order->get_currency(),
|
593 |
'eligibleQuantity' => array(
|
594 |
'@type' => 'QuantitativeValue',
|
595 |
+
'value' => apply_filters('woocommerce_email_order_item_quantity', $item['qty'], $item),
|
596 |
),
|
597 |
),
|
598 |
'itemOffered' => array(
|
599 |
'@type' => 'Product',
|
600 |
+
'name' => apply_filters('woocommerce_order_item_name', $item['name'], $item, $is_visible),
|
601 |
'sku' => $product_exists ? $product->get_sku() : '',
|
602 |
'image' => $product_exists ? wp_get_attachment_image_url($product->get_image_id()) : '',
|
603 |
'url' => $is_visible ? get_permalink($product->get_id()) : get_home_url(),
|
653 |
'target' => $order_url,
|
654 |
);
|
655 |
|
656 |
+
$this->set_data(apply_filters('woocommerce_structured_data_order', $markup, $sent_to_admin, $order), true);
|
657 |
}
|
658 |
}
|
models/services/Keywords.php
ADDED
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SQ_Models_Services_Keywords extends SQ_Models_Abstract_Seo {
|
4 |
+
|
5 |
+
|
6 |
+
public function __construct() {
|
7 |
+
parent::__construct();
|
8 |
+
if ($this->_post->sq->doseo) {
|
9 |
+
add_filter('sq_keywords', array($this, 'generateKeywords'));
|
10 |
+
add_filter('sq_keywords', array($this, 'clearKeywords'), 98);
|
11 |
+
add_filter('sq_keywords', array($this, 'packKeywords'), 99);
|
12 |
+
} else {
|
13 |
+
add_filter('sq_keywords', array($this, 'returnFalse'));
|
14 |
+
}
|
15 |
+
}
|
16 |
+
|
17 |
+
public function generateKeywords($keywords = '') {
|
18 |
+
|
19 |
+
if (($this->_post->sq->keywords <> -1) && $this->_post->sq->keywords <> '') {
|
20 |
+
$keywords = $this->_post->sq->keywords;
|
21 |
+
}
|
22 |
+
|
23 |
+
if ($keywords == '' && SQ_Classes_Tools::getOption('sq_keywordtag')) {
|
24 |
+
$posttags = get_the_tags($this->_post->post_id);
|
25 |
+
if (!empty($posttags)) {
|
26 |
+
foreach($posttags as $tag) {
|
27 |
+
$tags[] = $tag->name;
|
28 |
+
}
|
29 |
+
$keywords = join(',', $tags);
|
30 |
+
}
|
31 |
+
}
|
32 |
+
|
33 |
+
return $keywords;
|
34 |
+
}
|
35 |
+
|
36 |
+
public function packKeywords($keywords = '') {
|
37 |
+
if ($keywords <> '') {
|
38 |
+
return sprintf("<meta name=\"keywords\" content=\"%s\" />", $keywords);
|
39 |
+
}
|
40 |
+
return '';
|
41 |
+
}
|
42 |
+
}
|
models/services/Noindex.php
ADDED
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SQ_Models_Services_Noindex extends SQ_Models_Abstract_Seo {
|
4 |
+
|
5 |
+
public function __construct() {
|
6 |
+
parent::__construct();
|
7 |
+
if ($this->_post->sq->doseo) {
|
8 |
+
add_filter('sq_noindex', array($this, 'generateNoindex'));
|
9 |
+
add_filter('sq_noindex', array($this, 'packNoindex'), 99);
|
10 |
+
} else {
|
11 |
+
add_filter('sq_noindex', array($this, 'returnFalse'));
|
12 |
+
}
|
13 |
+
}
|
14 |
+
|
15 |
+
public function generateNoindex($robots = array()) {
|
16 |
+
if ((int)$this->_post->sq->noindex == 1) {
|
17 |
+
$robots[] = 'noindex';
|
18 |
+
}
|
19 |
+
if ((int)$this->_post->sq->nofollow == 1) {
|
20 |
+
$robots[] = 'nofollow';
|
21 |
+
} elseif (!empty($robots)) {
|
22 |
+
$robots[] = 'follow';
|
23 |
+
}
|
24 |
+
|
25 |
+
return $robots;
|
26 |
+
}
|
27 |
+
|
28 |
+
public function packNoindex($robots = array()) {
|
29 |
+
if (!empty($robots)) {
|
30 |
+
return sprintf("<meta name=\"robots\" content=\"%s\">", join(',', $robots));
|
31 |
+
}
|
32 |
+
|
33 |
+
return false;
|
34 |
+
}
|
35 |
+
|
36 |
+
}
|
models/services/OpenGraph.php
ADDED
@@ -0,0 +1,232 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SQ_Models_Services_OpenGraph extends SQ_Models_Abstract_Seo {
|
4 |
+
|
5 |
+
public function __construct() {
|
6 |
+
parent::__construct();
|
7 |
+
|
8 |
+
if ($this->_post->sq->doseo) {
|
9 |
+
add_filter('locale', array($this, 'setLocale'));
|
10 |
+
add_filter('sq_html_prefix', array($this, 'addOGPrefix'));
|
11 |
+
|
12 |
+
add_filter('sq_open_graph', array($this, 'generateOpenGraph'));
|
13 |
+
add_filter('sq_open_graph', array($this, 'packOpenGraph'), 99);
|
14 |
+
} else {
|
15 |
+
add_filter('sq_open_graph', array($this, 'returnFalse'));
|
16 |
+
}
|
17 |
+
|
18 |
+
}
|
19 |
+
|
20 |
+
public function addOGPrefix($prefix = '') {
|
21 |
+
$prefix .= 'og: http://ogp.me/ns#';
|
22 |
+
if (!empty($this->_post->socials->fb_admins) || $this->_post->socials->fbadminapp <> '') {
|
23 |
+
$prefix .= ' fb: http://ogp.me/ns/fb#';
|
24 |
+
}
|
25 |
+
|
26 |
+
return $prefix;
|
27 |
+
}
|
28 |
+
|
29 |
+
public function generateOpenGraph($og = array()) {
|
30 |
+
if (SQ_Classes_Tools::getOption('sq_auto_facebook')) {
|
31 |
+
if ($this->_post->url <> '') {
|
32 |
+
$og['og:url'] = urldecode(esc_url($this->_post->url));
|
33 |
+
}
|
34 |
+
|
35 |
+
if ($this->_post->sq->og_title <> '') {
|
36 |
+
$og['og:title'] = $this->clearTitle($this->_post->sq->og_title);
|
37 |
+
} else {
|
38 |
+
$og['og:title'] = $this->clearTitle($this->_post->sq->title);
|
39 |
+
}
|
40 |
+
|
41 |
+
if ($this->_post->sq->og_description <> '') {
|
42 |
+
$og['og:description'] = $this->clearDescription($this->_post->sq->og_description);
|
43 |
+
} else {
|
44 |
+
$og['og:description'] = $this->clearDescription($this->_post->sq->description);
|
45 |
+
}
|
46 |
+
|
47 |
+
|
48 |
+
if ($this->_post->sq->og_type <> '') {
|
49 |
+
$og['og:type'] = $this->_post->sq->og_type;
|
50 |
+
} else {
|
51 |
+
$og['og:type'] = 'website';
|
52 |
+
}
|
53 |
+
|
54 |
+
if (!isset($og['og:image'])) {
|
55 |
+
if ($this->_post->sq->og_media <> '') {
|
56 |
+
$og['og:image'] = $this->_post->sq->og_media;
|
57 |
+
$og['og:image:width'] = '500';
|
58 |
+
if ($og['og:type'] == 'video') {
|
59 |
+
$this->_setMedia($og);
|
60 |
+
}
|
61 |
+
} else {
|
62 |
+
$this->_setMedia($og);
|
63 |
+
}
|
64 |
+
}
|
65 |
+
|
66 |
+
$og['og:site_name'] = get_bloginfo('title');
|
67 |
+
$og['og:locale'] = get_locale();
|
68 |
+
|
69 |
+
if ($this->_post->socials->fbadminapp <> '') {
|
70 |
+
$og['fb:app_id'] = $this->_post->socials->fbadminapp;
|
71 |
+
}
|
72 |
+
|
73 |
+
if (!empty($this->_post->socials->fb_admins)){
|
74 |
+
foreach ($this->_post->socials->fb_admins as $admin){
|
75 |
+
if (isset($admin->id)) {
|
76 |
+
$og['fb:admins'][] = $admin->id;
|
77 |
+
}
|
78 |
+
}
|
79 |
+
}
|
80 |
+
if ($this->_post->post_type == 'post') {
|
81 |
+
if (isset($this->_post->post_date) && $this->_post->post_date <> '') {
|
82 |
+
$og['article:published_time'] = $this->_post->post_date;
|
83 |
+
}
|
84 |
+
if (isset($this->_post->post_modified) && $this->_post->post_modified <> '') {
|
85 |
+
$og['article:modified_time'] = $this->_post->post_modified;
|
86 |
+
}
|
87 |
+
if (isset($this->_post->category) && $this->_post->category <> '') {
|
88 |
+
$og['article:section'] = $this->_post->category;
|
89 |
+
}else{
|
90 |
+
$category = get_the_category($this->_post->ID);
|
91 |
+
if (!empty($category) && $category[0]->cat_name <> 'Uncategorized') {
|
92 |
+
$og['article:section'] = $category[0]->cat_name;
|
93 |
+
}
|
94 |
+
}
|
95 |
+
|
96 |
+
if ($this->_post->sq->keywords <> ''){
|
97 |
+
$keywords = explode(',',$this->_post->sq->keywords);
|
98 |
+
}
|
99 |
+
if (!empty($keywords)) {
|
100 |
+
foreach ($keywords as $keyword) {
|
101 |
+
$og['article:tags'][] = $keyword;
|
102 |
+
}
|
103 |
+
}
|
104 |
+
}elseif ($this->_post->post_type == 'profile' && $this->_post->post_author <> '') {
|
105 |
+
if (strpos($this->_post->post_author, " ") !== false) {
|
106 |
+
$author = explode(" ", $this->_post->post_author);
|
107 |
+
} else {
|
108 |
+
$author = array($this->_post->post_author);
|
109 |
+
}
|
110 |
+
$og['profile:first_name'] = $author[0];
|
111 |
+
if (isset($author[1])) $og['profile:last_name'] = $author[1];
|
112 |
+
}elseif ($this->_post->post_type === 'product') {
|
113 |
+
if ($this->_post->category <> '') {
|
114 |
+
$og['product:category'] = $this->_post->category;
|
115 |
+
}
|
116 |
+
|
117 |
+
global $product;
|
118 |
+
if ($product instanceof WC_Product) {
|
119 |
+
$currency = 'USD';
|
120 |
+
$regular_price = $sale_price = $price = $sales_price_from = $sales_price_to = 0;
|
121 |
+
|
122 |
+
if (method_exists($product, 'get_regular_price')) {
|
123 |
+
$regular_price = $product->get_regular_price();
|
124 |
+
}
|
125 |
+
if (method_exists($product, 'get_sale_price')) {
|
126 |
+
$sale_price = $product->get_sale_price();
|
127 |
+
if ($sale_price > 0 && method_exists($product, 'get_date_on_sale_from')) {
|
128 |
+
$sales_price_from = $product->get_date_on_sale_from();
|
129 |
+
$sale_price = $product->get_date_on_sale_from();
|
130 |
+
}
|
131 |
+
}
|
132 |
+
if (method_exists($product, 'get_price')) {
|
133 |
+
$price = $product->get_price();
|
134 |
+
}
|
135 |
+
|
136 |
+
if (function_exists('get_woocommerce_currency')) {
|
137 |
+
$currency = get_woocommerce_currency();
|
138 |
+
}
|
139 |
+
|
140 |
+
if ($regular_price > 0 && $regular_price <> $price) {
|
141 |
+
$og['product:original_price:amount'] = wc_format_decimal($regular_price, wc_get_price_decimals());
|
142 |
+
$og['product:original_price:currency'] = $currency;
|
143 |
+
}
|
144 |
+
|
145 |
+
if ($price > 0) {
|
146 |
+
$og['product:price:amount'] = wc_format_decimal($price, wc_get_price_decimals());
|
147 |
+
$og['product:price:currency'] = $currency;
|
148 |
+
}
|
149 |
+
|
150 |
+
if ($sale_price > 0) {
|
151 |
+
$og['product:sale_price:amount'] = wc_format_decimal($sale_price, wc_get_price_decimals());
|
152 |
+
$og['product:sale_price:currency'] = $currency;
|
153 |
+
|
154 |
+
if ($sales_price_from > 0) {
|
155 |
+
$og['product:sale_price:start'] = date("Y-m-d H:i:s", $sales_price_from);
|
156 |
+
}
|
157 |
+
if ($sales_price_to) {
|
158 |
+
$og['product:sale_price:end'] = date("Y-m-d H:i:s", $sales_price_to);
|
159 |
+
}
|
160 |
+
|
161 |
+
}
|
162 |
+
|
163 |
+
|
164 |
+
}
|
165 |
+
}
|
166 |
+
|
167 |
+
}
|
168 |
+
return $og;
|
169 |
+
}
|
170 |
+
|
171 |
+
protected function _setMedia(&$og) {
|
172 |
+
if ($og['og:type'] == 'video') {
|
173 |
+
$videos = $this->getPostVideos();
|
174 |
+
if (!empty($videos)) {
|
175 |
+
$video = current($videos);
|
176 |
+
if ($video <> '') {
|
177 |
+
$video = preg_replace('/(?:http(?:s)?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user)\/))([^\?&\"\'>\s]+)/si', "https://www.youtube.com/v/$1", $video);
|
178 |
+
|
179 |
+
$og['og:video'] = $video;
|
180 |
+
$og['og:video:width'] = '500';
|
181 |
+
$og['og:video:height'] = '280';
|
182 |
+
}
|
183 |
+
}
|
184 |
+
} else {
|
185 |
+
$images = $this->getPostImages();
|
186 |
+
if (!empty($images)) {
|
187 |
+
$image = current($images);
|
188 |
+
if (isset($image['src'])) {
|
189 |
+
$og['og:image'] = $image['src'];
|
190 |
+
if (isset($image['width'])) {
|
191 |
+
$og['og:image:width'] = $image['width'];
|
192 |
+
}
|
193 |
+
if (isset($image['height'])) {
|
194 |
+
$og['og:image:height'] = $image['height'];
|
195 |
+
}
|
196 |
+
}
|
197 |
+
}
|
198 |
+
}
|
199 |
+
}
|
200 |
+
|
201 |
+
public function setLocale($locale) {
|
202 |
+
if (function_exists('wpml_get_language_information') && (int)$this->_post->ID > 0) {
|
203 |
+
if ($language = wpml_get_language_information((int)$this->_post->ID)) {
|
204 |
+
if (isset($language['locale'])) {
|
205 |
+
$locale = $language['locale'];
|
206 |
+
}
|
207 |
+
}
|
208 |
+
}
|
209 |
+
|
210 |
+
return $locale;
|
211 |
+
}
|
212 |
+
|
213 |
+
public function packOpenGraph($og = array()) {
|
214 |
+
if (!empty($og)) {
|
215 |
+
foreach ($og as $key => &$value) {
|
216 |
+
if (is_array($value)){
|
217 |
+
$str = '';
|
218 |
+
foreach ($value as $subvalue){
|
219 |
+
$str .= '<meta property="' . $key . '" content="' . $subvalue . '" />' . ((count($value) > 1) ? "\n" : '');
|
220 |
+
}
|
221 |
+
$value = $str;
|
222 |
+
}else {
|
223 |
+
$value = '<meta property="' . $key . '" content="' . $value . '" />';
|
224 |
+
}
|
225 |
+
}
|
226 |
+
return "\n" . join("\n", array_values($og));
|
227 |
+
}
|
228 |
+
|
229 |
+
return false;
|
230 |
+
}
|
231 |
+
|
232 |
+
}
|
models/services/Pixel.php
ADDED
@@ -0,0 +1,210 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SQ_Models_Services_Pixel extends SQ_Models_Abstract_Seo {
|
4 |
+
|
5 |
+
|
6 |
+
public function __construct() {
|
7 |
+
parent::__construct();
|
8 |
+
if ($this->_post->sq->doseo) {
|
9 |
+
if (!SQ_Classes_Tools::getOption('sq_auto_amp')) {
|
10 |
+
add_filter('sq_facebook_pixel', array($this, 'generatePixel'));
|
11 |
+
add_filter('sq_facebook_pixel', array($this, 'packPixel'), 99);
|
12 |
+
} else {
|
13 |
+
add_filter('sq_facebook_pixel', array($this, 'returnFalse'));
|
14 |
+
add_filter('sq_facebook_pixel_amp', array($this, 'packPixelAMP'), 99);
|
15 |
+
}
|
16 |
+
} else {
|
17 |
+
add_filter('sq_facebook_pixel', array($this, 'returnFalse'));
|
18 |
+
}
|
19 |
+
}
|
20 |
+
|
21 |
+
public function addOGPrefix($prefix = '') {
|
22 |
+
$prefix .= 'og: http://ogp.me/ns#';
|
23 |
+
|
24 |
+
return $prefix;
|
25 |
+
}
|
26 |
+
|
27 |
+
public function generatePixel($events = array()) {
|
28 |
+
$codes = json_decode(json_encode(SQ_Classes_Tools::getOption('codes')));
|
29 |
+
|
30 |
+
if (isset($codes->facebook_pixel) && $codes->facebook_pixel <> '') {
|
31 |
+
$domain = str_replace(array('http://', 'http://', 'www.'), '', get_bloginfo('url'));
|
32 |
+
|
33 |
+
if ($this->isHomePage()) {
|
34 |
+
$events[] = array(
|
35 |
+
'type' => 'track',
|
36 |
+
'name' => 'PageView',
|
37 |
+
'params' => array('page' => get_bloginfo('url'), 'domain' => $domain)
|
38 |
+
);
|
39 |
+
} else {
|
40 |
+
if (isset($this->_post->ID)) {
|
41 |
+
$params['content_ids'] = array((string)$this->_post->ID);
|
42 |
+
}
|
43 |
+
|
44 |
+
$params['content_type'] = $this->_post->post_type;
|
45 |
+
|
46 |
+
if ($this->_post->post_type == 'category') {
|
47 |
+
$category = get_category(get_query_var('cat'), false);
|
48 |
+
if (isset($category->name)) {
|
49 |
+
$params['content_category'] = $category->name;
|
50 |
+
}
|
51 |
+
} elseif ($this->_post->post_type == 'product') {
|
52 |
+
$params['content_name'] = $this->_post->post_title;
|
53 |
+
$cat = get_the_terms($this->_post->ID, 'product_cat');
|
54 |
+
if (!empty($cat)) {
|
55 |
+
$params['content_category'] = $cat[0]->name;
|
56 |
+
}
|
57 |
+
|
58 |
+
if (isset($_POST['product_id']) && isset($params['content_ids']) && isset($params['content_type'])) {
|
59 |
+
if (function_exists('wc_get_product') && function_exists('get_woocommerce_currency')) {
|
60 |
+
if ($product = wc_get_product((int)$_POST['product_id'])) {
|
61 |
+
$params['value'] = $product->get_price();
|
62 |
+
$params['currency'] = get_woocommerce_currency();
|
63 |
+
}
|
64 |
+
}
|
65 |
+
|
66 |
+
$events[] = array(
|
67 |
+
'type' => 'track',
|
68 |
+
'name' => 'AddToCart',
|
69 |
+
'params' => $params
|
70 |
+
);
|
71 |
+
}
|
72 |
+
} elseif ($this->_post->post_type == 'search') {
|
73 |
+
$search = get_search_query(true);
|
74 |
+
if ($search <> '') {
|
75 |
+
$params['search_string'] = $search;
|
76 |
+
$events[] = array(
|
77 |
+
'type' => 'track',
|
78 |
+
'name' => 'Search',
|
79 |
+
'params' => $params
|
80 |
+
);
|
81 |
+
}
|
82 |
+
} elseif ($this->_post->post_type == 'checkout' && isset($this->_post->ID)) {
|
83 |
+
global $woocommerce;
|
84 |
+
if (isset($woocommerce->cart->total) && $woocommerce->cart->total > 0) {
|
85 |
+
$params['value'] = $woocommerce->cart->total;
|
86 |
+
|
87 |
+
if (isset($woocommerce->cart->cart_contents) && !empty($woocommerce->cart->cart_contents)) {
|
88 |
+
$quantity = 0;
|
89 |
+
foreach ($woocommerce->cart->cart_contents as $product) {
|
90 |
+
$quantity += $product['quantity'];
|
91 |
+
}
|
92 |
+
if ($quantity > 0) {
|
93 |
+
$params['num_items'] = $quantity;
|
94 |
+
}
|
95 |
+
}
|
96 |
+
$events[] = array(
|
97 |
+
'type' => 'track',
|
98 |
+
'name' => 'InitiateCheckout',
|
99 |
+
'params' => $params
|
100 |
+
);
|
101 |
+
} elseif (SQ_Classes_Tools::getIsset('key')) {
|
102 |
+
$params['content_type'] = 'purchase';
|
103 |
+
global $wpdb;
|
104 |
+
$sql = "SELECT `post_id`
|
105 |
+
FROM `" . $wpdb->postmeta . "`
|
106 |
+
WHERE `meta_key` = '_order_key' AND `meta_value`='" . SQ_Classes_Tools::getValue('key') . "'";
|
107 |
+
|
108 |
+
if ($post = $wpdb->get_row($sql)) {
|
109 |
+
if ($order = wc_get_order($post->post_id)) {
|
110 |
+
$params['content_type'] = "checkout";
|
111 |
+
$params['value'] = $order->get_total();
|
112 |
+
$params['currency'] = $order->get_order_currency();
|
113 |
+
|
114 |
+
$events[] = array(
|
115 |
+
'type' => 'track',
|
116 |
+
'name' => 'Purchase',
|
117 |
+
'params' => $params
|
118 |
+
);
|
119 |
+
}
|
120 |
+
}
|
121 |
+
}
|
122 |
+
|
123 |
+
|
124 |
+
} else {
|
125 |
+
$cat = get_the_terms($this->_post->ID, 'category');
|
126 |
+
if (!empty($cat)) {
|
127 |
+
$params['content_category'] = $cat[0]->name;
|
128 |
+
}
|
129 |
+
}
|
130 |
+
|
131 |
+
$params['page'] = $this->_post->url;
|
132 |
+
$params['domain'] = $domain;
|
133 |
+
|
134 |
+
if (isset($params['content_ids']) && isset($params['content_type'])) {
|
135 |
+
$events[] = array(
|
136 |
+
'type' => 'track',
|
137 |
+
'name' => 'ViewContent',
|
138 |
+
'params' => $params
|
139 |
+
);
|
140 |
+
} else {
|
141 |
+
$events[] = array(
|
142 |
+
'type' => 'trackCustom',
|
143 |
+
'name' => 'GeneralEvent',
|
144 |
+
'params' => $params
|
145 |
+
);
|
146 |
+
}
|
147 |
+
|
148 |
+
$events[] = array(
|
149 |
+
'type' => 'track',
|
150 |
+
'name' => 'PageView',
|
151 |
+
'params' => array('page' => $params['page'], 'domain' => $params['domain'])
|
152 |
+
);
|
153 |
+
}
|
154 |
+
}
|
155 |
+
|
156 |
+
return $this->clean($events);
|
157 |
+
}
|
158 |
+
|
159 |
+
public function clean($var) {
|
160 |
+
if (is_array($var)) {
|
161 |
+
return array_map(array($this, 'clean'), $var);
|
162 |
+
} else {
|
163 |
+
return is_string($var) ? ((strpos($var,'://') !== false) ? esc_url($var) : sanitize_text_field($var)) : $var;
|
164 |
+
}
|
165 |
+
}
|
166 |
+
|
167 |
+
public function packPixel($events = '') {
|
168 |
+
if (!empty($events)) {
|
169 |
+
$codes = json_decode(json_encode(SQ_Classes_Tools::getOption('codes')));
|
170 |
+
|
171 |
+
$track = '';
|
172 |
+
foreach ($events as $event) {
|
173 |
+
$track .= "fbq('" . $event['type'] . "', '" . $event['name'] . "', '" . json_encode($event['params']) . "');";
|
174 |
+
}
|
175 |
+
|
176 |
+
return sprintf("<script>!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,document,'script','https://connect.facebook.net/en_US/fbevents.js');fbq('init', '%s');%s</script><noscript><img height='1' width='1' style='display:none'src='https://www.facebook.com/tr?id=%s&ev=PageView&noscript=1'/></noscript>" . "\n", $codes->facebook_pixel, $track, $codes->facebook_pixel);
|
177 |
+
}
|
178 |
+
|
179 |
+
return false;
|
180 |
+
}
|
181 |
+
|
182 |
+
|
183 |
+
public function packPixelAMP() {
|
184 |
+
$codes = json_decode(json_encode(SQ_Classes_Tools::getOption('codes')));
|
185 |
+
|
186 |
+
if (isset($codes->facebook_pixel) && $codes->facebook_pixel <> '') {
|
187 |
+
$events = $this->generatePixel();
|
188 |
+
$track = '';
|
189 |
+
|
190 |
+
foreach ($events as $event) {
|
191 |
+
if (isset($event['params'])) {
|
192 |
+
$cd = '';
|
193 |
+
foreach ($event['params'] as $key => $value) {
|
194 |
+
if (is_array($value) && !empty($value)) {
|
195 |
+
$cd .= sprintf('&cd[%s]=%s', $key, join(',', $value));
|
196 |
+
} else {
|
197 |
+
$cd .= sprintf('&cd[%s]=%s', $key, urlencode($value));
|
198 |
+
}
|
199 |
+
}
|
200 |
+
}
|
201 |
+
$track .= sprintf('<amp-pixel src="https://www.facebook.com/tr?id=%s&ev=%s%s&noscript=1"></amp-pixel>', $codes->facebook_pixel, $event['name'], $cd) . "\n";
|
202 |
+
|
203 |
+
}
|
204 |
+
|
205 |
+
return $track;
|
206 |
+
}
|
207 |
+
|
208 |
+
return false;
|
209 |
+
}
|
210 |
+
}
|
models/services/PrevNext.php
ADDED
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SQ_Models_Services_PrevNext extends SQ_Models_Abstract_Seo {
|
4 |
+
|
5 |
+
public function __construct() {
|
6 |
+
parent::__construct();
|
7 |
+
|
8 |
+
if ($this->_post->sq->doseo) {
|
9 |
+
add_filter('sq_prevnext', array($this, 'generateMeta'));
|
10 |
+
add_filter('sq_prevnext', array($this, 'packMeta'), 99);
|
11 |
+
} else {
|
12 |
+
add_filter('sq_prevnext', array($this, 'returnFalse'));
|
13 |
+
}
|
14 |
+
|
15 |
+
}
|
16 |
+
|
17 |
+
public function generateMeta($meta = "") {
|
18 |
+
global $paged;
|
19 |
+
|
20 |
+
if (!$this->isHomePage()) {
|
21 |
+
if (get_previous_posts_link()) {
|
22 |
+
$meta['prev'] = get_pagenum_link($paged - 1);
|
23 |
+
}
|
24 |
+
if (get_next_posts_link()) {
|
25 |
+
$meta['next'] = get_pagenum_link($paged + 1);
|
26 |
+
}
|
27 |
+
}
|
28 |
+
|
29 |
+
return $meta;
|
30 |
+
}
|
31 |
+
|
32 |
+
public function packMeta($metas = array()) {
|
33 |
+
if (!empty($metas)) {
|
34 |
+
foreach ($metas as $key => &$value) {
|
35 |
+
$value = '<link rel="' . $key . '" href="' . $value . '" />';
|
36 |
+
}
|
37 |
+
return "\n" . join("\n", array_values($metas));
|
38 |
+
}
|
39 |
+
|
40 |
+
return false;
|
41 |
+
}
|
42 |
+
|
43 |
+
}
|
models/services/Publisher.php
ADDED
@@ -0,0 +1,84 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SQ_Models_Services_Publisher extends SQ_Models_Abstract_Seo {
|
4 |
+
|
5 |
+
|
6 |
+
public function __construct() {
|
7 |
+
parent::__construct();
|
8 |
+
if ($this->_post->sq->doseo) {
|
9 |
+
add_filter('sq_publisher', array($this, 'generatePublisher'));
|
10 |
+
add_filter('sq_publisher', array($this, 'packPublisher'), 99);
|
11 |
+
} else {
|
12 |
+
add_filter('sq_publisher', array($this, 'returnFalse'));
|
13 |
+
}
|
14 |
+
}
|
15 |
+
|
16 |
+
public function generatePublisher($publisher = array()) {
|
17 |
+
if ($this->_post->post_type == 'post' || $this->_post->post_type == 'product') {
|
18 |
+
if (SQ_Classes_Tools::getOption('sq_auto_facebook') && isset($this->_post->socials->facebook_site) && $this->_post->socials->facebook_site <> '') {
|
19 |
+
$publisher['article:publisher'] = $this->_post->socials->facebook_site;
|
20 |
+
}
|
21 |
+
if (SQ_Classes_Tools::getOption('sq_auto_facebook') ) {
|
22 |
+
if(isset($this->_post->sq->og_author) && $this->_post->sq->og_author <> '') {
|
23 |
+
$authors = explode(',', $this->_post->sq->og_author);
|
24 |
+
foreach ($authors as $author) {
|
25 |
+
if ($author <> '') {
|
26 |
+
$publisher['article:author'][] = $author;
|
27 |
+
}
|
28 |
+
}
|
29 |
+
}
|
30 |
+
} else {
|
31 |
+
$publisher['article:author'] = $this->getAuthor('display_name');
|
32 |
+
}
|
33 |
+
}
|
34 |
+
|
35 |
+
return $publisher;
|
36 |
+
}
|
37 |
+
|
38 |
+
|
39 |
+
/**
|
40 |
+
* Get the author
|
41 |
+
* @param string $what
|
42 |
+
* @return bool|mixed|string
|
43 |
+
*/
|
44 |
+
protected function getAuthor($what = 'user_nicename') {
|
45 |
+
if (!isset($this->author)) {
|
46 |
+
if (is_author()) {
|
47 |
+
$this->author = get_userdata(get_query_var('author'));
|
48 |
+
} elseif (is_single() && isset($this->_post->post_author)) {
|
49 |
+
$this->author = get_userdata((int)$this->_post->post_author)->data;
|
50 |
+
}
|
51 |
+
}
|
52 |
+
|
53 |
+
if (isset($this->author)) {
|
54 |
+
|
55 |
+
if ($what == 'user_url' && $this->author->$what == '') {
|
56 |
+
return get_author_posts_url($this->author->ID, $this->author->user_nicename);
|
57 |
+
}
|
58 |
+
if (isset($this->author->$what)) {
|
59 |
+
return $this->author->$what;
|
60 |
+
}
|
61 |
+
}
|
62 |
+
|
63 |
+
return false;
|
64 |
+
}
|
65 |
+
|
66 |
+
public function packPublisher($publisher = array()) {
|
67 |
+
if (!empty($publisher)) {
|
68 |
+
foreach ($publisher as $key => &$value) {
|
69 |
+
if (is_array($value)) {
|
70 |
+
$str = '';
|
71 |
+
foreach ($value as $subvalue) {
|
72 |
+
$str .= '<meta property="' . $key . '" content="' . $subvalue . '" />' . ((count($value) > 1) ? "\n" : '');
|
73 |
+
}
|
74 |
+
$value = $str;
|
75 |
+
} else {
|
76 |
+
$value = '<meta property="' . $key . '" content="' . $value . '" />';
|
77 |
+
}
|
78 |
+
}
|
79 |
+
return "\n" . join("\n", array_values($publisher));
|
80 |
+
}
|
81 |
+
|
82 |
+
return false;
|
83 |
+
}
|
84 |
+
}
|
models/services/Robots.php
ADDED
@@ -0,0 +1,54 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SQ_Models_Services_Robots extends SQ_Models_Abstract_Seo {
|
4 |
+
|
5 |
+
|
6 |
+
public function __construct() {
|
7 |
+
parent::__construct();
|
8 |
+
add_filter('sq_robots', array($this, 'generateRobots'));
|
9 |
+
add_filter('sq_robots', array($this, 'showRobots'), 11);
|
10 |
+
}
|
11 |
+
|
12 |
+
public function generateRobots($robots = '') {
|
13 |
+
$robots .= "\n# " . __('Squirrly SEO Robots', _SQ_PLUGIN_NAME_);
|
14 |
+
|
15 |
+
if (get_option('blog_public') != 1) {
|
16 |
+
$robots .= "\n# " . __('Your blog is not public. Please see Site Visibility on Settings > Reading.', _SQ_PLUGIN_NAME_);
|
17 |
+
} else {
|
18 |
+
$sq_sitemap = SQ_Classes_Tools::getOption('sq_sitemap');
|
19 |
+
if (SQ_Classes_Tools::getOption('sq_auto_sitemap') == 1) {
|
20 |
+
foreach ((array)$sq_sitemap as $name => $sitemap) {
|
21 |
+
if ($name == 'sitemap-product' && !SQ_Classes_ObjController::getClass('SQ_Models_BlockSettingsSeo')->isEcommerce()) {
|
22 |
+
continue;
|
23 |
+
}
|
24 |
+
if ($sitemap[1] == 1 || $sitemap[1] == 2) {
|
25 |
+
$robots .= "\nSitemap: " . trailingslashit(get_bloginfo('url')) . $sitemap[0];
|
26 |
+
}
|
27 |
+
}
|
28 |
+
}
|
29 |
+
|
30 |
+
if (empty($sq_sitemap)) {
|
31 |
+
$robots .= "\n# " . __('No Squirrly SEO Robots found.', _SQ_PLUGIN_NAME_);
|
32 |
+
}
|
33 |
+
}
|
34 |
+
$robots .= "\n\n";
|
35 |
+
|
36 |
+
$robots_permission = SQ_Classes_Tools::getOption('sq_robots_permission');
|
37 |
+
if (!empty($robots_permission)) {
|
38 |
+
foreach ((array)$robots_permission as $robot_txt)
|
39 |
+
$robots .= $robot_txt . "\n";
|
40 |
+
}
|
41 |
+
$robots .= "\n\n";
|
42 |
+
|
43 |
+
return apply_filters('sq_custom_robots', $robots);
|
44 |
+
}
|
45 |
+
|
46 |
+
public function showRobots($robots = '') {
|
47 |
+
/** display robots.txt */
|
48 |
+
header('Status: 200 OK', true, 200);
|
49 |
+
header('Content-type: text/plain; charset=' . get_bloginfo('charset'));
|
50 |
+
|
51 |
+
echo $robots;
|
52 |
+
exit();
|
53 |
+
}
|
54 |
+
}
|
models/services/Sitemap.php
ADDED
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SQ_Models_Services_Sitemap extends SQ_Models_Abstract_Seo {
|
4 |
+
|
5 |
+
public function __construct() {
|
6 |
+
parent::__construct();
|
7 |
+
|
8 |
+
if ($this->_post->sq->doseo) {
|
9 |
+
add_filter('sq_sitemap', array($this, 'generateMeta'));
|
10 |
+
add_filter('sq_sitemap', array($this, 'packMeta'), 99);
|
11 |
+
} else {
|
12 |
+
add_filter('sq_sitemap', array($this, 'returnFalse'));
|
13 |
+
}
|
14 |
+
|
15 |
+
}
|
16 |
+
|
17 |
+
public function generateMeta() {
|
18 |
+
return $this->_getSitemapURL();
|
19 |
+
}
|
20 |
+
|
21 |
+
/**
|
22 |
+
* Get the url for each sitemap
|
23 |
+
* @param string $sitemap
|
24 |
+
* @return string
|
25 |
+
*/
|
26 |
+
protected function _getSitemapURL($sitemap = 'sitemap') {
|
27 |
+
if (class_exists('SQ_Classes_Tools')) {
|
28 |
+
return SQ_Classes_ObjController::getClass('SQ_Controllers_Sitemaps')->getXmlUrl($sitemap);
|
29 |
+
}
|
30 |
+
return false;
|
31 |
+
}
|
32 |
+
|
33 |
+
public function packMeta($meta = '') {
|
34 |
+
if ($meta <> '') {
|
35 |
+
return '<link rel="alternate" type="application/rss+xml" href="' . $meta . '" />';
|
36 |
+
}
|
37 |
+
|
38 |
+
}
|
39 |
+
|
40 |
+
}
|
models/services/Title.php
ADDED
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SQ_Models_Services_Title extends SQ_Models_Abstract_Seo {
|
4 |
+
|
5 |
+
|
6 |
+
public function __construct() {
|
7 |
+
parent::__construct();
|
8 |
+
|
9 |
+
if ($this->_post->sq->doseo) {
|
10 |
+
add_filter('sq_title', array($this, 'generateTitle'));
|
11 |
+
add_filter('sq_title', array($this, 'clearTitle'), 98);
|
12 |
+
add_filter('sq_title', array($this, 'packTitle'), 99);
|
13 |
+
} else {
|
14 |
+
add_filter('sq_title', array($this, 'returnFalse'));
|
15 |
+
}
|
16 |
+
|
17 |
+
}
|
18 |
+
|
19 |
+
public function generateTitle($title = '') {
|
20 |
+
|
21 |
+
if ( $this->_post->sq->title <> '') {
|
22 |
+
$title = $this->_post->sq->title;
|
23 |
+
} else {
|
24 |
+
$title = $this->_post->post_title = get_the_title();
|
25 |
+
}
|
26 |
+
|
27 |
+
return $title;
|
28 |
+
}
|
29 |
+
|
30 |
+
public function packTitle($title = '') {
|
31 |
+
if ($title <> '') {
|
32 |
+
return sprintf("<title>%s</title>", $title);
|
33 |
+
}
|
34 |
+
|
35 |
+
return false;
|
36 |
+
}
|
37 |
+
|
38 |
+
}
|
models/services/TwitterCard.php
ADDED
@@ -0,0 +1,104 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SQ_Models_Services_TwitterCard extends SQ_Models_Abstract_Seo {
|
4 |
+
|
5 |
+
public function __construct() {
|
6 |
+
parent::__construct();
|
7 |
+
|
8 |
+
if ($this->_post->sq->doseo) {
|
9 |
+
add_filter('sq_twitter_card', array($this, 'generateTwitterCard'), 10);
|
10 |
+
add_filter('sq_twitter_card', array($this, 'packTwitterCard'), 99);
|
11 |
+
} else {
|
12 |
+
add_filter('sq_twitter_card', array($this, 'returnFalse'));
|
13 |
+
}
|
14 |
+
|
15 |
+
}
|
16 |
+
|
17 |
+
public function generateTwitterCard($tw = array()) {
|
18 |
+
|
19 |
+
if (SQ_Classes_Tools::getOption('sq_auto_twitter')) {
|
20 |
+
if ($this->_post->url <> '') {
|
21 |
+
$tw['twitter:url'] = urldecode(esc_url($this->_post->url));
|
22 |
+
}
|
23 |
+
|
24 |
+
if ($this->_post->sq->tw_title <> '') {
|
25 |
+
$tw['twitter:title'] = $this->clearTitle($this->_post->sq->tw_title);
|
26 |
+
} else {
|
27 |
+
$tw['twitter:title'] = $this->clearTitle($this->_post->sq->title);
|
28 |
+
}
|
29 |
+
|
30 |
+
if ($this->_post->sq->tw_description <> '') {
|
31 |
+
$tw['twitter:description'] = $this->clearDescription($this->_post->sq->tw_description);
|
32 |
+
} else {
|
33 |
+
$tw['twitter:description'] = $this->clearDescription($this->_post->sq->description);
|
34 |
+
}
|
35 |
+
|
36 |
+
|
37 |
+
if ($this->_post->sq->tw_media <> '') {
|
38 |
+
$tw['twitter:image'] = $this->_post->sq->tw_media;
|
39 |
+
} else {
|
40 |
+
$this->_setMedia($tw);
|
41 |
+
}
|
42 |
+
|
43 |
+
if($account = $this->_getTwitterAccount()) {
|
44 |
+
$tw['twitter:creator'] = $account;
|
45 |
+
$tw['twitter:site'] = $account;
|
46 |
+
}
|
47 |
+
|
48 |
+
$tw['twitter:domain'] = get_bloginfo('title');
|
49 |
+
$tw['twitter:card'] = $this->_post->socials->twitter_card_type;
|
50 |
+
|
51 |
+
}
|
52 |
+
|
53 |
+
return $tw;
|
54 |
+
}
|
55 |
+
|
56 |
+
protected function _setMedia(&$tw) {
|
57 |
+
$images = $this->getPostImages();
|
58 |
+
if (!empty($images)) {
|
59 |
+
$image = current($images);
|
60 |
+
if (isset($image['src'])) {
|
61 |
+
$tw['twitter:image'] = $image['src'];
|
62 |
+
}
|
63 |
+
}
|
64 |
+
}
|
65 |
+
|
66 |
+
protected function _getTwitterAccount() {
|
67 |
+
$account = SQ_Classes_Tools::getOption('sq_tw_account');
|
68 |
+
if ($account == '') {
|
69 |
+
if (class_exists('SQ_Classes_Tools')) {
|
70 |
+
$account = SQ_Classes_Tools::getOption('sq_twitter_account');
|
71 |
+
}
|
72 |
+
}
|
73 |
+
|
74 |
+
if ($account <> '') {
|
75 |
+
if (strpos($account, 'twitter.com') !== false) {
|
76 |
+
preg_match('/twitter.com\/([@1-9a-z_-]+)/i', $account, $result);
|
77 |
+
if (isset($result[1]) && !empty($result[1])) {
|
78 |
+
return '@' . str_replace('@', '', $result[1]);
|
79 |
+
}
|
80 |
+
} else {
|
81 |
+
preg_match('/([@1-9a-z_-]+)/i', $account, $result);
|
82 |
+
if (isset($result[1]) && !empty($result[1])) {
|
83 |
+
return '@' . str_replace('@', '', $result[1]);
|
84 |
+
}
|
85 |
+
}
|
86 |
+
} else {
|
87 |
+
return '';
|
88 |
+
}
|
89 |
+
return false;
|
90 |
+
}
|
91 |
+
|
92 |
+
|
93 |
+
public function packTwitterCard($tw = array()) {
|
94 |
+
if (!empty($tw)) {
|
95 |
+
foreach ($tw as $key => &$value) {
|
96 |
+
$value = '<meta property="' . $key . '" content="' . $value . '" />';
|
97 |
+
}
|
98 |
+
return "\n" . join("\n", array_values($tw));
|
99 |
+
}
|
100 |
+
|
101 |
+
return false;
|
102 |
+
}
|
103 |
+
|
104 |
+
}
|
models/services/Verify.php
ADDED
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SQ_Models_Services_Verify extends SQ_Models_Abstract_Seo {
|
4 |
+
|
5 |
+
|
6 |
+
public function __construct() {
|
7 |
+
parent::__construct();
|
8 |
+
if ($this->_post->sq->doseo) {
|
9 |
+
add_filter('sq_verify', array($this, 'generateVerify'));
|
10 |
+
add_filter('sq_verify', array($this, 'packVerify'), 99);
|
11 |
+
} else {
|
12 |
+
add_filter('sq_verify', array($this, 'returnFalse'));
|
13 |
+
}
|
14 |
+
}
|
15 |
+
|
16 |
+
public function generateVerify($metas = array()) {
|
17 |
+
$codes = json_decode(json_encode(SQ_Classes_Tools::getOption('codes')));
|
18 |
+
|
19 |
+
if ($this->_post->post_type == 'home') {
|
20 |
+
if (isset($codes->google_wt) && $codes->google_wt <> '') {
|
21 |
+
$metas['google-site-verification'] = $codes->google_wt;
|
22 |
+
}
|
23 |
+
if (isset($codes->bing_wt) && $codes->bing_wt <> '') {
|
24 |
+
$metas['msvalidate.01'] = $codes->bing_wt;
|
25 |
+
}
|
26 |
+
if (isset($codes->pinterest_verify) && $codes->pinterest_verify <> '') {
|
27 |
+
$metas['p:domain_verify'] = $codes->pinterest_verify;
|
28 |
+
$metas['p:domain_verify'] = $codes->pinterest_verify;
|
29 |
+
}
|
30 |
+
}
|
31 |
+
|
32 |
+
if (isset($codes->alexa_verify) && $codes->alexa_verify <> '') {
|
33 |
+
$metas['alexaVerifyID'] = $codes->alexa_verify;
|
34 |
+
}
|
35 |
+
|
36 |
+
return $metas;
|
37 |
+
}
|
38 |
+
|
39 |
+
public function packVerify($metas = array()) {
|
40 |
+
if (!empty($metas)) {
|
41 |
+
foreach ($metas as $key => &$value) {
|
42 |
+
$value = '<meta name="' . $key . '" content="' . $value . '" />';
|
43 |
+
}
|
44 |
+
return "\n" . join("\n", array_values($metas));
|
45 |
+
}
|
46 |
+
|
47 |
+
return false;
|
48 |
+
}
|
49 |
+
}
|
readme.txt
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
=== SEO SQUIRRLY™ ===
|
2 |
Contributors: cifi, calinvingan, florinmuresan, nagy.sorel
|
3 |
-
Tags: seo, e-commerce, plugins, content, marketing, wordpress seo, seo plugin, seo optimization, seo content, ecommerce, keyword research, content seo, search engine optimization, XML sitemap for google, multisite SEO, squirrly, meta title, meta description, favicon, mobile, canonical, seo correction, seo title, seo meta, twitter, woocommerce, feeds, social media, blogging, google-analytics, tracking, best seo tools audit website, content audit tool, ecommerce seo strategy, marketing research tools, research tools for writers, seo audit tool, SEO keyword research tool,duplicate removal tool, ecommerce SEO, facebook open graph wordpress, google keyword planner alternative, Google ranking, how to install facebook pixel on wordpress, JSON-LD structure, Live Assistant, meta duplicate removal, open graph generator, pinterest rich pin validator, related links
|
4 |
-
Requires at least:
|
5 |
Tested up to: 4.8
|
6 |
Stable tag: trunk
|
7 |
Donate link: https://www.squirrly.co/wordpress-seo-by-squirrly
|
@@ -178,9 +178,74 @@ Type a keyword to the right of the screen and start using Squirrly Seo. Enjoy!
|
|
178 |
8. Seo - Use the research tools for writers from the Inspiration box.
|
179 |
|
180 |
== Upgrade Notice ==
|
181 |
-
Squirrly
|
182 |
|
183 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
184 |
= 8.0.5 – 08/14/2017 =
|
185 |
* Fixed HTTPS jquery load in sitemap.xml
|
186 |
* SEO Squirrly is compatible with WP 4.8.1
|
1 |
=== SEO SQUIRRLY™ ===
|
2 |
Contributors: cifi, calinvingan, florinmuresan, nagy.sorel
|
3 |
+
Tags: seo, e-commerce, plugins, content, marketing, wordpress seo, seo plugin, seo optimization, seo content, ecommerce, keyword research, content seo, yoast, all in one seo, search engine optimization, XML sitemap for google, multisite SEO, squirrly, meta title, meta description, favicon, mobile, canonical, seo correction, seo title, seo meta, twitter, woocommerce, feeds, social media, blogging, google-analytics, tracking, best seo tools audit website, content audit tool, ecommerce seo strategy, marketing research tools, research tools for writers, seo audit tool, SEO keyword research tool,duplicate removal tool, ecommerce SEO, facebook open graph wordpress, google keyword planner alternative, Google ranking, how to install facebook pixel on wordpress, JSON-LD structure, Live Assistant, meta duplicate removal, open graph generator, pinterest rich pin validator, related links
|
4 |
+
Requires at least: 4.0
|
5 |
Tested up to: 4.8
|
6 |
Stable tag: trunk
|
7 |
Donate link: https://www.squirrly.co/wordpress-seo-by-squirrly
|
178 |
8. Seo - Use the research tools for writers from the Inspiration box.
|
179 |
|
180 |
== Upgrade Notice ==
|
181 |
+
Squirrly 8.0.5 it's a stable version of Squirrly SEO and has all the SEO requirements by Search Engines
|
182 |
|
183 |
== Changelog ==
|
184 |
+
= 8.2.23 - 11/07/2017 =
|
185 |
+
* Fixed the SEO METAs in frontend for some theme
|
186 |
+
* Fixed the SEO METAs for Wp Super cache and other cache plugins
|
187 |
+
* Update Squirrly SEO Snippet Frontend is optional in Squirrly > SEO Settings Advanced
|
188 |
+
* Fixed the Sitemap to load for all subdirectories
|
189 |
+
* Fixed compatibility issues with other plugins
|
190 |
+
|
191 |
+
|
192 |
+
= 8.2.21 - 11/04/2017 =
|
193 |
+
* Update Frontend to load with the known cache plugins
|
194 |
+
* Updated the SLA to recognize more languages and keywords with special chars
|
195 |
+
* Remove the Mark tag on save in case it passes javascript
|
196 |
+
* Fixed the SLA mark option to remain active on click
|
197 |
+
* Fixed the SLA to recognize the Squirrly Snippet when loaded
|
198 |
+
* Fixed the Doublin Core name error on line 29
|
199 |
+
* Squirrly SEO is now compatible with WP 4.8.3
|
200 |
+
|
201 |
+
= 8.2.20 – 11/02/2017 =
|
202 |
+
* Fixed the Excerpt Only patterh
|
203 |
+
* Fixed Squirrly Snippet in case is empty or has special chars
|
204 |
+
|
205 |
+
= 8.2.19 – 10/30/2017 =
|
206 |
+
* Update Squirrly Live Assistant to use less resources and work faster
|
207 |
+
* Added the Post Publish option in Squirrly Split Window
|
208 |
+
* Fixed Greeck keywords optimization fixed
|
209 |
+
* Fixed the Keyword Research not to display the error message and to be able to redo the search
|
210 |
+
* Fixed the Squirrly Snippet's Title snd Description when using special chars
|
211 |
+
|
212 |
+
= 8.2.18 – 10/27/2017 =
|
213 |
+
* Update compatibility with Polylang plugin
|
214 |
+
* Fixed the yellow highlight in frontend
|
215 |
+
* Fixed Squirrly SLA loading in post edit
|
216 |
+
* Increased connection time with out API in case of slow internet access
|
217 |
+
* Fixed small bugs with article optimization in my.squirrly.co
|
218 |
+
|
219 |
+
= 8.2.17 – 10/24/2017 =
|
220 |
+
* Fixed the SLA loading issue for older WP versions
|
221 |
+
* Fixed the Keyword one letter when loading a new post/page
|
222 |
+
* Corrected the Facebook App ID
|
223 |
+
|
224 |
+
= 8.2.15 – 10/18/2017 =
|
225 |
+
* Fixed the import process when the tables have different encoding
|
226 |
+
* Fixed the Squirrly Snippet in frontend in case the js and css are not loading
|
227 |
+
* Increased the loading speed for favicon.icon and robots.txt
|
228 |
+
* Show error message in case SLA is not loading
|
229 |
+
* Update the SEO Audit with the latest METAs
|
230 |
+
* Register the Subservers for WP Multisite
|
231 |
+
|
232 |
+
= 8.2.14 – 10/12/2017 =
|
233 |
+
* Fixed compatibility with Beaver Builder
|
234 |
+
* Increased security on SEO restore in Import SEO section
|
235 |
+
|
236 |
+
= 8.2.13 – 10/11/2017 =
|
237 |
+
* Fixed the snippet preview in case some features are disabled
|
238 |
+
* Fixed the Title and Description Lenght in Frontend
|
239 |
+
* Added the option to import the old SEO settings from Squirrly SEO
|
240 |
+
|
241 |
+
= 8.2.11 – 10/10/2017 =
|
242 |
+
* Fixed remove meta from Elementor
|
243 |
+
* Fixed small bugs for Squirrly Split Window
|
244 |
+
|
245 |
+
= 8.2.10 – 10/10/2017 =
|
246 |
+
* Launching Squirrly 2018 Steve
|
247 |
+
* See all the new features here: https://howto.squirrly.co/kb/slides/
|
248 |
+
|
249 |
= 8.0.5 – 08/14/2017 =
|
250 |
* Fixed HTTPS jquery load in sitemap.xml
|
251 |
* SEO Squirrly is compatible with WP 4.8.1
|
screenshot-1.png
DELETED
Binary file
|
screenshot-2.png
DELETED
Binary file
|
screenshot-3.png
DELETED
Binary file
|
screenshot-4.png
DELETED
Binary file
|
screenshot-5.png
DELETED
Binary file
|
screenshot-6.png
DELETED
Binary file
|
screenshot-7.png
DELETED
Binary file
|
squirrly.php
CHANGED
@@ -4,43 +4,45 @@
|
|
4 |
Copyright (c) 2012-2017, SEO Squirrly.
|
5 |
The copyrights to the software code in this file are licensed under the (revised) BSD open source license.
|
6 |
|
7 |
-
Plugin Name: SEO
|
8 |
Plugin URI: http://www.squirrly.co
|
9 |
Description: SEO By Squirrly is for the NON-SEO experts. Get Excellent Seo with Better Content, Ranking and Analytics. For Both Humans and Search Bots.<BR> <a href="http://my.squirrly.co/user" target="_blank"><strong>Check your profile</strong></a>
|
10 |
Author: Squirrly SEO
|
11 |
-
Version: 8.
|
12 |
Author URI: http://www.squirrly.co
|
13 |
*/
|
14 |
|
15 |
/* SET THE CURRENT VERSION ABOVE AND BELOW */
|
16 |
-
define('SQ_VERSION', '8.
|
|
|
17 |
/* Call config files */
|
18 |
if (file_exists(dirname(__FILE__) . '/config/config.php')) {
|
19 |
-
|
20 |
|
21 |
/* important to check the PHP version */
|
22 |
if (PHP_VERSION_ID >= 5100) {
|
23 |
/* inport main classes */
|
24 |
-
require_once(_SQ_CLASSES_DIR_ . '
|
25 |
-
|
26 |
-
|
|
|
|
|
|
|
|
|
27 |
|
28 |
-
|
29 |
-
require_once(_SQ_CLASSES_DIR_ . 'SQ_BlockController.php');
|
30 |
-
SQ_ObjController::getController('SQ_FrontController', false)->run();
|
31 |
|
32 |
/**
|
33 |
* Upgrade Squirrly call.
|
34 |
*/
|
35 |
-
register_activation_hook(__FILE__, array(
|
36 |
-
register_deactivation_hook(__FILE__, array(
|
37 |
-
} elseif (
|
38 |
-
|
39 |
-
SQ_ObjController::getController('SQ_Frontend');
|
40 |
}
|
41 |
|
42 |
-
add_action('sq_processCron', array(
|
43 |
-
add_action('sq_processApi', array(
|
44 |
} else {
|
45 |
/* Main class call */
|
46 |
add_action('admin_init', 'sq_phpError');
|
4 |
Copyright (c) 2012-2017, SEO Squirrly.
|
5 |
The copyrights to the software code in this file are licensed under the (revised) BSD open source license.
|
6 |
|
7 |
+
Plugin Name: Squirrly SEO 2018 (Steve)
|
8 |
Plugin URI: http://www.squirrly.co
|
9 |
Description: SEO By Squirrly is for the NON-SEO experts. Get Excellent Seo with Better Content, Ranking and Analytics. For Both Humans and Search Bots.<BR> <a href="http://my.squirrly.co/user" target="_blank"><strong>Check your profile</strong></a>
|
10 |
Author: Squirrly SEO
|
11 |
+
Version: 8.2.23
|
12 |
Author URI: http://www.squirrly.co
|
13 |
*/
|
14 |
|
15 |
/* SET THE CURRENT VERSION ABOVE AND BELOW */
|
16 |
+
define('SQ_VERSION', '8.2.23');
|
17 |
+
|
18 |
/* Call config files */
|
19 |
if (file_exists(dirname(__FILE__) . '/config/config.php')) {
|
20 |
+
require_once(dirname(__FILE__) . '/config/config.php');
|
21 |
|
22 |
/* important to check the PHP version */
|
23 |
if (PHP_VERSION_ID >= 5100) {
|
24 |
/* inport main classes */
|
25 |
+
require_once(_SQ_CLASSES_DIR_ . 'ObjController.php');
|
26 |
+
require_once(_SQ_CLASSES_DIR_ . 'BlockController.php');
|
27 |
+
|
28 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_FrontController');
|
29 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_Tools');
|
30 |
+
|
31 |
+
if (is_admin() || is_network_admin()) {
|
32 |
|
33 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_FrontController')->runAdmin();
|
|
|
|
|
34 |
|
35 |
/**
|
36 |
* Upgrade Squirrly call.
|
37 |
*/
|
38 |
+
register_activation_hook(__FILE__, array(SQ_Classes_ObjController::getClass('SQ_Classes_Tools'), 'sq_activate'));
|
39 |
+
register_deactivation_hook(__FILE__, array(SQ_Classes_ObjController::getClass('SQ_Classes_Tools'), 'sq_deactivate'));
|
40 |
+
} elseif (SQ_Classes_Tools::getOption('sq_use') == 1) {
|
41 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_FrontController')->runFrontend();
|
|
|
42 |
}
|
43 |
|
44 |
+
add_action('sq_processCron', array(SQ_Classes_ObjController::getClass('SQ_Controllers_Cron'), 'processRankingCron'));
|
45 |
+
add_action('sq_processApi', array(SQ_Classes_ObjController::getClass('SQ_Controllers_Cron'), 'processSEOPostCron'));
|
46 |
} else {
|
47 |
/* Main class call */
|
48 |
add_action('admin_init', 'sq_phpError');
|
themes/default/SQ_BlockAccount.php
DELETED
@@ -1,35 +0,0 @@
|
|
1 |
-
<div id="sq_settings" class="sq_userinfo" >
|
2 |
-
<?php SQ_ObjController::getBlock('SQ_BlockSupport')->init(); ?>
|
3 |
-
|
4 |
-
<?php if (SQ_Tools::$options['sq_api'] <> '') { ?>
|
5 |
-
<div>
|
6 |
-
<span class="sq_icon"></span>
|
7 |
-
<div id="sq_settings_title" ><?php _e('Squirrly account information', _SQ_PLUGIN_NAME_); ?> </div>
|
8 |
-
<div id="sq_settings_title" style="text-align: right">
|
9 |
-
<input id="sq_goto_dashboard" class="sq_goto_dashboard" type="button" value="<?php _e('Go to dashboard', _SQ_PLUGIN_NAME_) ?> »" />
|
10 |
-
<a href="<?php echo _SQ_DASH_URL_ ?>login/?token=<?php echo SQ_Tools::$options['sq_api'] ?>&redirect_to=<?php echo _SQ_DASH_URL_ ?>user/dashboard" target="_blank" class="sq_goto_dashboard" type="button" title="<?php _e('See ALL of Your Activity so Far', _SQ_PLUGIN_NAME_) ?>"><?php _e('See ALL of Your Activity so Far', _SQ_PLUGIN_NAME_) ?> »</a>
|
11 |
-
<br style="clear: both;">
|
12 |
-
</div>
|
13 |
-
</div>
|
14 |
-
<?php } ?>
|
15 |
-
<div id="sq_helpaccountside" class="sq_helpside"></div>
|
16 |
-
<div id="sq_left">
|
17 |
-
|
18 |
-
<?php if (SQ_Tools::$options['sq_api'] <> '') { ?>
|
19 |
-
<div id="sq_settings_body" style="min-height: 400px;">
|
20 |
-
<?php if (SQ_Tools::$options['sq_api'] <> '') { ?>
|
21 |
-
<fieldset style="background: none; border: none; box-shadow: none;"><div id="sq_userinfo" class="sq_loading"></div></fieldset>
|
22 |
-
<script type="text/javascript">
|
23 |
-
jQuery(document).ready(function () {
|
24 |
-
sq_getUserStatus();
|
25 |
-
});
|
26 |
-
</script>
|
27 |
-
<?php } ?>
|
28 |
-
|
29 |
-
</div>
|
30 |
-
|
31 |
-
<?php } ?>
|
32 |
-
|
33 |
-
</div>
|
34 |
-
<div id="sq_sidehelp"></div>
|
35 |
-
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
themes/default/SQ_BlockAffiliate.php
DELETED
@@ -1,103 +0,0 @@
|
|
1 |
-
<div id="sq_settings" >
|
2 |
-
<?php SQ_ObjController::getBlock('SQ_BlockSupport')->init(); ?>
|
3 |
-
<div>
|
4 |
-
<span class="sq_icon"></span>
|
5 |
-
<div id="sq_settings_title" ><?php _e('Join Squirrly today!', _SQ_PLUGIN_NAME_); ?> </div>
|
6 |
-
<div id="sq_settings_title" >
|
7 |
-
<input id="sq_goto_dashboard" class="sq_goto_dashboard" type="button" value="<?php _e('Go to dashboard', _SQ_PLUGIN_NAME_) ?> »" />
|
8 |
-
</div>
|
9 |
-
</div>
|
10 |
-
<div id="sq_helpaffiliateside" class="sq_helpside"></div>
|
11 |
-
<div id="sq_left">
|
12 |
-
<form id="sq_settings_affiliate_form" name="settings" action="" method="post" enctype="multipart/form-data">
|
13 |
-
<div id="sq_settings_body">
|
14 |
-
|
15 |
-
<fieldset>
|
16 |
-
<legend>
|
17 |
-
<span class="sq_legend_title"><?php _e('Join Squirrly today!', _SQ_PLUGIN_NAME_); ?></span>
|
18 |
-
<span><?php echo sprintf(__('%sHow I Started Making Money With the Squirrly Affiliate Program%s', _SQ_PLUGIN_NAME_), '<a href="https://plugin.squirrly.co/wp-content/uploads/Squirrly-Affiliate-Program.pdf" target="_blank">', '</a>'); ?></span>
|
19 |
-
|
20 |
-
<span><p class="sq_settings_affiliate_bigtitle">
|
21 |
-
<?php _e('Affiliate Benefits', _SQ_PLUGIN_NAME_); ?>
|
22 |
-
</p>
|
23 |
-
<ul class="sq_settings_affiliate_info">
|
24 |
-
<li>
|
25 |
-
<div>
|
26 |
-
<span><?php echo sprintf(__('- Recurring 45%s commission', _SQ_PLUGIN_NAME_), '%'); ?></span>
|
27 |
-
</div>
|
28 |
-
</li>
|
29 |
-
<li>
|
30 |
-
<div>
|
31 |
-
<span><?php _e('- No cost', _SQ_PLUGIN_NAME_); ?></span>
|
32 |
-
</div>
|
33 |
-
</li>
|
34 |
-
<li>
|
35 |
-
<div>
|
36 |
-
<span><?php _e('- Monthly payments in your Paypal account', _SQ_PLUGIN_NAME_); ?></span>
|
37 |
-
</div>
|
38 |
-
</li>
|
39 |
-
</ul></span>
|
40 |
-
</legend>
|
41 |
-
<div>
|
42 |
-
<p class="sq_settings_affiliate_bigbutton" style="margin-bottom:35px;">
|
43 |
-
<?php
|
44 |
-
if (SQ_Tools::$options['sq_api'] <> '') {
|
45 |
-
if (SQ_Tools::$options['sq_affiliate_link'] <> '') {
|
46 |
-
echo '<span>' . SQ_Tools::$options['sq_affiliate_link'] . '</span>';
|
47 |
-
echo '<span class="sq_settings_info">' . __('To redirect users to your site, just change "squirrly.co" with your domain.', _SQ_PLUGIN_NAME_) . '</span>';
|
48 |
-
} else {
|
49 |
-
?><input type="submit" name="sq_affiliate_link" value="<?php _e('Generate affiliate link', _SQ_PLUGIN_NAME_) ?> »" /><?php
|
50 |
-
}
|
51 |
-
}
|
52 |
-
?>
|
53 |
-
</p>
|
54 |
-
|
55 |
-
<?php
|
56 |
-
if (SQ_Tools::$options['sq_api'] <> '') {
|
57 |
-
if (SQ_Tools::$options['sq_affiliate_link'] <> '') {
|
58 |
-
echo __('Your affiliate account is set and ready to go. Above you have the affiliate link. ', _SQ_PLUGIN_NAME_);
|
59 |
-
echo '<br />';
|
60 |
-
echo sprintf(__('Check your affiliate page: %sAffiliate page%s', _SQ_PLUGIN_NAME_), '<a href="' . _SQ_DASH_URL_ . 'login/?token=' . SQ_Tools::$options['sq_api'] . '&redirect_to=' . _SQ_DASH_URL_ . 'user/affiliate' . '" target="_blank" style="font-weight:bold">', '</a>');
|
61 |
-
}
|
62 |
-
} else {
|
63 |
-
echo __('After you connect to Squirrly you can begin to use your free Squirrly affiliate link immediately!', _SQ_PLUGIN_NAME_);
|
64 |
-
}
|
65 |
-
?>
|
66 |
-
</div>
|
67 |
-
|
68 |
-
</fieldset>
|
69 |
-
<?php if (SQ_Tools::$options['sq_affiliate_link'] <> '') { ?>
|
70 |
-
<fieldset>
|
71 |
-
<legend>
|
72 |
-
<span class="sq_legend_title"><?php _e('Squirrly banners you can use', _SQ_PLUGIN_NAME_); ?></span>
|
73 |
-
</legend>
|
74 |
-
<div>
|
75 |
-
<ul class="sq_settings_affiliate_info">
|
76 |
-
<?php
|
77 |
-
$sq_affiliate_images[] = _SQ_THEME_URL_ . 'img/banners/banner1.jpg';
|
78 |
-
$sq_affiliate_images[] = _SQ_THEME_URL_ . 'img/banners/banner1.png';
|
79 |
-
$sq_affiliate_images[] = _SQ_THEME_URL_ . 'img/banners/banner2.jpg';
|
80 |
-
$sq_affiliate_images[] = _SQ_THEME_URL_ . 'img/banners/banner2.png';
|
81 |
-
|
82 |
-
foreach ($sq_affiliate_images as $sq_affiliate_image) {
|
83 |
-
echo '<li><a href="' . SQ_Tools::$options['sq_affiliate_link'] . '" target="_blank"><img src="' . $sq_affiliate_image . '" alt="Seo Plugin by Squirrly" /></a>';
|
84 |
-
echo '<span class="sq_affiliate_banner" >';
|
85 |
-
echo '<textarea style="width: 500px; height: 45px;" onclick="this.focus(); this.select();"><a href="' . SQ_Tools::$options['sq_affiliate_link'] . '" target="_blank" title="Seo Plugin by Squirrly"><img src="' . $sq_affiliate_image . '" /></a></textarea>';
|
86 |
-
echo '</span></li>';
|
87 |
-
}
|
88 |
-
?>
|
89 |
-
</ul>
|
90 |
-
</div>
|
91 |
-
|
92 |
-
</fieldset>
|
93 |
-
<?php } ?>
|
94 |
-
</div>
|
95 |
-
<br style="clear: both;"/>
|
96 |
-
<div id="sq_settings_title" style="text-align: right">
|
97 |
-
<a href="?page=sq_dashboard" id="sq_goto_newpost" style="display:none" /><?php _e('<< START HERE >>', _SQ_PLUGIN_NAME_) ?></a>
|
98 |
-
</div>
|
99 |
-
<input type="hidden" name="action" value="sq_settings_affiliate" />
|
100 |
-
<input type="hidden" name="nonce" value="<?php echo wp_create_nonce(_SQ_NONCE_ID_); ?>" />
|
101 |
-
</form>
|
102 |
-
</div>
|
103 |
-
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
themes/default/SQ_BlockAudit.php
DELETED
@@ -1,63 +0,0 @@
|
|
1 |
-
<div id="sq_settings">
|
2 |
-
<div class="sq_message sq_error" style="display: none"></div>
|
3 |
-
<?php
|
4 |
-
SQ_ObjController::getBlock('SQ_BlockSupport')->init();
|
5 |
-
?>
|
6 |
-
<div>
|
7 |
-
<span class="sq_icon"></span>
|
8 |
-
<div id="sq_settings_title"><?php _e('Squirrly Site Audit', _SQ_PLUGIN_NAME_); ?> </div>
|
9 |
-
|
10 |
-
</div>
|
11 |
-
<div id="sq_left">
|
12 |
-
<div id="sq_settings_body">
|
13 |
-
<fieldset>
|
14 |
-
<legend>
|
15 |
-
<span class="sq_legend_title"><?php _e('What the Audit does:', _SQ_PLUGIN_NAME_); ?></span>
|
16 |
-
<span><?php echo sprintf(__('%sTracks all the aspects of your Content Marketing Strategy%s: Blogging, Traffic, SEO, Social Signals, Links, Authority. Every single week you get a new report by email.', _SQ_PLUGIN_NAME_), '<strong>', '</strong>'); ?></span>
|
17 |
-
<span><?php echo sprintf(__('%sIt Gives You Professional Advice on How To Fix%s any of those areas that it helps track, so you can easily find out how to improve. Content from SEO Moz (recently just MOZ), Google, Authority Labs, etc.', _SQ_PLUGIN_NAME_), '<strong>', '</strong>'); ?></span>
|
18 |
-
<span><?php echo sprintf(__('%sMonitors Your Progress, week by week%s. You’ll get interesting data about the historical performance of each article you write and find out how to improve its seo ranking.', _SQ_PLUGIN_NAME_), '<strong>', '</strong>'); ?></span>
|
19 |
-
<span><?php echo sprintf(__('%sAnalyze any single article.%s See how it improves over time.', _SQ_PLUGIN_NAME_), '<strong>', '</strong>'); ?></span>
|
20 |
-
<span><?php echo sprintf(__('%sRequest an Audit Now%s', _SQ_PLUGIN_NAME_), '<a href="' . _SQ_DASH_URL_ . 'login/?token=' . SQ_Tools::$options['sq_api'] . '" target="_blank">', '</a>'); ?></span>
|
21 |
-
|
22 |
-
</legend>
|
23 |
-
|
24 |
-
<div>
|
25 |
-
<div id="sq_post_type_option" class="withborder" style="min-height: 520px;">
|
26 |
-
<p style="font-weight: bold;"><?php _e('Your last Site Audit', _SQ_PLUGIN_NAME_); ?>:</p>
|
27 |
-
<ul style="margin-top: 50px;">
|
28 |
-
<li>
|
29 |
-
<?php if (isset($view->blog->score) && $view->blog->score > 0){ ?>
|
30 |
-
<p class="sq_audit_score"><?php echo __('Score', _SQ_PLUGIN_NAME_) . ': <span>' . $view->blog->score . '/100</span>'; ?></p>
|
31 |
-
<p class="sq_audit_date"><?php echo __('Date', _SQ_PLUGIN_NAME_) . ': <span>' . date(get_option( 'date_format' ),strtotime($view->blog->datetime)) . '</span>'; ?></p>
|
32 |
-
<p class="sq_settings_bigbutton" style="margin-bottom:35px;">
|
33 |
-
<a href="<?php echo _SQ_DASH_URL_ . 'login/?token=' . SQ_Tools::$options['sq_api'] ?>" target="_blank" ><?php _e('See the Audit', _SQ_PLUGIN_NAME_) ?> »</a>
|
34 |
-
</p>
|
35 |
-
<?php }else{?>
|
36 |
-
<p><?php _e('Seems that no Audit was made yet. You can request a new audit and it should be ready in 5-10 minutes', _SQ_PLUGIN_NAME_); ?>:</p>
|
37 |
-
<p class="sq_settings_bigbutton" style="margin-bottom:35px;">
|
38 |
-
<a href="<?php echo _SQ_DASH_URL_ . 'login/?token=' . SQ_Tools::$options['sq_api'] ?>" target="_blank" ><?php _e('Request an Audit Now', _SQ_PLUGIN_NAME_) ?> »</a>
|
39 |
-
</p>
|
40 |
-
<?php }?>
|
41 |
-
</li>
|
42 |
-
<?php if (isset($view->blog->score) && $view->blog->score == 0){ ?>
|
43 |
-
<li>
|
44 |
-
<p>
|
45 |
-
<?php _e('This is an example of a Site Audit', _SQ_PLUGIN_NAME_); ?>:
|
46 |
-
</p>
|
47 |
-
<p>
|
48 |
-
<a href="<?php echo _SQ_DASH_URL_ . 'login/?token=' . SQ_Tools::$options['sq_api'] ?>" target="_blank" >
|
49 |
-
<img src="https://ps.w.org/squirrly-seo/trunk/screenshot-7.png" alt="" style="max-width: 520px">
|
50 |
-
</a>
|
51 |
-
</p>
|
52 |
-
</li>
|
53 |
-
<?php }?>
|
54 |
-
</ul>
|
55 |
-
</div>
|
56 |
-
|
57 |
-
</div>
|
58 |
-
</fieldset>
|
59 |
-
|
60 |
-
</div>
|
61 |
-
</div>
|
62 |
-
|
63 |
-
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
themes/default/SQ_BlockCopyright.php
DELETED
@@ -1,31 +0,0 @@
|
|
1 |
-
<div id="sq_settings">
|
2 |
-
<div class="sq_message sq_error" style="display: none"></div>
|
3 |
-
|
4 |
-
<?php
|
5 |
-
SQ_ObjController::getBlock('SQ_BlockSupport')->init();
|
6 |
-
?>
|
7 |
-
<div>
|
8 |
-
<span class="sq_icon"></span>
|
9 |
-
<div id="sq_settings_title"><?php _e('Squirrly Copywriting Options', _SQ_PLUGIN_NAME_); ?> </div>
|
10 |
-
<div class="sq_subtitles">
|
11 |
-
<p><?php _e('We help you find copyright-free images, news sources, awesome tweets by influential people, all of which you can use to support the points you are making in your blog posts.', _SQ_PLUGIN_NAME_); ?></p>
|
12 |
-
</div>
|
13 |
-
</div>
|
14 |
-
<div id="sq_helpcopyrightside" class="sq_helpside"></div>
|
15 |
-
<div id="sq_left">
|
16 |
-
<div id="sq_settings_body">
|
17 |
-
|
18 |
-
<fieldset style="background: none !important; box-shadow: none;">
|
19 |
-
<div class="sq_subtitles">
|
20 |
-
<p><?php _e('The inspiration Box from Squirrly helps you save time on the research you do for each article.', _SQ_PLUGIN_NAME_); ?></p>
|
21 |
-
<p><img src="<?php echo _SQ_THEME_URL_ . 'img/help/copyright_options1.png' ?>" alt=""></p>
|
22 |
-
<p><img src="<?php echo _SQ_THEME_URL_ . 'img/help/copyright_options2.png' ?>" alt=""></p>
|
23 |
-
<p><?php _e("Once you found the image you're looking for, click on it and it will be added in your article content", _SQ_PLUGIN_NAME_); ?></p>
|
24 |
-
<p><img src="<?php echo _SQ_THEME_URL_ . 'img/help/copyright_options3.png' ?>" alt=""></p>
|
25 |
-
<div class="sq_button"><a href="post-new.php" target="_blank" style="margin-top: 10px; font-size: 15px; max-width: 210px;"><?php _e("Use Squirrly's Inspiration box",_SQ_PLUGIN_NAME_) ?></a></div>
|
26 |
-
</div>
|
27 |
-
</fieldset>
|
28 |
-
</div>
|
29 |
-
</div>
|
30 |
-
|
31 |
-
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
themes/default/SQ_BlockDashboard.php
DELETED
@@ -1,111 +0,0 @@
|
|
1 |
-
<div id="sq_settings">
|
2 |
-
<?php SQ_ObjController::getBlock('SQ_BlockSupport')->init(); ?>
|
3 |
-
<?php if (SQ_Tools::$options['sq_api'] == '') { ?>
|
4 |
-
<span class="sq_icon"></span>
|
5 |
-
|
6 |
-
<div id="sq_settings_title"><?php _e('Connect to Squirrly.co', _SQ_PLUGIN_NAME_); ?> </div>
|
7 |
-
<div id="sq_settings_login">
|
8 |
-
<?php SQ_ObjController::getBlock('SQ_Blocklogin')->init(); ?>
|
9 |
-
</div>
|
10 |
-
|
11 |
-
|
12 |
-
<div class="sq_login_link"><?php _e('Connect to Squirrly and start optimizing your site', _SQ_PLUGIN_NAME_); ?></div>
|
13 |
-
<input id="sq_goto_dashboard" class="sq_goto_dashboard" style="display:none; margin: 0 auto; width: 500px; padding: 0px 10px;" type="button" value="«<?php _e('START HERE', _SQ_PLUGIN_NAME_) ?> »" />
|
14 |
-
|
15 |
-
<?php
|
16 |
-
} else {
|
17 |
-
?>
|
18 |
-
<div>
|
19 |
-
<span class="sq_icon"></span>
|
20 |
-
<div id="sq_settings_title"><?php _e('Squirrly dashboard', _SQ_PLUGIN_NAME_); ?> </div>
|
21 |
-
</div>
|
22 |
-
<div id="sq_helpdashboardside" class="sq_helpside"></div>
|
23 |
-
<div id="sq_helpdashboardcontent" class="sq_helpcontent"></div>
|
24 |
-
|
25 |
-
<?php } ?>
|
26 |
-
|
27 |
-
<div class="sq_helpcontent" style="display: none; clear: left; <?php echo (SQ_Tools::$options['sq_api'] == '') ? 'text-align: center;' : '' ?>">
|
28 |
-
<div style="width: 700px; display: inline-block;">
|
29 |
-
<div style="font-size: 24px; margin: 30px 0; color: #999;">Learn About Squirrly's Features (click on the presentations):</div>
|
30 |
-
|
31 |
-
<div class="sq_mysquirrly_cta">
|
32 |
-
<div class="sq_mysquirrly_cta_content">
|
33 |
-
<?php _e('Now with a fresh one right out of our Squirrly Labs!', _SQ_PLUGIN_NAME_); ?>
|
34 |
-
</div>
|
35 |
-
<div class="sq_mysquirrly_cta_button">
|
36 |
-
<a href="<?php echo _SQ_DASH_URL_ ?>login/?token=<?php echo SQ_Tools::$options['sq_api'] ?>&redirect_to=<?php echo _SQ_DASH_URL_ ?>user/dashboard" title="<?php _e('Get It Here', _SQ_PLUGIN_NAME_); ?>" target="_blank"><?php _e('Get It Here', _SQ_PLUGIN_NAME_); ?> »</a></p>
|
37 |
-
</div>
|
38 |
-
</div>
|
39 |
-
|
40 |
-
</div>
|
41 |
-
|
42 |
-
|
43 |
-
<ul class="sq_slidelist">
|
44 |
-
<li>
|
45 |
-
<a href="javascript:void(0);" rel="44987512" style="background-image: url('//image.slidesharecdn.com/kr-150222110827-conversion-gate01/95/squirrly-keyword-research-1-638.jpg?cb=1424624994')"></a>
|
46 |
-
<div>Squirrly Keyword Research</div>
|
47 |
-
</li>
|
48 |
-
<li>
|
49 |
-
<a href="javascript:void(0);" rel="44987943" style="background-image: url('//image.slidesharecdn.com/sla-150222112751-conversion-gate01/95/squirrly-live-assistant-1-638.jpg?cb=1424626190')"></a>
|
50 |
-
<div>Squirrly Live Assistant</div>
|
51 |
-
</li>
|
52 |
-
<li>
|
53 |
-
<a href="javascript:void(0);" rel="44987925" style="background-image: url('//image.slidesharecdn.com/snippet1-150222112635-conversion-gate01/95/squirrly-snippet-tool-1-638.jpg?cb=1424626028')"></a>
|
54 |
-
<div>Squirrly Snippet Tool</div>
|
55 |
-
</li>
|
56 |
-
<li>
|
57 |
-
<a href="javascript:void(0);" rel="45020680" style="background-image: url('//image.slidesharecdn.com/analytics-150223081607-conversion-gate02/95/squirrly-performance-analytics-1-638.jpg?cb=1424701102')"></a>
|
58 |
-
<div>Squirrly Performance Analyticsl</div>
|
59 |
-
</li>
|
60 |
-
<li>
|
61 |
-
<a href="javascript:void(0);" rel="45062956" style="background-image: url('//image.slidesharecdn.com/firstpage-150224040740-conversion-gate01/95/squirrly-first-page-optimization-1-638.jpg?cb=1427713684')"></a>
|
62 |
-
<div>Squirrly First Page Optimization</div>
|
63 |
-
</li>
|
64 |
-
<li>
|
65 |
-
<a href="javascript:void(0);" rel="45117764" style="background-image: url('//image.slidesharecdn.com/socialoption-150225050457-conversion-gate02/95/squirrly-open-graph-and-twitter-card-1-638.jpg?cb=1427713066')"></a>
|
66 |
-
<div>Squirrly Open Graph and Twitter Card</div>
|
67 |
-
</li>
|
68 |
-
<li>
|
69 |
-
<a href="javascript:void(0);" rel="45142191" style="background-image: url('//image.slidesharecdn.com/check-150225143101-conversion-gate02/95/squirrly-check-for-seo-errors-1-638.jpg?cb=1427713151')"></a>
|
70 |
-
<div>Squirrly Check for SEO errors</div>
|
71 |
-
</li>
|
72 |
-
<li>
|
73 |
-
<a href="javascript:void(0);" rel="46171871" style="background-image: url('//image.slidesharecdn.com/sitemap-150323092133-conversion-gate01/95/squirrly-sitemap-xml-1-638.jpg?cb=1427713209')"></a>
|
74 |
-
<div>Squirrly Sitemap XML</div>
|
75 |
-
</li>
|
76 |
-
<li>
|
77 |
-
<a href="javascript:void(0);" rel="46209176" style="background-image: url('//image.slidesharecdn.com/favicon-150324035827-conversion-gate01/95/squirrly-faviconico-1-638.jpg?cb=1427713276')"></a>
|
78 |
-
<div>Squirrly Favicon.ico</div>
|
79 |
-
</li>
|
80 |
-
<li>
|
81 |
-
<a href="javascript:void(0);" rel="46213739" style="background-image: url('//image.slidesharecdn.com/jsonld-150324055711-conversion-gate01/95/squirrly-jsonld-structured-data-1-638.jpg?cb=1427713334')"></a>
|
82 |
-
<div>Squirrly Json-LD Structured Data</div>
|
83 |
-
</li>
|
84 |
-
<li>
|
85 |
-
<a href="javascript:void(0);" rel="46218043" style="background-image: url('//image.slidesharecdn.com/tracking-150324074838-conversion-gate01/95/squirrly-tracking-tools-1-638.jpg?cb=1427713384')"></a>
|
86 |
-
<div>Squirrly Tracking Tools</div>
|
87 |
-
</li>
|
88 |
-
<li>
|
89 |
-
<a href="javascript:void(0);" rel="46219965" style="background-image: url('//image.slidesharecdn.com/types-150324083302-conversion-gate01/95/squirrly-settings-for-posts-and-pages-1-638.jpg?cb=1427713476')"></a>
|
90 |
-
<div>Squirrly Settings for Posts and Pages</div>
|
91 |
-
</li>
|
92 |
-
<li>
|
93 |
-
<a href="javascript:void(0);" rel="46220852" style="background-image: url('//image.slidesharecdn.com/ranking-150324085252-conversion-gate01/95/squirrly-google-rank-option-1-638.jpg?cb=1427713539')"></a>
|
94 |
-
<div>Squirrly Google Rank Option</div>
|
95 |
-
</li>
|
96 |
-
<li>
|
97 |
-
<a href="javascript:void(0);" rel="46222827" style="background-image: url('//image.slidesharecdn.com/success-150324093815-conversion-gate01/95/measure-your-success-option-from-squirrly-1-638.jpg?cb=1427713584')"></a>
|
98 |
-
<div>Measure Your Success with Squirrly</div>
|
99 |
-
</li>
|
100 |
-
<li>
|
101 |
-
<a href="javascript:void(0);" rel="46256414" style="background-image: url('//image.slidesharecdn.com/robots-150325031929-conversion-gate01/95/squirrly-robotstxt-1-638.jpg?cb=1427713635')"></a>
|
102 |
-
<div>Squirrly Robots.txt</div>
|
103 |
-
</li>
|
104 |
-
<li>
|
105 |
-
<a href="javascript:void(0);" rel="46440187" style="background-image: url('//image.slidesharecdn.com/audit-150330042921-conversion-gate01/95/squirrly-site-audit-1-638.jpg?cb=1427707809')"></a>
|
106 |
-
<div>Squirrly Site Audit</div>
|
107 |
-
</li>
|
108 |
-
</ul>
|
109 |
-
</div>
|
110 |
-
</div>
|
111 |
-
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
themes/default/SQ_BlockKeywordResearch.php
DELETED
@@ -1,37 +0,0 @@
|
|
1 |
-
<div id="sq_settings">
|
2 |
-
<div class="sq_message sq_error" style="display: none"></div>
|
3 |
-
|
4 |
-
<?php
|
5 |
-
SQ_ObjController::getBlock('SQ_BlockSupport')->init();
|
6 |
-
SQ_ObjController::getBlock('SQ_Loading')->loadJsVars();
|
7 |
-
?>
|
8 |
-
<div>
|
9 |
-
<span class="sq_icon"></span>
|
10 |
-
<div id="sq_settings_title"><?php _e('Squirrly Keyword Research', _SQ_PLUGIN_NAME_); ?> </div>
|
11 |
-
<div class="sq_subtitles">
|
12 |
-
<p>Find Long-Tail Keywords That Are Easy to Rank For. Never Miss a Ranking Opportunity. All the Details We Give Are Personalized For Each Site, Thanks to Squirrly's Market Intelligence Features.</p>
|
13 |
-
</div>
|
14 |
-
</div>
|
15 |
-
<div id="sq_helpkeywordresearchside" class="sq_helpside"></div>
|
16 |
-
<div id="sq_left">
|
17 |
-
<?php if (SQ_Tools::$options['sq_api'] <> '') { ?>
|
18 |
-
<div id="sq_settings_body">
|
19 |
-
|
20 |
-
<?php if (SQ_Tools::$options['sq_api'] <> '') { ?>
|
21 |
-
<fieldset style="background: none !important; box-shadow: none;">
|
22 |
-
<div id="sq_krinfo" class="sq_loading"></div>
|
23 |
-
</fieldset>
|
24 |
-
<script type="text/javascript">
|
25 |
-
jQuery(document).ready(function () {
|
26 |
-
sq_getKR();
|
27 |
-
});
|
28 |
-
</script>
|
29 |
-
<?php } ?>
|
30 |
-
|
31 |
-
</div>
|
32 |
-
|
33 |
-
<?php } ?>
|
34 |
-
|
35 |
-
</div>
|
36 |
-
|
37 |
-
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
themes/default/SQ_BlockLiveAssistant.php
DELETED
@@ -1,36 +0,0 @@
|
|
1 |
-
<div id="sq_settings">
|
2 |
-
<div class="sq_message sq_error" style="display: none"></div>
|
3 |
-
|
4 |
-
<?php
|
5 |
-
SQ_ObjController::getBlock('SQ_BlockSupport')->init();
|
6 |
-
?>
|
7 |
-
<div>
|
8 |
-
<span class="sq_icon"></span>
|
9 |
-
<div id="sq_settings_title"><?php _e('Squirrly Live Assistant', _SQ_PLUGIN_NAME_); ?> </div>
|
10 |
-
<div class="sq_subtitles">
|
11 |
-
<p>Using the Live Assistant from Squirrly SEO is like having a consultant sitting right next to you and helping you get a 100% optimized page. For both Humans and Search Engine bots.</p>
|
12 |
-
</div>
|
13 |
-
</div>
|
14 |
-
<div id="sq_helpliveassistantside" class="sq_helpside"></div>
|
15 |
-
<div id="sq_left">
|
16 |
-
<div id="sq_settings_body">
|
17 |
-
|
18 |
-
<fieldset style="background: none !important; box-shadow: none;">
|
19 |
-
<div class="sq_subtitles">
|
20 |
-
<div class="sq_button"><a href="post-new.php" target="_blank" style="margin: 10px; font-size: 15px; max-width: 210px;"><?php _e('Use Squirrly Live Assistant',_SQ_PLUGIN_NAME_) ?></a></div>
|
21 |
-
|
22 |
-
<p>You just have to type in the keyword you want the page to be optimized for.</p>
|
23 |
-
<p><img src="<?php echo _SQ_THEME_URL_ . 'img/help/live_assistant1.png' ?>" alt=""></p>
|
24 |
-
<p>After that, the Live Assistant guides you through the steps you need to take to fully optimize the page.</p>
|
25 |
-
<p><img src="<?php echo _SQ_THEME_URL_ . 'img/help/live_assistant2.png' ?>" alt=""></p>
|
26 |
-
<p><img src="<?php echo _SQ_THEME_URL_ . 'img/help/live_assistant3.png' ?>" alt=""></p>
|
27 |
-
|
28 |
-
<p>When all those lights turn green, it means you have an excellent SEO article, page or product.</p>
|
29 |
-
<p><a href="post-new.php" target="_blank" style="margin-top: 10px; font-size: 15px; max-width: 210px;"><img src="<?php echo _SQ_THEME_URL_ . 'img/help/live_assistant4.png' ?>" alt=""></a></p>
|
30 |
-
<div class="sq_button"><a href="post-new.php" target="_blank" style="margin-top: 10px; font-size: 15px; max-width: 210px;"><?php _e('Use Squirrly Live Assistant',_SQ_PLUGIN_NAME_) ?></a></div>
|
31 |
-
</div>
|
32 |
-
</fieldset>
|
33 |
-
</div>
|
34 |
-
</div>
|
35 |
-
|
36 |
-
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
themes/default/SQ_BlockPostsAnalytics.php
DELETED
@@ -1,56 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
if (SQ_Tools::$options['sq_google_ranksperhour'] > 0) {
|
3 |
-
$blog_ip = @gethostbyname(gethostname());
|
4 |
-
|
5 |
-
if (get_transient('google_blocked') !== false) {
|
6 |
-
echo '<div id="notice sq_message" style="font-size: 14px;color: red;padding: 0px;margin: 0 0 15px 0;text-align: center;line-height: 15px;"><p>';
|
7 |
-
if (function_exists('curl_init') && !ini_get('open_basedir')) {
|
8 |
-
echo sprintf(__('The IP %s is calling the rank too often and google stopped the calls for %s mins. Lower the Rank check rate in Squirrly > Advanced > Rank Option. %sMore details%s', _SQ_PLUGIN_NAME_),$blog_ip, (((get_transient('google_blocked') - time() + 3600) > 0) ? date('i', (get_transient('google_blocked') - time() + 3600)) : 'an hour'), '<a href="http://howto.squirrly.co/wordpress-seo/could-not-receive-data-from-google-err-blocked-ip/" target="_blank" >', '</a>');
|
9 |
-
}
|
10 |
-
echo '</p></div>';
|
11 |
-
} elseif (!function_exists('curl_init')) {
|
12 |
-
echo '<div class="notice sq_message"><p>';
|
13 |
-
echo sprintf(__('To be able to check the RANK please activate cURL for PHP on your server %sDetails%s', _SQ_PLUGIN_NAME_), '<a href="http://stackoverflow.com/questions/1347146/how-to-enable-curl-in-php-xampp" target="_blank">', '</a>');
|
14 |
-
echo '</p></div>';
|
15 |
-
} elseif (ini_get('open_basedir') <> '') {
|
16 |
-
echo '<div class="notice sq_message"><p>';
|
17 |
-
echo sprintf(__('To be able to check the RANK please set the "open_basedir" to NULL on your server %sDetails%s', _SQ_PLUGIN_NAME_), '<a href="http://stackoverflow.com/a/6918685" target="_blank">', '</a>');
|
18 |
-
echo '</p></div>';
|
19 |
-
}
|
20 |
-
} else {
|
21 |
-
echo '<div class="notice sq_message"><p>';
|
22 |
-
echo sprintf(__('To see the Google Ranking for each article you need to select how many pages to be checked by google rank every hour from %sSquirrly > Advanced > Google Rank Option%s. ', _SQ_PLUGIN_NAME_), '<a href="' . admin_url('admin.php?page=sq_settings') . '">', '</a>');
|
23 |
-
echo '</p></div>';
|
24 |
-
|
25 |
-
}
|
26 |
-
?>
|
27 |
-
<div id="sq_posts">
|
28 |
-
<span class="sq_icon"></span>
|
29 |
-
|
30 |
-
|
31 |
-
<div id="sq_posts_title"><?php _e('Squirrly Analytics', _SQ_PLUGIN_NAME_); ?> </div>
|
32 |
-
<div id="sq_posts_subtitle"><?php _e('Don\'t see all your pages here? Make sure you optimize them with Squirrly, so that we can track them, and display you the analytics', _SQ_PLUGIN_NAME_); ?> </div>
|
33 |
-
|
34 |
-
|
35 |
-
<?php echo $view->getNavigationTop() ?>
|
36 |
-
<table class="wp-list-table widefat fixed posts" cellspacing="0">
|
37 |
-
<thead>
|
38 |
-
<tr>
|
39 |
-
<?php echo $view->getHeaderColumns() ?>
|
40 |
-
</tr>
|
41 |
-
</thead>
|
42 |
-
|
43 |
-
<tfoot>
|
44 |
-
<tr>
|
45 |
-
<?php echo $view->getHeaderColumns() ?>
|
46 |
-
</tr>
|
47 |
-
</tfoot>
|
48 |
-
|
49 |
-
<tbody id="the-list">
|
50 |
-
<?php echo $view->getRows() ?>
|
51 |
-
</tbody>
|
52 |
-
</table>
|
53 |
-
<?php echo $view->getNavigationBottom() ?>
|
54 |
-
<?php $view->hookFooter(); ?>
|
55 |
-
<?php echo $view->getScripts(); ?>
|
56 |
-
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
themes/default/SQ_BlockSettings.php
DELETED
@@ -1,416 +0,0 @@
|
|
1 |
-
<div id="sq_settings">
|
2 |
-
<?php SQ_ObjController::getBlock('SQ_BlockSupport')->init(); ?>
|
3 |
-
<div>
|
4 |
-
<span class="sq_icon"></span>
|
5 |
-
|
6 |
-
<div id="sq_settings_title"><?php _e('Advanced Settings', _SQ_PLUGIN_NAME_); ?> </div>
|
7 |
-
<div id="sq_settings_title">
|
8 |
-
<input type="submit" name="sq_update" value="<?php _e('Save settings', _SQ_PLUGIN_NAME_) ?> »" />
|
9 |
-
</div>
|
10 |
-
</div>
|
11 |
-
<div id="sq_helpsettingscontent" class="sq_helpcontent"></div>
|
12 |
-
<div id="sq_helpsettingsside" class="sq_helpside"></div>
|
13 |
-
<div id="sq_left">
|
14 |
-
<form id="sq_settings_form" name="settings" action="" method="post" enctype="multipart/form-data">
|
15 |
-
<div id="sq_settings_body">
|
16 |
-
<fieldset>
|
17 |
-
<legend>
|
18 |
-
<span class="sq_legend_title"><?php _e('Post/Page Edit', _SQ_PLUGIN_NAME_); ?></span>
|
19 |
-
<span><?php echo sprintf(__('%sThe right method in working with Squirrly, SEO plugin%s', _SQ_PLUGIN_NAME_), '<a href="http://www.squirrly.co/the-right-premises-in-working-with-squirrly-wordpress-seo-plugin" target="_blank">', '</a>'); ?></span>
|
20 |
-
<span><?php echo sprintf(__('%sGetting inspired with Squirrly WordPress SEO plugin%s', _SQ_PLUGIN_NAME_), '<a href="http://www.squirrly.co/getting-inspired-with-squirrly-wordpress-seo-plugin" target="_blank">', '</a>'); ?></span>
|
21 |
-
|
22 |
-
<span><?php echo sprintf(__('%sThere is a New SEO Live Assistant from Squirrly%s', _SQ_PLUGIN_NAME_), '<a href="http://www.squirrly.co/there-is-a-new-seo-live-assistant-from-squirrly" target="_blank">', '</a>'); ?></span>
|
23 |
-
<span><?php echo sprintf(__('%sHow to create Human friendly content with the WordPress SEO plugin?%s', _SQ_PLUGIN_NAME_), '<a href="http://www.squirrly.co/how-to-create-human-friendly-content-with-the-a-wordpress-seo-plugin" target="_blank">', '</a>'); ?></span>
|
24 |
-
|
25 |
-
<div class="sq_badge_google">
|
26 |
-
<div class="sq_badge-image"></div>
|
27 |
-
<div class="sq_description">
|
28 |
-
<div class="sq_title">
|
29 |
-
<?php _e('Inspiration Box G17', _SQ_PLUGIN_NAME_); ?>
|
30 |
-
</div>
|
31 |
-
<div class="sq_link">
|
32 |
-
<a href="https://howto.squirrly.co/wordpress-seo/what-can-you-tell-us-about-squirrly-seo-2016-vs-squirrly-seo-2017/" target="_blank" title="<?php _e('see how this improved since 2016', _SQ_PLUGIN_NAME_); ?>">
|
33 |
-
(<?php _e('see how this improved since 2016', _SQ_PLUGIN_NAME_); ?>)
|
34 |
-
</a>
|
35 |
-
</div>
|
36 |
-
</div>
|
37 |
-
</div>
|
38 |
-
|
39 |
-
<div class="sq_badge_google">
|
40 |
-
<div class="sq_badge-image"></div>
|
41 |
-
<div class="sq_description">
|
42 |
-
<div class="sq_title">
|
43 |
-
<?php _e('Keyword Research G17', _SQ_PLUGIN_NAME_); ?>
|
44 |
-
</div>
|
45 |
-
<div class="sq_link">
|
46 |
-
<a href="https://howto.squirrly.co/wordpress-seo/what-can-you-tell-us-about-squirrly-seo-2016-vs-squirrly-seo-2017/" target="_blank" title="<?php _e('see how this improved since 2016', _SQ_PLUGIN_NAME_); ?>">
|
47 |
-
(<?php _e('see how this improved since 2016', _SQ_PLUGIN_NAME_); ?>)
|
48 |
-
</a>
|
49 |
-
</div>
|
50 |
-
</div>
|
51 |
-
</div>
|
52 |
-
|
53 |
-
<div class="sq_badge_google">
|
54 |
-
<div class="sq_badge-image"></div>
|
55 |
-
<div class="sq_description">
|
56 |
-
<div class="sq_title">
|
57 |
-
<?php _e('Inner Links G17', _SQ_PLUGIN_NAME_); ?>
|
58 |
-
</div>
|
59 |
-
<div class="sq_link">
|
60 |
-
<a href="https://howto.squirrly.co/wordpress-seo/what-can-you-tell-us-about-squirrly-seo-2016-vs-squirrly-seo-2017/" target="_blank" title="<?php _e('see how this improved since 2016', _SQ_PLUGIN_NAME_); ?>">
|
61 |
-
(<?php _e('see how this improved since 2016', _SQ_PLUGIN_NAME_); ?>)
|
62 |
-
</a>
|
63 |
-
</div>
|
64 |
-
</div>
|
65 |
-
</div>
|
66 |
-
</legend>
|
67 |
-
|
68 |
-
<div>
|
69 |
-
<div id="sq_post_type_option" class="withborder">
|
70 |
-
<p style="font-weight: bold;"><?php _e('Load Squirrly Live Assistant for', _SQ_PLUGIN_NAME_); ?>:</p>
|
71 |
-
<ul id="sq_post_types">
|
72 |
-
<li class="sq_selectall"><input type="checkbox" id="sq_selectall" />Select All</li>
|
73 |
-
<li>
|
74 |
-
<input type="checkbox" class="sq_post_types" name="sq_post_types[]" value="post" <?php echo(in_array('post', SQ_Tools::$options['sq_post_types']) ? 'checked="checked"' : ''); ?>><?php _e('Posts', _SQ_PLUGIN_NAME_); ?>
|
75 |
-
</li>
|
76 |
-
<li>
|
77 |
-
<input type="checkbox" class="sq_post_types" name="sq_post_types[]" value="page" <?php echo(in_array('page', SQ_Tools::$options['sq_post_types']) ? 'checked="checked"' : ''); ?>><?php _e('Pages', _SQ_PLUGIN_NAME_); ?>
|
78 |
-
</li>
|
79 |
-
<?php if (in_array('product', get_post_types())) { //check for ecommerce product ?>
|
80 |
-
<li>
|
81 |
-
<input type="checkbox" class="sq_post_types" name="sq_post_types[]" value="product" <?php echo(in_array('product', SQ_Tools::$options['sq_post_types']) ? 'checked="checked"' : ''); ?>><?php _e('Products', _SQ_PLUGIN_NAME_); ?>
|
82 |
-
</li>
|
83 |
-
<?php } ?>
|
84 |
-
<?php
|
85 |
-
$types = get_post_types();
|
86 |
-
foreach (array('post', 'page', 'revision', 'nav_menu_item', 'product', 'shop_order', 'shop_coupon') as $exclude) {
|
87 |
-
if (in_array($exclude, $types)) {
|
88 |
-
unset($types[$exclude]);
|
89 |
-
}
|
90 |
-
}
|
91 |
-
foreach ($types as $type) {
|
92 |
-
$type_data = get_post_type_object($type);
|
93 |
-
if (!isset($type_data->show_ui) || $type_data->show_ui != 1) {
|
94 |
-
unset($types[$type]);
|
95 |
-
} else {
|
96 |
-
//echo '<pre>' . print_r($type_data, true) . '</pre>';
|
97 |
-
?>
|
98 |
-
<li>
|
99 |
-
<input type="checkbox" class="sq_post_types" name="sq_post_types[]" value="<?php echo $type ?>" <?php echo(in_array($type, SQ_Tools::$options['sq_post_types']) ? 'checked="checked"' : ''); ?>><?php echo $type_data->labels->name; ?>
|
100 |
-
</li>
|
101 |
-
<?php
|
102 |
-
}
|
103 |
-
}
|
104 |
-
?>
|
105 |
-
</ul>
|
106 |
-
</div>
|
107 |
-
<br />
|
108 |
-
|
109 |
-
<div class="sq_option_content">
|
110 |
-
<div class="sq_switch">
|
111 |
-
<input id="sq_keyword_help1" type="radio" class="sq_switch-input" name="sq_keyword_help" value="1" <?php echo((SQ_Tools::$options['sq_keyword_help'] == 1) ? "checked" : '') ?> />
|
112 |
-
<label for="sq_keyword_help1" class="sq_switch-label sq_switch-label-off"><?php _e('Yes', _SQ_PLUGIN_NAME_); ?></label>
|
113 |
-
<input id="sq_keyword_help0" type="radio" class="sq_switch-input" name="sq_keyword_help" value="0" <?php echo((SQ_Tools::$options['sq_keyword_help'] == 0) ? "checked" : '') ?> />
|
114 |
-
<label for="sq_keyword_help0" class="sq_switch-label sq_switch-label-on"><?php _e('No', _SQ_PLUGIN_NAME_); ?></label>
|
115 |
-
<span class="sq_switch-selection"></span>
|
116 |
-
</div>
|
117 |
-
<span><?php _e('Show <strong>Squirrly Tooltips</strong> when posting a new article (e.g. "Enter a keyword").', _SQ_PLUGIN_NAME_); ?></span>
|
118 |
-
</div>
|
119 |
-
|
120 |
-
<div class="sq_option_content">
|
121 |
-
<div class="sq_switch">
|
122 |
-
<input id="sq_keyword_information1" type="radio" class="sq_switch-input" name="sq_keyword_information" value="1" <?php echo((SQ_Tools::$options['sq_keyword_information'] == 1) ? "checked" : '') ?> />
|
123 |
-
<label for="sq_keyword_information1" class="sq_switch-label sq_switch-label-off"><?php _e('Yes', _SQ_PLUGIN_NAME_); ?></label>
|
124 |
-
<input id="sq_keyword_information0" type="radio" class="sq_switch-input" name="sq_keyword_information" value="0" <?php echo((SQ_Tools::$options['sq_keyword_information'] == 0) ? "checked" : '') ?> />
|
125 |
-
<label for="sq_keyword_information0" class="sq_switch-label sq_switch-label-on"><?php _e('No', _SQ_PLUGIN_NAME_); ?></label>
|
126 |
-
<span class="sq_switch-selection"></span>
|
127 |
-
</div>
|
128 |
-
<span><?php _e('Always show <strong>Keyword Research</strong> about the selected keyword.', _SQ_PLUGIN_NAME_); ?></span>
|
129 |
-
</div>
|
130 |
-
|
131 |
-
<div class="sq_option_content">
|
132 |
-
<div class="sq_switch">
|
133 |
-
<input id="sq_force_savepost1" type="radio" class="sq_switch-input" name="sq_force_savepost" value="1" <?php echo((SQ_Tools::$options['sq_force_savepost'] == 1) ? "checked" : '') ?> />
|
134 |
-
<label for="sq_force_savepost1" class="sq_switch-label sq_switch-label-off"><?php _e('Yes', _SQ_PLUGIN_NAME_); ?></label>
|
135 |
-
<input id="sq_force_savepost0" type="radio" class="sq_switch-input" name="sq_force_savepost" value="0" <?php echo((SQ_Tools::$options['sq_force_savepost'] == 0) ? "checked" : '') ?> />
|
136 |
-
<label for="sq_force_savepost0" class="sq_switch-label sq_switch-label-on"><?php _e('No', _SQ_PLUGIN_NAME_); ?></label>
|
137 |
-
<span class="sq_switch-selection"></span>
|
138 |
-
</div>
|
139 |
-
<span><?php _e('Send optimization data to Squirrly API when the post is saved (don\'t use cron)', _SQ_PLUGIN_NAME_); ?></span>
|
140 |
-
</div>
|
141 |
-
|
142 |
-
<div class="sq_option_content">
|
143 |
-
<div class="sq_switch">
|
144 |
-
<input id="sq_sla1" type="radio" class="sq_switch-input" name="sq_sla" value="1" <?php echo((SQ_Tools::$options['sq_sla'] == 1) ? "checked" : '') ?> />
|
145 |
-
<label for="sq_sla1" class="sq_switch-label sq_switch-label-off"><?php _e('Yes', _SQ_PLUGIN_NAME_); ?></label>
|
146 |
-
<input id="sq_sla0" type="radio" class="sq_switch-input" name="sq_sla" value="0" <?php echo((SQ_Tools::$options['sq_sla'] == 0) ? "checked" : '') ?> />
|
147 |
-
<label for="sq_sla0" class="sq_switch-label sq_switch-label-on"><?php _e('No', _SQ_PLUGIN_NAME_); ?></label>
|
148 |
-
<span class="sq_switch-selection"></span>
|
149 |
-
</div>
|
150 |
-
<span><?php _e('Use <strong> the NEW version of the SEO Live Assistant</strong>.', _SQ_PLUGIN_NAME_); ?></span>
|
151 |
-
</div>
|
152 |
-
<p></p>
|
153 |
-
|
154 |
-
<div class="sq_option_content withbordertop">
|
155 |
-
<div class="sq_switch">
|
156 |
-
<input id="sq_keywordtag1" type="radio" class="sq_switch-input" name="sq_keywordtag" value="1" <?php echo((SQ_Tools::$options['sq_keywordtag'] == 1) ? "checked" : '') ?> />
|
157 |
-
<label for="sq_keywordtag1" class="sq_switch-label sq_switch-label-off"><?php _e('Yes', _SQ_PLUGIN_NAME_); ?></label>
|
158 |
-
<input id="sq_keywordtag0" type="radio" class="sq_switch-input" name="sq_keywordtag" value="0" <?php echo((SQ_Tools::$options['sq_keywordtag'] == 0) ? "checked" : '') ?> />
|
159 |
-
<label for="sq_keywordtag0" class="sq_switch-label sq_switch-label-on"><?php _e('No', _SQ_PLUGIN_NAME_); ?></label>
|
160 |
-
<span class="sq_switch-selection"></span>
|
161 |
-
</div>
|
162 |
-
<span><?php _e('Add the Post tags in <strong>Keyword META</strong>.', _SQ_PLUGIN_NAME_); ?></span>
|
163 |
-
</div>
|
164 |
-
|
165 |
-
<div class="sq_option_content">
|
166 |
-
<div class="sq_switch">
|
167 |
-
<input id="sq_local_images1" type="radio" class="sq_switch-input" name="sq_local_images" value="1" <?php echo((SQ_Tools::$options['sq_local_images'] == 1) ? "checked" : '') ?> />
|
168 |
-
<label for="sq_local_images1" class="sq_switch-label sq_switch-label-off"><?php _e('Yes', _SQ_PLUGIN_NAME_); ?></label>
|
169 |
-
<input id="sq_local_images0" type="radio" class="sq_switch-input" name="sq_local_images" value="0" <?php echo((SQ_Tools::$options['sq_local_images'] == 0) ? "checked" : '') ?> />
|
170 |
-
<label for="sq_local_images0" class="sq_switch-label sq_switch-label-on"><?php _e('No', _SQ_PLUGIN_NAME_); ?></label>
|
171 |
-
<span class="sq_switch-selection"></span>
|
172 |
-
</div>
|
173 |
-
<span><?php _e('Download <strong>remote images</strong> in your <strong>Media Library</strong> for the new posts.', _SQ_PLUGIN_NAME_); ?></span>
|
174 |
-
</div>
|
175 |
-
|
176 |
-
|
177 |
-
<div class="sq_option_content">
|
178 |
-
<div class="sq_switch">
|
179 |
-
<input id="sq_url_fix1" type="radio" class="sq_switch-input" name="sq_url_fix" value="1" <?php echo((SQ_Tools::$options['sq_url_fix'] == 1) ? "checked" : '') ?> />
|
180 |
-
<label for="sq_url_fix1" class="sq_switch-label sq_switch-label-off"><?php _e('Yes', _SQ_PLUGIN_NAME_); ?></label>
|
181 |
-
<input id="sq_url_fix0" type="radio" class="sq_switch-input" name="sq_url_fix" value="0" <?php echo((SQ_Tools::$options['sq_url_fix'] == 0) ? "checked" : '') ?> />
|
182 |
-
<label for="sq_url_fix0" class="sq_switch-label sq_switch-label-on"><?php _e('No', _SQ_PLUGIN_NAME_); ?></label>
|
183 |
-
<span class="sq_switch-selection"></span>
|
184 |
-
</div>
|
185 |
-
<span><?php _e('Correct my <strong>feed links</strong> and <strong>images</strong> (convert from relative to absolute).', _SQ_PLUGIN_NAME_); ?></span>
|
186 |
-
</div>
|
187 |
-
|
188 |
-
<div class="sq_option_content"></div>
|
189 |
-
</div>
|
190 |
-
</fieldset>
|
191 |
-
|
192 |
-
<fieldset>
|
193 |
-
<legend>
|
194 |
-
<span class="sq_legend_title"><?php _e('Google Rank Options', _SQ_PLUGIN_NAME_); ?></span>
|
195 |
-
<span><?php echo sprintf(__('%sCountry targeting%s', _SQ_PLUGIN_NAME_), '<a href="https://support.google.com/webmasters/answer/62399?hl=en" target="_blank">', '</a>'); ?></span>
|
196 |
-
<span><?php echo sprintf(__('%sPowerful SEO Tool For Strong Google Rankings%s', _SQ_PLUGIN_NAME_), '<a href="http://www.squirrly.co/serp-checker" target="_blank">', '</a>'); ?></span>
|
197 |
-
|
198 |
-
|
199 |
-
</legend>
|
200 |
-
<div>
|
201 |
-
<div class="sq_option_content">
|
202 |
-
<p>
|
203 |
-
<span><?php _e('Select the google extension for which Squirrly will check the google rank', _SQ_PLUGIN_NAME_); ?></span>
|
204 |
-
</p>
|
205 |
-
|
206 |
-
<div class="abh_select withborder">
|
207 |
-
<select id="sq_google_country" name="sq_google_country">
|
208 |
-
<option value="com"><?php _e('Default', _SQ_PLUGIN_NAME_); ?> - Google.com (http://www.google.com/)</option>
|
209 |
-
<option value="as"><?php _e('American Samoa', _SQ_PLUGIN_NAME_); ?> (http://www.google.as/)</option>
|
210 |
-
<option value=".off.ai"><?php _e('Anguilla', _SQ_PLUGIN_NAME_); ?> (http://www.google.off.ai/)</option>
|
211 |
-
<option value="com.ag"><?php _e('Antigua and Barbuda', _SQ_PLUGIN_NAME_); ?> (http://www.google.com.ag/)</option>
|
212 |
-
<option value="com.ar"><?php _e('Argentina', _SQ_PLUGIN_NAME_); ?> (http://www.google.com.ar/)</option>
|
213 |
-
<option value="com.au"><?php _e('Australia', _SQ_PLUGIN_NAME_); ?> (http://www.google.com.au/)</option>
|
214 |
-
<option value="at"><?php _e('Austria', _SQ_PLUGIN_NAME_); ?> (http://www.google.at/)</option>
|
215 |
-
<option value="az"><?php _e('Azerbaijan', 'seo-rank-reporter'); ?> (http://www.google.az/)</option>
|
216 |
-
<option value="be"><?php _e('Belgium', _SQ_PLUGIN_NAME_); ?> (http://www.google.be/)</option>
|
217 |
-
<option value="com.br"><?php _e('Brazil', _SQ_PLUGIN_NAME_); ?> (http://www.google.com.br/)</option>
|
218 |
-
<option value="vg"><?php _e('British Virgin Islands', _SQ_PLUGIN_NAME_); ?> (http://www.google.vg/)</option>
|
219 |
-
<option value="bi"><?php _e('Burundi', _SQ_PLUGIN_NAME_); ?> (http://www.google.bi/)</option>
|
220 |
-
<option value="bg"><?php _e('Bulgaria', _SQ_PLUGIN_NAME_); ?> (http://www.google.bg/)</option>
|
221 |
-
<option value="ca"><?php _e('Canada', _SQ_PLUGIN_NAME_); ?> (http://www.google.ca/)</option>
|
222 |
-
<option value="td"><?php _e('Chad', _SQ_PLUGIN_NAME_); ?> (http://www.google.td/)</option>
|
223 |
-
<option value="cl"><?php _e('Chile', _SQ_PLUGIN_NAME_); ?> (http://www.google.cl/)</option>
|
224 |
-
<option value="com.co"><?php _e('Colombia', _SQ_PLUGIN_NAME_); ?> (http://www.google.com.co/)</option>
|
225 |
-
<option value="co.cr"><?php _e('Costa Rica', _SQ_PLUGIN_NAME_); ?> (http://www.google.co.cr/)</option>
|
226 |
-
<option value="ci"><?php _e('Côte d\'Ivoire', _SQ_PLUGIN_NAME_); ?> (http://www.google.ci/)</option>
|
227 |
-
<option value="com.cu"><?php _e('Cuba', _SQ_PLUGIN_NAME_); ?> (http://www.google.com.cu/)</option>
|
228 |
-
<option value="cz"><?php _e('Czech Republic', _SQ_PLUGIN_NAME_); ?> (http://www.google.cz/)</option>
|
229 |
-
<option value="cd"><?php _e('Dem. Rep. of the Congo', _SQ_PLUGIN_NAME_); ?> (http://www.google.cd/)</option>
|
230 |
-
<option value="dk"><?php _e('Denmark', _SQ_PLUGIN_NAME_); ?> (http://www.google.dk/)</option>
|
231 |
-
<option value="dj"><?php _e('Djibouti', _SQ_PLUGIN_NAME_); ?> (http://www.google.dj/)</option>
|
232 |
-
<option value="com.do"><?php _e('Dominican Republic', _SQ_PLUGIN_NAME_); ?> (http://www.google.com.do/)</option>
|
233 |
-
<option value="com.ec"><?php _e('Ecuador', _SQ_PLUGIN_NAME_); ?> (http://www.google.com.ec/)</option>
|
234 |
-
<option value="com.sv"><?php _e('El Salvador', _SQ_PLUGIN_NAME_); ?> (http://www.google.com.sv/)</option>
|
235 |
-
<option value="ee"><?php _e('Estonia', _SQ_PLUGIN_NAME_); ?> (http://www.google.ee/)</option>
|
236 |
-
<option value="fm"><?php _e('Federated States of Micronesia', _SQ_PLUGIN_NAME_); ?> (http://www.google.fm/)</option>
|
237 |
-
<option value="com.fj"><?php _e('Fiji', _SQ_PLUGIN_NAME_); ?> (http://www.google.com.fj/)</option>
|
238 |
-
<option value="fi"><?php _e('Finland', _SQ_PLUGIN_NAME_); ?> (http://www.google.fi/)</option>
|
239 |
-
<option value="fr"><?php _e('France', _SQ_PLUGIN_NAME_); ?> (http://www.google.fr/)</option>
|
240 |
-
<option value="gm"><?php _e('The Gambia', _SQ_PLUGIN_NAME_); ?> (http://www.google.gm/)</option>
|
241 |
-
<option value="ge"><?php _e('Georgia', _SQ_PLUGIN_NAME_); ?> (http://www.google.ge/)</option>
|
242 |
-
<option value="de"><?php _e('Germany', _SQ_PLUGIN_NAME_); ?> (http://www.google.de/)</option>
|
243 |
-
<option value="com.gi"><?php _e('Gibraltar', _SQ_PLUGIN_NAME_); ?> (http://www.google.com.gi/)</option>
|
244 |
-
<option value="com.gr"><?php _e('Greece', _SQ_PLUGIN_NAME_); ?> (http://www.google.com.gr/)</option>
|
245 |
-
<option value="gl"><?php _e('Greenland', _SQ_PLUGIN_NAME_); ?> (http://www.google.gl/)</option>
|
246 |
-
<option value="gg"><?php _e('Guernsey', _SQ_PLUGIN_NAME_); ?> (http://www.google.gg/)</option>
|
247 |
-
<option value="hn"><?php _e('Honduras', _SQ_PLUGIN_NAME_); ?> (http://www.google.hn/)</option>
|
248 |
-
<option value="com.hk"><?php _e('Hong Kong', _SQ_PLUGIN_NAME_); ?> (http://www.google.com.hk/)</option>
|
249 |
-
<option value="co.hu"><?php _e('Hungary', _SQ_PLUGIN_NAME_); ?> (http://www.google.co.hu/)</option>
|
250 |
-
<option value="co.in"><?php _e('India', _SQ_PLUGIN_NAME_); ?> (http://www.google.co.in/)</option>
|
251 |
-
<option value="co.id"><?php _e('Indonesia', _SQ_PLUGIN_NAME_); ?> (http://www.google.co.id/)</option>
|
252 |
-
<option value="ie"><?php _e('Ireland', _SQ_PLUGIN_NAME_); ?> (http://www.google.ie/)</option>
|
253 |
-
<option value="co.im"><?php _e('Isle of Man', _SQ_PLUGIN_NAME_); ?> (http://www.google.co.im/)</option>
|
254 |
-
<option value="co.il"><?php _e('Israel', _SQ_PLUGIN_NAME_); ?> (http://www.google.co.il/)</option>
|
255 |
-
<option value="it"><?php _e('Italy', _SQ_PLUGIN_NAME_); ?> (http://www.google.it/)</option>
|
256 |
-
<option value="com.jm"><?php _e('Jamaica', _SQ_PLUGIN_NAME_); ?> (http://www.google.com.jm/)</option>
|
257 |
-
<option value="co.jp"><?php _e('Japan', _SQ_PLUGIN_NAME_); ?> (http://www.google.co.jp/)</option>
|
258 |
-
<option value="co.je"><?php _e('Jersey', _SQ_PLUGIN_NAME_); ?> (http://www.google.co.je/)</option>
|
259 |
-
<option value="kz"><?php _e('Kazakhstan', _SQ_PLUGIN_NAME_); ?> (http://www.google.kz/)</option>
|
260 |
-
<option value="co.kr"><?php _e('Korea', _SQ_PLUGIN_NAME_); ?> (http://www.google.co.kr/)</option>
|
261 |
-
<option value="lv"><?php _e('Latvia', _SQ_PLUGIN_NAME_); ?> (http://www.google.lv/)</option>
|
262 |
-
<option value="co.ls"><?php _e('Lesotho', _SQ_PLUGIN_NAME_); ?> (http://www.google.co.ls/)</option>
|
263 |
-
<option value="li"><?php _e('Liechtenstein', _SQ_PLUGIN_NAME_); ?> (http://www.google.li/)</option>
|
264 |
-
<option value="lt"><?php _e('Lithuania', _SQ_PLUGIN_NAME_); ?> (http://www.google.lt/)</option>
|
265 |
-
<option value="lu"><?php _e('Luxembourg', _SQ_PLUGIN_NAME_); ?> (http://www.google.lu/)</option>
|
266 |
-
<option value="mw"><?php _e('Malawi', _SQ_PLUGIN_NAME_); ?> (http://www.google.mw/)</option>
|
267 |
-
<option value="com.my"><?php _e('Malaysia', _SQ_PLUGIN_NAME_); ?> (http://www.google.com.my/)</option>
|
268 |
-
<option value="com.mt"><?php _e('Malta', _SQ_PLUGIN_NAME_); ?> (http://www.google.com.mt/)</option>
|
269 |
-
<option value="mu"><?php _e('Mauritius', _SQ_PLUGIN_NAME_); ?> (http://www.google.mu/)</option>
|
270 |
-
<option value="com.mx"><?php _e('México', _SQ_PLUGIN_NAME_); ?> (http://www.google.com.mx/)</option>
|
271 |
-
<option value="ms"><?php _e('Montserrat', _SQ_PLUGIN_NAME_); ?> (http://www.google.ms/)</option>
|
272 |
-
<option value="com.na"><?php _e('Namibia', _SQ_PLUGIN_NAME_); ?> (http://www.google.com.na/)</option>
|
273 |
-
<option value="com.np"><?php _e('Nepal', _SQ_PLUGIN_NAME_); ?> (http://www.google.com.np/)</option>
|
274 |
-
<option value="nl"><?php _e('Netherlands', _SQ_PLUGIN_NAME_); ?> (http://www.google.nl/)</option>
|
275 |
-
<option value="co.nz"><?php _e('New Zealand', _SQ_PLUGIN_NAME_); ?> (http://www.google.co.nz/)</option>
|
276 |
-
<option value="com.ni"><?php _e('Nicaragua', _SQ_PLUGIN_NAME_); ?> (http://www.google.com.ni/)</option>
|
277 |
-
<option value="com.nf"><?php _e('Norfolk Island', _SQ_PLUGIN_NAME_); ?> (http://www.google.com.nf/)</option>
|
278 |
-
<option value="no"><?php _e('Norway', _SQ_PLUGIN_NAME_); ?> (http://www.google.no/)</option>
|
279 |
-
<option value="com.pk"><?php _e('Pakistan', _SQ_PLUGIN_NAME_); ?> (http://www.google.com.pk/)</option>
|
280 |
-
<option value="com.pa"><?php _e('Panamá', _SQ_PLUGIN_NAME_); ?> (http://www.google.com.pa/)</option>
|
281 |
-
<option value="com.py"><?php _e('Paraguay', _SQ_PLUGIN_NAME_); ?> (http://www.google.com.py/)</option>
|
282 |
-
<option value="com.pe"><?php _e('Perú', _SQ_PLUGIN_NAME_); ?> (http://www.google.com.pe/)</option>
|
283 |
-
<option value="com.ph"><?php _e('Philippines', _SQ_PLUGIN_NAME_); ?> (http://www.google.com.ph/)</option>
|
284 |
-
<option value="pn"><?php _e('Pitcairn Islands', _SQ_PLUGIN_NAME_); ?> (http://www.google.pn/)</option>
|
285 |
-
<option value="pl"><?php _e('Poland', _SQ_PLUGIN_NAME_); ?> (http://www.google.pl/)</option>
|
286 |
-
<option value="pt"><?php _e('Portugal', _SQ_PLUGIN_NAME_); ?> (http://www.google.pt/)</option>
|
287 |
-
<option value="com.pr"><?php _e('Puerto Rico', _SQ_PLUGIN_NAME_); ?> (http://www.google.com.pr/)</option>
|
288 |
-
<option value="cg"><?php _e('Rep. of the Congo', _SQ_PLUGIN_NAME_); ?> (http://www.google.cg/)</option>
|
289 |
-
<option value="ro"><?php _e('Romania', _SQ_PLUGIN_NAME_); ?> (http://www.google.ro/)</option>
|
290 |
-
<option value="ru"><?php _e('Russia', _SQ_PLUGIN_NAME_); ?> (http://www.google.ru/)</option>
|
291 |
-
<option value="rw"><?php _e('Rwanda', _SQ_PLUGIN_NAME_); ?> (http://www.google.rw/)</option>
|
292 |
-
<option value="sh"><?php _e('Saint Helena', _SQ_PLUGIN_NAME_); ?> (http://www.google.sh/)</option>
|
293 |
-
<option value="sm"><?php _e('San Marino', _SQ_PLUGIN_NAME_); ?> (http://www.google.sm/)</option>
|
294 |
-
<option value="com.sa"><?php _e('Saudi Arabia', _SQ_PLUGIN_NAME_); ?> (http://www.google.com.sa/)</option>
|
295 |
-
<option value="com.sg"><?php _e('Singapore', _SQ_PLUGIN_NAME_); ?> (http://www.google.com.sg/)</option>
|
296 |
-
<option value="sk"><?php _e('Slovakia', _SQ_PLUGIN_NAME_); ?> (http://www.google.sk/)</option>
|
297 |
-
<option value="co.za"><?php _e('South Africa', _SQ_PLUGIN_NAME_); ?> (http://www.google.co.za/)</option>
|
298 |
-
<option value="es"><?php _e('Spain', _SQ_PLUGIN_NAME_); ?> (http://www.google.es/)</option>
|
299 |
-
<option value="lk"><?php _e('Sri Lanka', _SQ_PLUGIN_NAME_); ?> (http://www.google.lk/)</option>
|
300 |
-
<option value="se"><?php _e('Sweden', _SQ_PLUGIN_NAME_); ?> (http://www.google.se/)</option>
|
301 |
-
<option value="ch"><?php _e('Switzerland', _SQ_PLUGIN_NAME_); ?> (http://www.google.ch/)</option>
|
302 |
-
<option value="com.tw"><?php _e('Taiwan', _SQ_PLUGIN_NAME_); ?> (http://www.google.com.tw/)</option>
|
303 |
-
<option value="co.th"><?php _e('Thailand', _SQ_PLUGIN_NAME_); ?> (http://www.google.co.th/)</option>
|
304 |
-
<option value="tt"><?php _e('Trinidad and Tobago', _SQ_PLUGIN_NAME_); ?> (http://www.google.tt/)</option>
|
305 |
-
<option value="com.tr"><?php _e('Turkey', _SQ_PLUGIN_NAME_); ?> (http://www.google.com.tr/)</option>
|
306 |
-
<option value="com.ua"><?php _e('Ukraine', _SQ_PLUGIN_NAME_); ?> (http://www.google.com.ua/)</option>
|
307 |
-
<option value="ae"><?php _e('United Arab Emirates', _SQ_PLUGIN_NAME_); ?> (http://www.google.ae/)</option>
|
308 |
-
<option value="co.uk"><?php _e('United Kingdom', _SQ_PLUGIN_NAME_); ?> (http://www.google.co.uk/)</option>
|
309 |
-
v
|
310 |
-
<option value="us"><?php _e('United States', _SQ_PLUGIN_NAME_); ?> (http://www.google.us/)</option>
|
311 |
-
<option value="com.uy"><?php _e('Uruguay', _SQ_PLUGIN_NAME_); ?> (http://www.google.com.uy/)</option>
|
312 |
-
<option value="uz"><?php _e('Uzbekistan', _SQ_PLUGIN_NAME_); ?> (http://www.google.uz/)</option>
|
313 |
-
<option value="vu"><?php _e('Vanuatu', _SQ_PLUGIN_NAME_); ?> (http://www.google.vu/)</option>
|
314 |
-
<option value="co.ve"><?php _e('Venezuela', _SQ_PLUGIN_NAME_); ?> (http://www.google.co.ve/)</option>
|
315 |
-
<option value="com.vn"><?php _e('Vietnam', _SQ_PLUGIN_NAME_); ?> (http://www.google.com.vn/)</option>
|
316 |
-
</select>
|
317 |
-
</div>
|
318 |
-
<p>
|
319 |
-
<span><?php echo sprintf(__('Select how many pages to be checked by google rank every hour. %s(not recommended for shared hosting plan)%s', _SQ_PLUGIN_NAME_), '<br /><span style="color:#aaa;font-size:12px;">', '</span>'); ?></span>
|
320 |
-
</p>
|
321 |
-
|
322 |
-
<div class="withborder">
|
323 |
-
<select id="sq_google_ranksperhour" name="sq_google_ranksperhour">
|
324 |
-
<?php for ($i = 0; $i <= 5; $i++) {
|
325 |
-
if ($i == 1) {
|
326 |
-
$text = __('page', _SQ_PLUGIN_NAME_);
|
327 |
-
} else {
|
328 |
-
$text = __('pages', _SQ_PLUGIN_NAME_);
|
329 |
-
}
|
330 |
-
if ((int)SQ_Tools::$options['sq_google_ranksperhour'] > 5) {
|
331 |
-
SQ_Tools::$options['sq_google_ranksperhour'] = 5;
|
332 |
-
}
|
333 |
-
?>
|
334 |
-
<option value="<?php echo $i ?>" <?php echo((SQ_Tools::$options['sq_google_ranksperhour'] == $i) ? "selected='selected'" : '') ?>><?php echo $i . ' ' . $text . '/' . __('h', _SQ_PLUGIN_NAME_) ?> </option>
|
335 |
-
<?php } ?>
|
336 |
-
</select>
|
337 |
-
|
338 |
-
</div>
|
339 |
-
|
340 |
-
<div class="sq_option_content">
|
341 |
-
<div class="sq_switch">
|
342 |
-
<input id="sq_google_country_strict1" type="radio" class="sq_switch-input" name="sq_google_country_strict" value="1" <?php echo((SQ_Tools::$options['sq_google_country_strict'] == 1) ? "checked" : '') ?> />
|
343 |
-
<label for="sq_google_country_strict1" class="sq_switch-label sq_switch-label-off"><?php _e('Yes', _SQ_PLUGIN_NAME_); ?></label>
|
344 |
-
<input id="sq_google_country_strict0" type="radio" class="sq_switch-input" name="sq_google_country_strict" value="0" <?php echo((SQ_Tools::$options['sq_google_country_strict'] == 0) ? "checked" : '') ?> />
|
345 |
-
<label for="sq_google_country_strict0" class="sq_switch-label sq_switch-label-on"><?php _e('No', _SQ_PLUGIN_NAME_); ?></label>
|
346 |
-
<span class="sq_switch-selection"></span>
|
347 |
-
</div>
|
348 |
-
<span><?php _e('Restricts search results to results originating in the above particular country.', _SQ_PLUGIN_NAME_); ?></span>
|
349 |
-
</div>
|
350 |
-
|
351 |
-
|
352 |
-
</div>
|
353 |
-
</div>
|
354 |
-
</fieldset>
|
355 |
-
|
356 |
-
<fieldset id="sq_measure_success">
|
357 |
-
<legend>
|
358 |
-
<span class="sq_legend_title"><?php _e('Measure Your Success', _SQ_PLUGIN_NAME_); ?></span>
|
359 |
-
<span><?php echo sprintf(__('%sHow to set the Google Webmaster Tool%s', _SQ_PLUGIN_NAME_), '<a href="http://howto.squirrly.co/wordpress-seo/how-to-set-the-google-webmaster-tool/" target="_blank">', '</a>'); ?></span>
|
360 |
-
<span><?php echo sprintf(__('%sBest practices to help Google find, crawl, and index your site%s', _SQ_PLUGIN_NAME_), '<a href="https://support.google.com/webmasters/answer/35769?hl=en" target="_blank">', '</a>'); ?></span>
|
361 |
-
<span><?php echo sprintf(__('%sBing Webmaster Tools Help & How-To Center%s', _SQ_PLUGIN_NAME_), '<a href="http://www.bing.com/webmaster/help/help-center-661b2d18" target="_blank">', '</a>'); ?></span>
|
362 |
-
|
363 |
-
</legend>
|
364 |
-
<div>
|
365 |
-
<p class="withborder withcode">
|
366 |
-
<span class="sq_icon sq_icon_googlewt"></span>
|
367 |
-
<?php echo sprintf(__('Google META verification code for %sWebmaster Tool%s:', _SQ_PLUGIN_NAME_), '<a href="https://www.google.com/webmasters" target="_blank">', '</a>'); ?>
|
368 |
-
<br><strong><input type="text" name="sq_google_wt" value="<?php echo((SQ_Tools::$options['sq_google_wt'] <> '') ? SQ_Tools::$options['sq_google_wt'] : '') ?>" size="15" /> (e.g. <meta name="google-site-verification" content="XXXXXXXXXXXXXXXXXX" />)</strong>
|
369 |
-
</p>
|
370 |
-
|
371 |
-
<p class="withborder withcode">
|
372 |
-
<span class="sq_icon sq_icon_bingwt"></span>
|
373 |
-
<?php echo sprintf(__('Bing META code (for %sWebmaster Tool%s ):', _SQ_PLUGIN_NAME_), '<a href="http://www.bing.com/toolbox/webmaster/" target="_blank">', '</a>'); ?>
|
374 |
-
<br><strong>
|
375 |
-
<input type="text" name="sq_bing_wt" value="<?php echo((SQ_Tools::$options['sq_bing_wt'] <> '') ? SQ_Tools::$options['sq_bing_wt'] : '') ?>" size="15" /> (e.g. <meta name="msvalidate.01" content="XXXXXXXXXXXXXXXXXX" />)</strong>
|
376 |
-
</p>
|
377 |
-
|
378 |
-
<p class="withborder withcode">
|
379 |
-
<span class="sq_icon sq_icon_alexat"></span>
|
380 |
-
<?php echo sprintf(__('Alexa META code (for %sAlexa Tool%s ):', _SQ_PLUGIN_NAME_), '<a href="http://www.alexa.com/pro/subscription/signup?tsver=0&puid=200" target="_blank">', '</a>'); ?>
|
381 |
-
<br><strong><input type="text" name="sq_alexa" value="<?php echo((SQ_Tools::$options['sq_alexa'] <> '') ? SQ_Tools::$options['sq_alexa'] : '') ?>" size="15" /> (e.g. <meta name="alexaVerifyID" content="XXXXXXXXXXXXXXXXXX" />)</strong>
|
382 |
-
</p>
|
383 |
-
</div>
|
384 |
-
</fieldset>
|
385 |
-
|
386 |
-
<div id="sq_settings_submit">
|
387 |
-
<input type="hidden" name="action" value="sq_settings_update" />
|
388 |
-
<input type="hidden" name="nonce" value="<?php echo wp_create_nonce(_SQ_NONCE_ID_); ?>" />
|
389 |
-
<input type="submit" name="sq_update" value="<?php _e('Save settings', _SQ_PLUGIN_NAME_) ?> »" />
|
390 |
-
</div>
|
391 |
-
</div>
|
392 |
-
</form>
|
393 |
-
|
394 |
-
<div class="sq_settings_backup">
|
395 |
-
<form action="" method="POST">
|
396 |
-
<input type="hidden" name="action" value="sq_backup" />
|
397 |
-
<input type="hidden" name="nonce" value="<?php echo wp_create_nonce(_SQ_NONCE_ID_); ?>" />
|
398 |
-
<input type="submit" class="sq_button" name="sq_backup" value="<?php _e('Backup Settings', _SQ_PLUGIN_NAME_) ?>" />
|
399 |
-
<input type="button" class="sq_button sq_restore" name="sq_restore" value="<?php _e('Restore Settings', _SQ_PLUGIN_NAME_) ?>" />
|
400 |
-
</form>
|
401 |
-
</div>
|
402 |
-
|
403 |
-
<div class="sq_settings_restore sq_popup" style="display: none">
|
404 |
-
<span class="sq_close">x</span>
|
405 |
-
<span><?php _e('Upload the file with the saved Squirrly Settings', _SQ_PLUGIN_NAME_) ?></span>
|
406 |
-
|
407 |
-
<form action="" method="POST" enctype="multipart/form-data">
|
408 |
-
<input type="hidden" name="action" value="sq_restore" />
|
409 |
-
<input type="file" name="sq_options" id="favicon" style="float: left;" />
|
410 |
-
<input type="hidden" name="nonce" value="<?php echo wp_create_nonce(_SQ_NONCE_ID_); ?>" />
|
411 |
-
<input type="submit" style="margin-top: 10px;" class="sq_button" name="sq_restore" value="<?php _e('Restore Backup', _SQ_PLUGIN_NAME_) ?>" />
|
412 |
-
</form>
|
413 |
-
</div>
|
414 |
-
</div>
|
415 |
-
|
416 |
-
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
themes/default/SQ_BlockSettingsSeo.php
DELETED
@@ -1,900 +0,0 @@
|
|
1 |
-
<div id="sq_settings">
|
2 |
-
<?php SQ_ObjController::getBlock('SQ_BlockSupport')->init(); ?>
|
3 |
-
<div>
|
4 |
-
<span class="sq_icon"></span>
|
5 |
-
<div id="sq_settings_title"><?php _e('SEO', _SQ_PLUGIN_NAME_); ?> </div>
|
6 |
-
<div id="sq_settings_title">
|
7 |
-
<input type="submit" name="sq_update" value="<?php _e('Save SEO', _SQ_PLUGIN_NAME_) ?> »" />
|
8 |
-
<?php if (SQ_Tools::$options['ignore_warn'] == 0) { ?>
|
9 |
-
<div class="sq_checkissues"><?php _e('Check for SEO issues in your site', _SQ_PLUGIN_NAME_); ?></div>
|
10 |
-
<?php } ?>
|
11 |
-
</div>
|
12 |
-
</div>
|
13 |
-
<div id="sq_helpsettingsseocontent" class="sq_helpcontent"></div>
|
14 |
-
<div id="sq_helpsettingsseoside" class="sq_helpside"></div>
|
15 |
-
|
16 |
-
<div id="sq_left">
|
17 |
-
<form id="sq_settings_form" name="settings" action="" method="post" enctype="multipart/form-data">
|
18 |
-
<div id="sq_settings_body">
|
19 |
-
<fieldset>
|
20 |
-
<legend>
|
21 |
-
<span class="sq_legend_title"><?php _e('Let Squirrly SEO optimize this blog', _SQ_PLUGIN_NAME_); ?></span>
|
22 |
-
<span><?php echo sprintf(__('%sIs Squirrly SEO better then WordPress SEO by Yoast?%s', _SQ_PLUGIN_NAME_), '<a href="http://www.squirrly.co/why_is_squirrly_seo_better_then_wordpress_seo_by_yoast-pagblog-article_id61980-html" target="_blank">', '</a>'); ?></span>
|
23 |
-
|
24 |
-
<span><?php _e('Activate the built-in SEO settings from Squirrly by switching Yes below. <strong>Works well with Multisites and Ecommerce.</strong>', _SQ_PLUGIN_NAME_); ?></span><br />
|
25 |
-
<div class="sq_option_content">
|
26 |
-
<div class="sq_switch">
|
27 |
-
<input id="sq_use_on" type="radio" class="sq_switch-input" name="sq_use" value="1" <?php echo((SQ_Tools::$options['sq_use'] == 1) ? "checked" : '') ?> />
|
28 |
-
<label for="sq_use_on" class="sq_switch-label sq_switch-label-off"><?php _e('Yes', _SQ_PLUGIN_NAME_); ?></label>
|
29 |
-
<input id="sq_use_off" type="radio" class="sq_switch-input" name="sq_use" value="0" <?php echo((!SQ_Tools::$options['sq_use']) ? "checked" : '') ?> />
|
30 |
-
<label for="sq_use_off" class="sq_switch-label sq_switch-label-on"><?php _e('No', _SQ_PLUGIN_NAME_); ?></label>
|
31 |
-
<span class="sq_switch-selection"></span>
|
32 |
-
</div>
|
33 |
-
</div>
|
34 |
-
<div class="sq_badge_google">
|
35 |
-
<div class="sq_badge-image"></div>
|
36 |
-
<div class="sq_description">
|
37 |
-
<div class="sq_title">
|
38 |
-
<?php _e('New SEO Settings For Google 2017', _SQ_PLUGIN_NAME_); ?>
|
39 |
-
</div>
|
40 |
-
<div class="sq_link">
|
41 |
-
<a href="https://howto.squirrly.co/wordpress-seo/what-can-you-tell-us-about-squirrly-seo-2016-vs-squirrly-seo-2017/" target="_blank" title="<?php _e('see how this improved since 2016', _SQ_PLUGIN_NAME_); ?>"> (<?php _e('see how this improved since 2016', _SQ_PLUGIN_NAME_); ?>) </a>
|
42 |
-
</div>
|
43 |
-
</div>
|
44 |
-
</div>
|
45 |
-
|
46 |
-
<div class="sq_badge_google">
|
47 |
-
<div class="sq_badge-image"></div>
|
48 |
-
<div class="sq_description">
|
49 |
-
<div class="sq_title">
|
50 |
-
<?php _e('Fastest SEO Plugin in 2017', _SQ_PLUGIN_NAME_); ?>
|
51 |
-
</div>
|
52 |
-
<div class="sq_link">
|
53 |
-
<a href="https://howto.squirrly.co/wordpress-seo/what-can-you-tell-us-about-squirrly-seo-2016-vs-squirrly-seo-2017/" target="_blank" title="<?php _e('see how this improved since 2016', _SQ_PLUGIN_NAME_); ?>"> (<?php _e('see how this improved since 2016', _SQ_PLUGIN_NAME_); ?>) </a>
|
54 |
-
</div>
|
55 |
-
</div>
|
56 |
-
</div>
|
57 |
-
|
58 |
-
</legend>
|
59 |
-
<div>
|
60 |
-
<ul id="sq_settings_sq_use" class="sq_settings_info">
|
61 |
-
<span><?php _e('What does Squirrly automatically do for SEO?', _SQ_PLUGIN_NAME_); ?></span>
|
62 |
-
<li>
|
63 |
-
<?php
|
64 |
-
$auto_option = false;
|
65 |
-
if (SQ_Tools::$options['sq_auto_canonical'] == 1) $auto_option = true;
|
66 |
-
?>
|
67 |
-
<div class="sq_option_content sq_option_content_small">
|
68 |
-
<div class="sq_switch sq_seo_switch_condition" style="<?php echo((SQ_Tools::$options['sq_use'] == 0) ? 'display:none;' : ''); ?>">
|
69 |
-
<input id="sq_auto_canonical1" type="radio" class="sq_switch-input" name="sq_auto_canonical" value="1" <?php echo($auto_option ? "checked" : '') ?> />
|
70 |
-
<label for="sq_auto_canonical1" class="sq_switch-label sq_switch-label-off"><?php _e('Yes', _SQ_PLUGIN_NAME_); ?></label>
|
71 |
-
<input id="sq_auto_canonical0" type="radio" class="sq_switch-input" name="sq_auto_canonical" value="0" <?php echo(!$auto_option ? "checked" : '') ?> />
|
72 |
-
<label for="sq_auto_canonical0" class="sq_switch-label sq_switch-label-on"><?php _e('No', _SQ_PLUGIN_NAME_); ?></label>
|
73 |
-
<span class="sq_switch-selection"></span>
|
74 |
-
</div>
|
75 |
-
<span><?php echo sprintf(__('adds <strong>%scanonical link%s</strong>, <strong>%srel="prev" and rel="next"%s</strong> metas in Header', _SQ_PLUGIN_NAME_), '<a href="https://support.google.com/webmasters/answer/139066" target="_blank">', '</a>', '<a href="https://support.google.com/webmasters/answer/1663744" target="_blank">', '</a>'); ?></span>
|
76 |
-
</div>
|
77 |
-
</li>
|
78 |
-
|
79 |
-
<li>
|
80 |
-
<?php
|
81 |
-
$auto_option = false;
|
82 |
-
if (SQ_Tools::$options['sq_auto_meta'] == 1) $auto_option = true;
|
83 |
-
?>
|
84 |
-
<div class="sq_option_content sq_option_content_small">
|
85 |
-
<div class="sq_switch sq_seo_switch_condition" style="<?php echo((SQ_Tools::$options['sq_use'] == 0) ? 'display:none;' : ''); ?>">
|
86 |
-
<input id="sq_auto_meta1" type="radio" class="sq_switch-input" name="sq_auto_meta" value="1" <?php echo($auto_option ? "checked" : '') ?> />
|
87 |
-
<label for="sq_auto_meta1" class="sq_switch-label sq_switch-label-off"><?php _e('Yes', _SQ_PLUGIN_NAME_); ?></label>
|
88 |
-
<input id="sq_auto_meta0" type="radio" class="sq_switch-input" name="sq_auto_meta" value="0" <?php echo(!$auto_option ? "checked" : '') ?> />
|
89 |
-
<label for="sq_auto_meta0" class="sq_switch-label sq_switch-label-on"><?php _e('No', _SQ_PLUGIN_NAME_); ?></label>
|
90 |
-
<span class="sq_switch-selection"></span>
|
91 |
-
</div>
|
92 |
-
<span><?php _e('adds the required METAs (<strong>dublincore, google hreflang</strong>, etc.)', _SQ_PLUGIN_NAME_); ?></span>
|
93 |
-
</div>
|
94 |
-
</li>
|
95 |
-
<li>
|
96 |
-
<?php
|
97 |
-
$auto_option = false;
|
98 |
-
if (SQ_Tools::$options['sq_auto_sitemap'] == 1) $auto_option = true;
|
99 |
-
?>
|
100 |
-
<div class="sq_option_content sq_option_content_small">
|
101 |
-
<div class="sq_switch sq_seo_switch_condition" style="<?php echo((SQ_Tools::$options['sq_use'] == 0) ? 'display:none;' : ''); ?>">
|
102 |
-
<input id="sq_auto_sitemap1" type="radio" class="sq_switch-input" name="sq_auto_sitemap" value="1" <?php echo($auto_option ? "checked" : '') ?> />
|
103 |
-
<label for="sq_auto_sitemap1" class="sq_switch-label sq_switch-label-off"><?php _e('Yes', _SQ_PLUGIN_NAME_); ?></label>
|
104 |
-
<input id="sq_auto_sitemap0" type="radio" class="sq_switch-input" name="sq_auto_sitemap" value="0" <?php echo(!$auto_option ? "checked" : '') ?> />
|
105 |
-
<label for="sq_auto_sitemap0" class="sq_switch-label sq_switch-label-on"><?php _e('No', _SQ_PLUGIN_NAME_); ?></label>
|
106 |
-
<span class="sq_switch-selection"></span>
|
107 |
-
</div>
|
108 |
-
<span><?php echo sprintf(__('adds the <strong>%sXML Sitemap%s</strong> for search engines: %s', _SQ_PLUGIN_NAME_), '<a href="https://support.google.com/webmasters/answer/156184?rd=1" target="_blank">', '</a>', '<strong><a href="' . SQ_ObjController::getController('SQ_Sitemaps')->getXmlUrl('sitemap') . '" target="_blank">' . SQ_ObjController::getController('SQ_Sitemaps')->getXmlUrl('sitemap') . '</a></strong>'); ?></span>
|
109 |
-
</div>
|
110 |
-
</li>
|
111 |
-
<li>
|
112 |
-
<?php
|
113 |
-
$auto_option = false;
|
114 |
-
if (SQ_Tools::$options['sq_auto_feed'] == 1) $auto_option = true;
|
115 |
-
?>
|
116 |
-
<div class="sq_option_content sq_option_content_small">
|
117 |
-
<div class="sq_switch sq_seo_switch_condition" style="<?php echo((SQ_Tools::$options['sq_use'] == 0) ? 'display:none;' : ''); ?>">
|
118 |
-
<input id="sq_auto_feed1" type="radio" class="sq_switch-input" name="sq_auto_feed" value="1" <?php echo($auto_option ? "checked" : '') ?> />
|
119 |
-
<label for="sq_auto_feed1" class="sq_switch-label sq_switch-label-off"><?php _e('Yes', _SQ_PLUGIN_NAME_); ?></label>
|
120 |
-
<input id="sq_auto_feed0" type="radio" class="sq_switch-input" name="sq_auto_feed" value="0" <?php echo(!$auto_option ? "checked" : '') ?> />
|
121 |
-
<label for="sq_auto_feed0" class="sq_switch-label sq_switch-label-on"><?php _e('No', _SQ_PLUGIN_NAME_); ?></label>
|
122 |
-
<span class="sq_switch-selection"></span>
|
123 |
-
</div>
|
124 |
-
<span><?php echo __('adds <strong>Feed style</strong> to your blog feed (eg. /feed)', _SQ_PLUGIN_NAME_) ?></span>
|
125 |
-
</div>
|
126 |
-
</li>
|
127 |
-
<li>
|
128 |
-
<?php
|
129 |
-
$auto_option = false;
|
130 |
-
if (SQ_Tools::$options['sq_auto_favicon'] == 1) $auto_option = true;
|
131 |
-
?>
|
132 |
-
<div class="sq_option_content sq_option_content_small">
|
133 |
-
<div class="sq_switch sq_seo_switch_condition" style="<?php echo((SQ_Tools::$options['sq_use'] == 0) ? 'display:none;' : ''); ?>">
|
134 |
-
<input id="sq_auto_favicon1" type="radio" class="sq_switch-input" name="sq_auto_favicon" value="1" <?php echo($auto_option ? "checked" : '') ?> />
|
135 |
-
<label for="sq_auto_favicon1" class="sq_switch-label sq_switch-label-off"><?php _e('Yes', _SQ_PLUGIN_NAME_); ?></label>
|
136 |
-
<input id="sq_auto_favicon0" type="radio" class="sq_switch-input" name="sq_auto_favicon" value="0" <?php echo(!$auto_option ? "checked" : '') ?> />
|
137 |
-
<label for="sq_auto_favicon0" class="sq_switch-label sq_switch-label-on"><?php _e('No', _SQ_PLUGIN_NAME_); ?></label>
|
138 |
-
<span class="sq_switch-selection"></span>
|
139 |
-
</div>
|
140 |
-
<span><?php echo sprintf(__('adds the <strong>%sfavicon.ico%s</strong> and the <strong>%sicons for pads and phones%s</strong>', _SQ_PLUGIN_NAME_), '<a href="https://en.wikipedia.org/wiki/Favicon" target="_blank">', '</a>', '<a href="https://developer.apple.com/library/safari/documentation/AppleApplications/Reference/SafariWebContent/ConfiguringWebApplications/ConfiguringWebApplications.html" target="_blank">', '</a>'); ?></span>
|
141 |
-
</div>
|
142 |
-
</li>
|
143 |
-
<li>
|
144 |
-
<?php
|
145 |
-
$auto_option = false;
|
146 |
-
if (SQ_Tools::$options['sq_auto_jsonld'] == 1) $auto_option = true;
|
147 |
-
?>
|
148 |
-
<div class="sq_option_content sq_option_content_small">
|
149 |
-
<div class="sq_switch sq_seo_switch_condition" style="<?php echo((SQ_Tools::$options['sq_use'] == 0) ? 'display:none;' : ''); ?>">
|
150 |
-
<input id="sq_auto_jsonld1" type="radio" class="sq_switch-input" name="sq_auto_jsonld" value="1" <?php echo($auto_option ? "checked" : '') ?> />
|
151 |
-
<label for="sq_auto_jsonld1" class="sq_switch-label sq_switch-label-off"><?php _e('Yes', _SQ_PLUGIN_NAME_); ?></label>
|
152 |
-
<input id="sq_auto_jsonld0" type="radio" class="sq_switch-input" name="sq_auto_jsonld" value="0" <?php echo(!$auto_option ? "checked" : '') ?> />
|
153 |
-
<label for="sq_auto_jsonld0" class="sq_switch-label sq_switch-label-on"><?php _e('No', _SQ_PLUGIN_NAME_); ?></label>
|
154 |
-
<span class="sq_switch-selection"></span>
|
155 |
-
</div>
|
156 |
-
<span><?php echo sprintf(__('adds the <strong>%sJson-LD%s</strong> metas for Semantic SEO', _SQ_PLUGIN_NAME_), '<a href="https://en.wikipedia.org/wiki/JSON-LD" target="_blank">', '</a>'); ?></span>
|
157 |
-
</div>
|
158 |
-
</li>
|
159 |
-
<li>
|
160 |
-
<?php
|
161 |
-
$auto_option = false;
|
162 |
-
if (SQ_Tools::$options['sq_auto_amp'] == 1) $auto_option = true;
|
163 |
-
?>
|
164 |
-
<div class="sq_option_content sq_option_content_small">
|
165 |
-
<div class="sq_switch sq_seo_switch_condition" style="<?php echo((SQ_Tools::$options['sq_use'] == 0) ? 'display:none;' : ''); ?>">
|
166 |
-
<input id="sq_auto_amp1" type="radio" class="sq_switch-input" name="sq_auto_amp" value="1" <?php echo($auto_option ? "checked" : '') ?> />
|
167 |
-
<label for="sq_auto_amp1" class="sq_switch-label sq_switch-label-off"><?php _e('Yes', _SQ_PLUGIN_NAME_); ?></label>
|
168 |
-
<input id="sq_auto_amp0" type="radio" class="sq_switch-input" name="sq_auto_amp" value="0" <?php echo(!$auto_option ? "checked" : '') ?> />
|
169 |
-
<label for="sq_auto_amp0" class="sq_switch-label sq_switch-label-on"><?php _e('No', _SQ_PLUGIN_NAME_); ?></label>
|
170 |
-
<span class="sq_switch-selection"></span>
|
171 |
-
</div>
|
172 |
-
<span><?php echo sprintf(__('loads <strong>%sGoogle Analytics AMP%s</strong> (Note: Only for AMP Themes!)', _SQ_PLUGIN_NAME_), '<a href="https://developers.google.com/analytics/devguides/collection/amp-analytics/" target="_blank">', '</a>'); ?></span>
|
173 |
-
</div>
|
174 |
-
</li>
|
175 |
-
<p class="sq_option_info" style="padding-left:10px; color: darkgrey;"> <?php _e('Note! By switching the <strong>Json-LD</strong>, <strong>XML Sitemap</strong> and <strong>Favicon</strong> on, you open new options below', _SQ_PLUGIN_NAME_); ?></p>
|
176 |
-
</ul>
|
177 |
-
<div style="text-align: center;">
|
178 |
-
<div class="sq_checkissues"><?php _e('Check for SEO issues in your site', _SQ_PLUGIN_NAME_); ?></div>
|
179 |
-
</div>
|
180 |
-
</div>
|
181 |
-
</fieldset>
|
182 |
-
<fieldset id="sq_title_description_keywords" <?php echo((SQ_Tools::$options['sq_use'] == 0) ? 'class="deactivated"' : ''); ?> <?php echo((SQ_Tools::$options['sq_fp_title'] == '' || SQ_Tools::$options['sq_auto_seo'] == 1) ? '' : 'class="sq_custom_title"'); ?>>
|
183 |
-
<legend>
|
184 |
-
<span class="sq_legend_title"><?php _e('Page Optimization', _SQ_PLUGIN_NAME_); ?></span>
|
185 |
-
<span><?php echo sprintf(__('%sThe best SEO approach to Meta information%s', _SQ_PLUGIN_NAME_), '<a href="http://www.squirrly.co/the-best-seo-approach-to-meta-information" target="_blank">', '</a>'); ?></span>
|
186 |
-
<span><?php _e('Optimize the <strong>Titles</strong>', _SQ_PLUGIN_NAME_); ?></span>
|
187 |
-
<?php
|
188 |
-
$auto_option = false;
|
189 |
-
if (SQ_Tools::$options['sq_auto_title'] == 1) $auto_option = true;
|
190 |
-
?>
|
191 |
-
<div class="sq_option_content sq_option_content">
|
192 |
-
<div class="sq_switch sq_seo_switch_condition" style="<?php echo((SQ_Tools::$options['sq_use'] == 0) ? 'display:none;' : ''); ?>">
|
193 |
-
<input id="sq_auto_title1" type="radio" class="sq_switch-input" name="sq_auto_title" value="1" <?php echo($auto_option ? "checked" : '') ?> />
|
194 |
-
<label for="sq_auto_title1" class="sq_switch-label sq_switch-label-off"><?php _e('Yes', _SQ_PLUGIN_NAME_); ?></label>
|
195 |
-
<input id="sq_auto_title0" type="radio" class="sq_switch-input" name="sq_auto_title" value="0" <?php echo(!$auto_option ? "checked" : '') ?> />
|
196 |
-
<label for="sq_auto_title0" class="sq_switch-label sq_switch-label-on"><?php _e('No', _SQ_PLUGIN_NAME_); ?></label>
|
197 |
-
<span class="sq_switch-selection"></span>
|
198 |
-
</div>
|
199 |
-
</div>
|
200 |
-
|
201 |
-
<span><?php _e('Optimize <strong>Descriptions</strong> and <strong>Keywords</strong>', _SQ_PLUGIN_NAME_); ?></span>
|
202 |
-
|
203 |
-
<?php
|
204 |
-
$auto_option = false;
|
205 |
-
if (SQ_Tools::$options['sq_auto_description'] == 1) $auto_option = true;
|
206 |
-
?>
|
207 |
-
<div class="sq_option_content sq_option_content">
|
208 |
-
<div class="sq_switch sq_seo_switch_condition" style="<?php echo((SQ_Tools::$options['sq_use'] == 0) ? 'display:none;' : ''); ?>">
|
209 |
-
<input id="sq_auto_description1" type="radio" class="sq_switch-input" name="sq_auto_description" value="1" <?php echo($auto_option ? "checked" : '') ?> />
|
210 |
-
<label for="sq_auto_description1" class="sq_switch-label sq_switch-label-off"><?php _e('Yes', _SQ_PLUGIN_NAME_); ?></label>
|
211 |
-
<input id="sq_auto_description0" type="radio" class="sq_switch-input" name="sq_auto_description" value="0" <?php echo(!$auto_option ? "checked" : '') ?> />
|
212 |
-
<label for="sq_auto_description0" class="sq_switch-label sq_switch-label-on"><?php _e('No', _SQ_PLUGIN_NAME_); ?></label>
|
213 |
-
<span class="sq_switch-selection"></span>
|
214 |
-
</div>
|
215 |
-
</div>
|
216 |
-
<span class="withborder"></span>
|
217 |
-
<span class="sq_legend_title"><?php _e('SEO for all post/pages', _SQ_PLUGIN_NAME_); ?></span>
|
218 |
-
<span><?php echo sprintf(__('To customize the Title and Description for all the Posts and Pages in your site use the %sSquirrly Snippet Tool%s', _SQ_PLUGIN_NAME_), '<a href="http://howto.squirrly.co/sides/squirrly-snippet-tool/" target="_blank" >', '</a>'); ?></span>
|
219 |
-
|
220 |
-
<div class="sq_badge_google">
|
221 |
-
<div class="sq_badge-image"></div>
|
222 |
-
<div class="sq_description">
|
223 |
-
<div class="sq_title">
|
224 |
-
<?php _e('Squirrly Snippet G17-True Render', _SQ_PLUGIN_NAME_); ?>
|
225 |
-
</div>
|
226 |
-
<div class="sq_link">
|
227 |
-
<a href="https://howto.squirrly.co/wordpress-seo/what-can-you-tell-us-about-squirrly-seo-2016-vs-squirrly-seo-2017/" target="_blank" title="<?php _e('see how this improved since 2016', _SQ_PLUGIN_NAME_); ?>"> (<?php _e('see how this improved since 2016', _SQ_PLUGIN_NAME_); ?>) </a>
|
228 |
-
</div>
|
229 |
-
</div>
|
230 |
-
</div>
|
231 |
-
|
232 |
-
</legend>
|
233 |
-
|
234 |
-
<div>
|
235 |
-
<?php
|
236 |
-
$auto_option = false;
|
237 |
-
if (SQ_Tools::$options['sq_fp_title'] == '') $auto_option = true;
|
238 |
-
|
239 |
-
if ($pageId = get_option('page_on_front')) {
|
240 |
-
if (SQ_ObjController::getModel('SQ_Frontend')->getAdvancedMeta($pageId, 'title') <> '') {
|
241 |
-
SQ_Tools::$options['sq_fp_title'] = SQ_ObjController::getModel('SQ_Frontend')->getAdvancedMeta($pageId, 'title');
|
242 |
-
SQ_Tools::$options['sq_fp_description'] = SQ_ObjController::getModel('SQ_Frontend')->getAdvancedMeta($pageId, 'description');
|
243 |
-
SQ_Tools::$options['sq_fp_ogimage'] = SQ_ObjController::getModel('SQ_Frontend')->getAdvancedMeta($pageId, 'ogimage');
|
244 |
-
|
245 |
-
if (!SQ_Tools::$options['sq_fp_keywords'] = SQ_ObjController::getModel('SQ_Frontend')->getAdvancedMeta($pageId, 'keyword')) {
|
246 |
-
$json = SQ_ObjController::getModel('SQ_Post')->getKeyword($pageId);
|
247 |
-
if (isset($json) && isset($json->keyword) && $json->keyword <> '') {
|
248 |
-
SQ_Tools::$options['sq_fp_keywords'] = $json->keyword;
|
249 |
-
}
|
250 |
-
}
|
251 |
-
}
|
252 |
-
}
|
253 |
-
?>
|
254 |
-
<ul id="sq_settings_sq_use" class="sq_settings_info">
|
255 |
-
<span><?php _e('First Page Optimization:', _SQ_PLUGIN_NAME_); ?></span>
|
256 |
-
<li>
|
257 |
-
<input id="sq_customize" type="hidden" name="sq_auto_seo" value="0">
|
258 |
-
<div id="sq_customize_settings">
|
259 |
-
<p class="withborder">
|
260 |
-
<span style="width: 65px;display: inline-block; vertical-align: top;"><?php _e('Title:', _SQ_PLUGIN_NAME_); ?></span><input type="text" name="sq_fp_title" value="<?php echo((SQ_Tools::$options['sq_fp_title'] <> '') ? SQ_Tools::$options['sq_fp_title'] : '') ?>" size="75" /><span id="sq_title_info" />
|
261 |
-
<span id="sq_fp_title_length"></span><span class="sq_settings_info"><?php _e('Tips: Length 10-75 chars', _SQ_PLUGIN_NAME_); ?></span>
|
262 |
-
</p>
|
263 |
-
<p class="withborder">
|
264 |
-
<span style="width: 65px;display: inline-block; vertical-align: top;"><?php _e('Description:', _SQ_PLUGIN_NAME_); ?></span><textarea name="sq_fp_description" cols="70" rows="3"><?php echo((SQ_Tools::$options['sq_fp_description'] <> '') ? SQ_Tools::$options['sq_fp_description'] : '') ?></textarea><span id="sq_description_info" />
|
265 |
-
<span id="sq_fp_description_length"></span><span class="sq_settings_info"><?php _e('Tips: Length 70-165 chars', _SQ_PLUGIN_NAME_); ?></span>
|
266 |
-
</p>
|
267 |
-
<p class="withborder">
|
268 |
-
<span style="width: 65px;display: inline-block; vertical-align: top;"><?php _e('Keywords:', _SQ_PLUGIN_NAME_); ?></span><input type="text" name="sq_fp_keywords" value="<?php echo((SQ_Tools::$options['sq_fp_keywords'] <> '') ? SQ_Tools::$options['sq_fp_keywords'] : '') ?>" size="70" />
|
269 |
-
<span id="sq_fp_keywords_length"></span><span class="sq_settings_info"><?php _e('Tips: 2-4 keywords', _SQ_PLUGIN_NAME_); ?></span>
|
270 |
-
</p>
|
271 |
-
<p class="withborder sq_select_ogimage" <?php echo((SQ_Tools::$options['sq_auto_facebook'] == 1) ? '' : 'style="display:none"') ?>>
|
272 |
-
<span style="width: 65px;display: inline-block; vertical-align: top;"><?php _e('OG Image:', _SQ_PLUGIN_NAME_); ?></span>
|
273 |
-
<strong><input type="text" name="sq_fp_ogimage" value="<?php echo((SQ_Tools::$options['sq_fp_ogimage'] <> '') ? SQ_Tools::$options['sq_fp_ogimage'] : '') ?>" size="60" style="display:none;" /><input id="sq_fp_imageselect" type="button" class="sq_button" value="<?php echo __('Select Open Graph Image', _SQ_PLUGIN_NAME_) ?>" /></strong>
|
274 |
-
</p>
|
275 |
-
</div>
|
276 |
-
</li>
|
277 |
-
<li>
|
278 |
-
<span class="sq_option_info"><?php _e('First Page Preview (Title, Description, Keywords)', _SQ_PLUGIN_NAME_); ?></span>
|
279 |
-
<div id="sq_snippet">
|
280 |
-
<div id="sq_snippet_name"><?php _e('Squirrly Snippet', _SQ_PLUGIN_NAME_) ?></div>
|
281 |
-
|
282 |
-
<ul id="sq_snippet_ul">
|
283 |
-
<div class="sq_select_ogimage_preview" <?php echo((SQ_Tools::$options['sq_auto_facebook'] == 1) ? '' : 'style="display:none"') ?>>
|
284 |
-
<div class="sq_fp_ogimage_close" <?php echo((SQ_Tools::$options['sq_fp_ogimage'] <> '') ? '' : 'style="display:none;"') ?>>x</div>
|
285 |
-
<div class="sq_fp_ogimage"><?php echo((SQ_Tools::$options['sq_fp_ogimage'] <> '') ? '<img src="' . SQ_Tools::$options['sq_fp_ogimage'] . '" />' : '') ?></div>
|
286 |
-
</div>
|
287 |
-
<li id="sq_snippet_title"></li>
|
288 |
-
<li id="sq_snippet_url"></li>
|
289 |
-
<li id="sq_snippet_description"></li>
|
290 |
-
</ul>
|
291 |
-
|
292 |
-
<div id="sq_snippet_disclaimer"><?php _e('If you don\'t see any changes in custom optimization, check if another SEO plugin affects Squirrly SEO', _SQ_PLUGIN_NAME_) ?></div>
|
293 |
-
</div>
|
294 |
-
</li>
|
295 |
-
<li>
|
296 |
-
<span class="sq_option_info"><?php echo sprintf(__('Use the %s<strong>Squirrly Snippet Tool</strong>%s while edit a Post/Page to customize the Title and Description for all the Posts and Pages', _SQ_PLUGIN_NAME_), '<a href="http://howto.squirrly.co/sides/squirrly-snippet-tool/" target="_blank" >', '</a>'); ?></span>
|
297 |
-
|
298 |
-
</li>
|
299 |
-
<li class="withborder"></li>
|
300 |
-
</ul>
|
301 |
-
</div>
|
302 |
-
</fieldset>
|
303 |
-
<fieldset id="sq_social_media" <?php echo((SQ_Tools::$options['sq_use'] == 0) ? 'class="deactivated"' : ''); ?>>
|
304 |
-
<legend>
|
305 |
-
<span class="sq_legend_title"><?php _e('Social Media Options', _SQ_PLUGIN_NAME_); ?></span>
|
306 |
-
<p>
|
307 |
-
<span><?php _e('Select the language you\'re using on Social Media', _SQ_PLUGIN_NAME_); ?></span>
|
308 |
-
</p>
|
309 |
-
<div class="abh_select withborder">
|
310 |
-
<select id="sq_og_locale" name="sq_og_locale">
|
311 |
-
<option value="en_US">English (US)</option>
|
312 |
-
<option value="af_ZA">Afrikaans</option>
|
313 |
-
<option value="ak_GH">Akan</option>
|
314 |
-
<option value="am_ET">Amharic</option>
|
315 |
-
<option value="ar_AR">Arabic</option>
|
316 |
-
<option value="as_IN">Assamese</option>
|
317 |
-
<option value="ay_BO">Aymara</option>
|
318 |
-
<option value="az_AZ">Azerbaijani</option>
|
319 |
-
<option value="be_BY">Belarusian</option>
|
320 |
-
<option value="bg_BG">Bulgarian</option>
|
321 |
-
<option value="bn_IN">Bengali</option>
|
322 |
-
<option value="br_FR">Breton</option>
|
323 |
-
<option value="bs_BA">Bosnian</option>
|
324 |
-
<option value="ca_ES">Catalan</option>
|
325 |
-
<option value="cb_IQ">Sorani Kurdish</option>
|
326 |
-
<option value="ck_US">Cherokee</option>
|
327 |
-
<option value="co_FR">Corsican</option>
|
328 |
-
<option value="cs_CZ">Czech</option>
|
329 |
-
<option value="cx_PH">Cebuano</option>
|
330 |
-
<option value="cy_GB">Welsh</option>
|
331 |
-
<option value="da_DK">Danish</option>
|
332 |
-
<option value="de_DE">German</option>
|
333 |
-
<option value="el_GR">Greek</option>
|
334 |
-
<option value="en_GB">English (UK)</option>
|
335 |
-
<option value="en_IN">English (India)</option>
|
336 |
-
<option value="en_PI">English (Pirate)</option>
|
337 |
-
<option value="en_UD">English (Upside Down)</option>
|
338 |
-
<option value="eo_EO">Esperanto</option>
|
339 |
-
<option value="es_CL">Spanish (Chile)</option>
|
340 |
-
<option value="es_CO">Spanish (Colombia)</option>
|
341 |
-
<option value="es_ES">Spanish (Spain)</option>
|
342 |
-
<option value="es_LA">Spanish</option>
|
343 |
-
<option value="es_MX">Spanish (Mexico)</option>
|
344 |
-
<option value="es_VE">Spanish (Venezuela)</option>
|
345 |
-
<option value="et_EE">Estonian</option>
|
346 |
-
<option value="eu_ES">Basque</option>
|
347 |
-
<option value="fa_IR">Persian</option>
|
348 |
-
<option value="fb_LT">Leet Speak</option>
|
349 |
-
<option value="ff_NG">Fulah</option>
|
350 |
-
<option value="fi_FI">Finnish</option>
|
351 |
-
<option value="fo_FO">Faroese</option>
|
352 |
-
<option value="fr_CA">French (Canada)</option>
|
353 |
-
<option value="fr_FR">French (France)</option>
|
354 |
-
<option value="fy_NL">Frisian</option>
|
355 |
-
<option value="ga_IE">Irish</option>
|
356 |
-
<option value="gl_ES">Galician</option>
|
357 |
-
<option value="gn_PY">Guarani</option>
|
358 |
-
<option value="gu_IN">Gujarati</option>
|
359 |
-
<option value="gx_GR">Classical Greek</option>
|
360 |
-
<option value="ha_NG">Hausa</option>
|
361 |
-
<option value="he_IL">Hebrew</option>
|
362 |
-
<option value="hi_IN">Hindi</option>
|
363 |
-
<option value="hr_HR">Croatian</option>
|
364 |
-
<option value="hu_HU">Hungarian</option>
|
365 |
-
<option value="hy_AM">Armenian</option>
|
366 |
-
<option value="id_ID">Indonesian</option>
|
367 |
-
<option value="ig_NG">Igbo</option>
|
368 |
-
<option value="is_IS">Icelandic</option>
|
369 |
-
<option value="it_IT">Italian</option>
|
370 |
-
<option value="ja_JP">Japanese</option>
|
371 |
-
<option value="ja_KS">Japanese (Kansai)</option>
|
372 |
-
<option value="jv_ID">Javanese</option>
|
373 |
-
<option value="ka_GE">Georgian</option>
|
374 |
-
<option value="kk_KZ">Kazakh</option>
|
375 |
-
<option value="km_KH">Khmer</option>
|
376 |
-
<option value="kn_IN">Kannada</option>
|
377 |
-
<option value="ko_KR">Korean</option>
|
378 |
-
<option value="ku_TR">Kurdish (Kurmanji)</option>
|
379 |
-
<option value="la_VA">Latin</option>
|
380 |
-
<option value="lg_UG">Ganda</option>
|
381 |
-
<option value="li_NL">Limburgish</option>
|
382 |
-
<option value="ln_CD">Lingala</option>
|
383 |
-
<option value="lo_LA">Lao</option>
|
384 |
-
<option value="lt_LT">Lithuanian</option>
|
385 |
-
<option value="lv_LV">Latvian</option>
|
386 |
-
<option value="mg_MG">Malagasy</option>
|
387 |
-
<option value="mk_MK">Macedonian</option>
|
388 |
-
<option value="ml_IN">Malayalam</option>
|
389 |
-
<option value="mn_MN">Mongolian</option>
|
390 |
-
<option value="mr_IN">Marathi</option>
|
391 |
-
<option value="ms_MY">Malay</option>
|
392 |
-
<option value="mt_MT">Maltese</option>
|
393 |
-
<option value="my_MM">Burmese</option>
|
394 |
-
<option value="nb_NO">Norwegian (bokmal)</option>
|
395 |
-
<option value="nd_ZW">Ndebele</option>
|
396 |
-
<option value="ne_NP">Nepali</option>
|
397 |
-
<option value="nl_BE">Dutch (België)</option>
|
398 |
-
<option value="nl_NL">Dutch</option>
|
399 |
-
<option value="nn_NO">Norwegian (nynorsk)</option>
|
400 |
-
<option value="ny_MW">Chewa</option>
|
401 |
-
<option value="or_IN">Oriya</option>
|
402 |
-
<option value="pa_IN">Punjabi</option>
|
403 |
-
<option value="pl_PL">Polish</option>
|
404 |
-
<option value="ps_AF">Pashto</option>
|
405 |
-
<option value="pt_BR">Portuguese (Brazil)</option>
|
406 |
-
<option value="pt_PT">Portuguese (Portugal)</option>
|
407 |
-
<option value="qu_PE">Quechua</option>
|
408 |
-
<option value="rm_CH">Romansh</option>
|
409 |
-
<option value="ro_RO">Romanian</option>
|
410 |
-
<option value="ru_RU">Russian</option>
|
411 |
-
<option value="rw_RW">Kinyarwanda</option>
|
412 |
-
<option value="sa_IN">Sanskrit</option>
|
413 |
-
<option value="sc_IT">Sardinian</option>
|
414 |
-
<option value="se_NO">Northern Sámi</option>
|
415 |
-
<option value="si_LK">Sinhala</option>
|
416 |
-
<option value="sk_SK">Slovak</option>
|
417 |
-
<option value="sl_SI">Slovenian</option>
|
418 |
-
<option value="sn_ZW">Shona</option>
|
419 |
-
<option value="so_SO">Somali</option>
|
420 |
-
<option value="sq_AL">Albanian</option>
|
421 |
-
<option value="sr_RS">Serbian</option>
|
422 |
-
<option value="sv_SE">Swedish</option>
|
423 |
-
<option value="sw_KE">Swahili</option>
|
424 |
-
<option value="sy_SY">Syriac</option>
|
425 |
-
<option value="sz_PL">Silesian</option>
|
426 |
-
<option value="ta_IN">Tamil</option>
|
427 |
-
<option value="te_IN">Telugu</option>
|
428 |
-
<option value="tg_TJ">Tajik</option>
|
429 |
-
<option value="th_TH">Thai</option>
|
430 |
-
<option value="tk_TM">Turkmen</option>
|
431 |
-
<option value="tl_PH">Filipino</option>
|
432 |
-
<option value="tl_ST">Klingon</option>
|
433 |
-
<option value="tr_TR">Turkish</option>
|
434 |
-
<option value="tt_RU">Tatar</option>
|
435 |
-
<option value="tz_MA">Tamazight</option>
|
436 |
-
<option value="uk_UA">Ukrainian</option>
|
437 |
-
<option value="ur_PK">Urdu</option>
|
438 |
-
<option value="uz_UZ">Uzbek</option>
|
439 |
-
<option value="vi_VN">Vietnamese</option>
|
440 |
-
<option value="wo_SN">Wolof</option>
|
441 |
-
<option value="xh_ZA">Xhosa</option>
|
442 |
-
<option value="yi_DE">Yiddish</option>
|
443 |
-
<option value="yo_NG">Yoruba</option>
|
444 |
-
<option value="zh_CN">Simplified Chinese (China)</option>
|
445 |
-
<option value="zh_HK">Traditional Chinese (Hong Kong)</option>
|
446 |
-
<option value="zh_TW">Traditional Chinese (Taiwan)</option>
|
447 |
-
<option value="zu_ZA">Zulu</option>
|
448 |
-
<option value="zz_TR">Zazaki</option>
|
449 |
-
</select>
|
450 |
-
|
451 |
-
</div>
|
452 |
-
<br />
|
453 |
-
<span><?php echo sprintf(__('%sHow to pop out in Social Media with your links%s', _SQ_PLUGIN_NAME_), '<a href="http://www.squirrly.co/how-to-pop-out-in-social-media-with-your-links." target="_blank">', '</a>'); ?></span>
|
454 |
-
<span><?php echo sprintf(__('%sGet busy with Facebook’s new Search Engine functions%s', _SQ_PLUGIN_NAME_), '<a href="http://www.squirrly.co/get-busy-with-facebooks-new-search-engine-functions" target="_blank">', '</a>'); ?></span>
|
455 |
-
<span><?php echo sprintf(__('%sHow I Added Twitter Cards in My WordPress for Better Inbound Marketing%s', _SQ_PLUGIN_NAME_), '<a href="http://www.squirrly.co/inbound_marketing_twitter_cards-pagblog-article_id62232.html" target="_blank">', '</a>'); ?></span>
|
456 |
-
|
457 |
-
<div class="sq_badge_google">
|
458 |
-
<div class="sq_badge-image"></div>
|
459 |
-
<div class="sq_description">
|
460 |
-
<div class="sq_title">
|
461 |
-
<?php _e('Open Graph G17 - 2017 Settings', _SQ_PLUGIN_NAME_); ?>
|
462 |
-
</div>
|
463 |
-
<div class="sq_link">
|
464 |
-
<a href="https://howto.squirrly.co/wordpress-seo/what-can-you-tell-us-about-squirrly-seo-2016-vs-squirrly-seo-2017/" target="_blank" title="<?php _e('see how this improved since 2016', _SQ_PLUGIN_NAME_); ?>"> (<?php _e('see how this improved since 2016', _SQ_PLUGIN_NAME_); ?>) </a>
|
465 |
-
</div>
|
466 |
-
</div>
|
467 |
-
</div>
|
468 |
-
|
469 |
-
</legend>
|
470 |
-
|
471 |
-
<div>
|
472 |
-
<ul id="sq_settings_sq_use" class="sq_settings_info">
|
473 |
-
<span><?php _e('Squirrly Adds the Best Codes for Open Graph and Twitter Cards', _SQ_PLUGIN_NAME_); ?></span>
|
474 |
-
<li id="sq_option_facebook">
|
475 |
-
<?php
|
476 |
-
$auto_option = false;
|
477 |
-
if (SQ_Tools::$options['sq_auto_facebook'] == 1) $auto_option = true;
|
478 |
-
?>
|
479 |
-
<div class="sq_option_img"></div>
|
480 |
-
<div class="sq_option_content sq_option_content_small">
|
481 |
-
|
482 |
-
<div class="sq_switch sq_seo_switch_condition" style="<?php echo((SQ_Tools::$options['sq_use'] == 0) ? 'display:none;' : ''); ?>">
|
483 |
-
<input id="sq_auto_facebook1" type="radio" class="sq_switch-input" name="sq_auto_facebook" value="1" <?php echo($auto_option ? "checked" : '') ?> />
|
484 |
-
<label for="sq_auto_facebook1" class="sq_switch-label sq_switch-label-off"><?php _e('Yes', _SQ_PLUGIN_NAME_); ?></label>
|
485 |
-
<input id="sq_auto_facebook0" type="radio" class="sq_switch-input" name="sq_auto_facebook" value="0" <?php echo(!$auto_option ? "checked" : '') ?> />
|
486 |
-
<label for="sq_auto_facebook0" class="sq_switch-label sq_switch-label-on"><?php _e('No', _SQ_PLUGIN_NAME_); ?></label>
|
487 |
-
<span class="sq_switch-selection"></span>
|
488 |
-
</div>
|
489 |
-
<span><?php echo __('Add the <strong>Social Open Graph objects</strong> for a good looking share. ', _SQ_PLUGIN_NAME_) . ' <a href="https://developers.facebook.com/tools/debug/og/object?q=' . urlencode(get_bloginfo('wpurl')) . '" target="_blank" title="Facebook Object Validator">Check here</a>'; ?></span>
|
490 |
-
</div>
|
491 |
-
</li>
|
492 |
-
|
493 |
-
<span class="withborder" style="min-height: 0;"></span>
|
494 |
-
<li id="sq_option_twitter">
|
495 |
-
<?php
|
496 |
-
$auto_option = false;
|
497 |
-
if (SQ_Tools::$options['sq_auto_twitter'] == 1) $auto_option = true;
|
498 |
-
?>
|
499 |
-
<div class="sq_option_img"></div>
|
500 |
-
<div class="sq_option_content sq_option_content_small">
|
501 |
-
|
502 |
-
|
503 |
-
<div class="sq_switch sq_seo_switch_condition" style="<?php echo((SQ_Tools::$options['sq_use'] == 0) ? 'display:none;' : ''); ?>">
|
504 |
-
<input id="sq_auto_twitter1" type="radio" class="sq_switch-input" name="sq_auto_twitter" value="1" <?php echo($auto_option ? "checked" : '') ?> />
|
505 |
-
<label for="sq_auto_twitter1" class="sq_switch-label sq_switch-label-off"><?php _e('Yes', _SQ_PLUGIN_NAME_); ?></label>
|
506 |
-
<input id="sq_auto_twitter0" type="radio" class="sq_switch-input" name="sq_auto_twitter" value="0" <?php echo(!$auto_option ? "checked" : '') ?> />
|
507 |
-
<label for="sq_auto_twitter0" class="sq_switch-label sq_switch-label-on"><?php _e('No', _SQ_PLUGIN_NAME_); ?></label>
|
508 |
-
<span class="sq_switch-selection"></span>
|
509 |
-
</div>
|
510 |
-
<span><?php echo __('Add the <strong>Twitter card</strong> in your tweets. ', _SQ_PLUGIN_NAME_) . ' <a href="https://cards-dev.twitter.com/validator" target="_blank" title="Twitter Card Validator">Check here</a> to validate your site'; ?></span>
|
511 |
-
<div class="sq_switch sq_seo_switch_condition" style="<?php echo((SQ_Tools::$options['sq_use'] == 0) ? 'display:none;' : ''); ?>">
|
512 |
-
<input id="sq_auto_twittersize1" type="radio" class="sq_switch-input" name="sq_auto_twittersize" value="summary_large_image" <?php echo((SQ_Tools::$options['sq_auto_twittersize'] <> 'summary') ? "checked" : '') ?> />
|
513 |
-
<label for="sq_auto_twittersize1" class="sq_switch-label sq_switch-label-off"><?php _e('Yes', _SQ_PLUGIN_NAME_); ?></label>
|
514 |
-
<input id="sq_auto_twittersize0" type="radio" class="sq_switch-input" name="sq_auto_twittersize" value="summary" <?php echo((SQ_Tools::$options['sq_auto_twittersize'] == 'summary') ? "checked" : '') ?> />
|
515 |
-
<label for="sq_auto_twittersize0" class="sq_switch-label sq_switch-label-on"><?php _e('No', _SQ_PLUGIN_NAME_); ?></label>
|
516 |
-
<span class="sq_switch-selection"></span>
|
517 |
-
</div>
|
518 |
-
<span><?php echo sprintf(__('Use <strong>Twitter %ssummary_large_image%s</strong> for your tweeter card. ', _SQ_PLUGIN_NAME_), '<a href="https://dev.twitter.com/cards/types/summary-large-image" target="_blank" title="Twitter Large Summary">', '</a> ') . ''; ?></span>
|
519 |
-
<span style="color: #f7681a; margin-top: 9px; text-align: center; <?php echo((SQ_Tools::$options['sq_twitter_account'] <> '') ? 'display:none' : '') ?>"><?php echo __('You need to add your <strong>Twitter account</strong> below', _SQ_PLUGIN_NAME_); ?></span>
|
520 |
-
|
521 |
-
</div>
|
522 |
-
</li>
|
523 |
-
<span class="withborder" style="min-height: 15px;"></span>
|
524 |
-
|
525 |
-
</ul>
|
526 |
-
|
527 |
-
</div>
|
528 |
-
</fieldset>
|
529 |
-
<fieldset id="sq_sitemap" <?php echo((SQ_Tools::$options['sq_use'] == 0 || SQ_Tools::$options['sq_auto_sitemap'] == 0) ? 'class="deactivated"' : ''); ?>>
|
530 |
-
<legend>
|
531 |
-
<span class="sq_legend_title"><?php _e('XML Sitemap for Google', _SQ_PLUGIN_NAME_); ?></span>
|
532 |
-
<span><?php echo __('Squirrly Sitemap is the fastest way to tell Google about your site links. <strong>Supports Multisites, Google News, Images, Videos, Custom Post Types, Custom Taxonomies and Ecommerce products</strong>', _SQ_PLUGIN_NAME_) ?></span>
|
533 |
-
<span><?php echo sprintf(__('%sHow to submit your sitemap.xml in Google Webmaster Tool%s', _SQ_PLUGIN_NAME_), '<a href="http://howto.squirrly.co/wordpress-seo/how-to-submit-your-sitemap-xml-in-google-sitemap/" target="_blank">', '</a>'); ?></span>
|
534 |
-
<span><?php echo sprintf(__('%s10 Vital To Dos to Feed Your SEO Content Machine After You Post Articles%s', _SQ_PLUGIN_NAME_), '<a href="http://www.squirrly.co/10_vital_to_dos_to_feed_your_seo_content_machine_after_you_post_articles-pagblog-article_id62194-html" target="_blank">', '</a>'); ?></span>
|
535 |
-
<span><?php echo sprintf(__('For Google News Sitemap, ensure that your site is included in %sGoogle News%s', _SQ_PLUGIN_NAME_), '<a href="https://partnerdash.google.com/partnerdash/d/news" target="_blank">', '</a>'); ?></span>
|
536 |
-
</legend>
|
537 |
-
|
538 |
-
<div>
|
539 |
-
<?php
|
540 |
-
$auto_option = false;
|
541 |
-
if (SQ_Tools::$options['sq_sitemap_ping'] == 1) $auto_option = true;
|
542 |
-
?>
|
543 |
-
<ul id="sq_sitemap_option" class="sq_settings_info">
|
544 |
-
<span><?php _e('XML Sitemap Options', _SQ_PLUGIN_NAME_); ?></span>
|
545 |
-
<div class="sq_option_content sq_option_content_small">
|
546 |
-
<div class="sq_switch sq_seo_switch_condition" style="<?php echo((SQ_Tools::$options['sq_use'] == 0) ? 'display:none;' : ''); ?>">
|
547 |
-
<input id="sq_sitemap_ping1" type="radio" class="sq_switch-input" name="sq_sitemap_ping" value="1" <?php echo($auto_option ? "checked" : '') ?> />
|
548 |
-
<label for="sq_sitemap_ping1" class="sq_switch-label sq_switch-label-off"><?php _e('Yes', _SQ_PLUGIN_NAME_); ?></label>
|
549 |
-
<input id="sq_sitemap_ping0" type="radio" class="sq_switch-input" name="sq_sitemap_ping" value="0" <?php echo(!$auto_option ? "checked" : '') ?> />
|
550 |
-
<label for="sq_sitemap_ping0" class="sq_switch-label sq_switch-label-on"><?php _e('No', _SQ_PLUGIN_NAME_); ?></label>
|
551 |
-
<span class="sq_switch-selection"></span>
|
552 |
-
</div>
|
553 |
-
<span><?php echo __('Ping your sitemap to Google and Bing when a new post is published', _SQ_PLUGIN_NAME_); ?></span>
|
554 |
-
</div>
|
555 |
-
<li>
|
556 |
-
<p><?php _e('Build Sitemaps for', _SQ_PLUGIN_NAME_); ?>:</p>
|
557 |
-
<ul id="sq_sitemap_buid">
|
558 |
-
<li class="sq_selectall"><input type="checkbox" id="sq_selectall" />Select All</li>
|
559 |
-
<li>
|
560 |
-
<input type="checkbox" class="sq_sitemap" name="sq_sitemap[]" value="sitemap-news" <?php echo((SQ_Tools::$options['sq_sitemap']['sitemap-news'][1] == 1) ? 'checked="checked"' : ''); ?>><?php _e('Google News', _SQ_PLUGIN_NAME_); ?>
|
561 |
-
<a href="https://partnerdash.google.com/partnerdash/d/news" target="_blank">Read first!</a>
|
562 |
-
</li>
|
563 |
-
<li>
|
564 |
-
<input type="checkbox" class="sq_sitemap" name="sq_sitemap[]" value="sitemap-category" <?php echo((SQ_Tools::$options['sq_sitemap']['sitemap-category'][1] == 1) ? 'checked="checked"' : ''); ?>><?php _e('Categories', _SQ_PLUGIN_NAME_); ?>
|
565 |
-
</li>
|
566 |
-
<?php if (SQ_ObjController::getModel('SQ_BlockSettingsSeo')->isEcommerce()) { //check for ecommerce product ?>
|
567 |
-
<li>
|
568 |
-
<input type="checkbox" class="sq_sitemap" name="sq_sitemap[]" value="sitemap-product" <?php echo((SQ_Tools::$options['sq_sitemap']['sitemap-product'][1] == 1) ? 'checked="checked"' : ''); ?>><?php _e('Products', _SQ_PLUGIN_NAME_); ?>
|
569 |
-
</li><?php } ?>
|
570 |
-
<li>
|
571 |
-
<input type="checkbox" class="sq_sitemap" name="sq_sitemap[]" value="sitemap-post" <?php echo((SQ_Tools::$options['sq_sitemap']['sitemap-post'][1] == 1) ? 'checked="checked"' : ''); ?>><?php _e('Posts', _SQ_PLUGIN_NAME_); ?>
|
572 |
-
</li>
|
573 |
-
<li>
|
574 |
-
<input type="checkbox" class="sq_sitemap" name="sq_sitemap[]" value="sitemap-post_tag" <?php echo((SQ_Tools::$options['sq_sitemap']['sitemap-post_tag'][1] == 1) ? 'checked="checked"' : ''); ?>><?php _e('Tags', _SQ_PLUGIN_NAME_); ?>
|
575 |
-
</li>
|
576 |
-
<li>
|
577 |
-
<input type="checkbox" class="sq_sitemap" name="sq_sitemap[]" value="sitemap-page" <?php echo((SQ_Tools::$options['sq_sitemap']['sitemap-page'][1] == 1) ? 'checked="checked"' : ''); ?>><?php _e('Pages', _SQ_PLUGIN_NAME_); ?>
|
578 |
-
</li>
|
579 |
-
<li>
|
580 |
-
<input type="checkbox" class="sq_sitemap" name="sq_sitemap[]" value="sitemap-archive" <?php echo((SQ_Tools::$options['sq_sitemap']['sitemap-archive'][1] == 1) ? 'checked="checked"' : ''); ?>><?php _e('Archive', _SQ_PLUGIN_NAME_); ?>
|
581 |
-
</li>
|
582 |
-
<li>
|
583 |
-
<input type="checkbox" class="sq_sitemap" name="sq_sitemap[]" value="sitemap-custom-tax" <?php echo((SQ_Tools::$options['sq_sitemap']['sitemap-custom-tax'][1] == 1) ? 'checked="checked"' : ''); ?>><?php _e('Custom Taxonomies', _SQ_PLUGIN_NAME_); ?>
|
584 |
-
</li>
|
585 |
-
<li>
|
586 |
-
<input type="checkbox" class="sq_sitemap" name="sq_sitemap[]" value="sitemap-custom-post" <?php echo((SQ_Tools::$options['sq_sitemap']['sitemap-custom-post'][1] == 1) ? 'checked="checked"' : ''); ?>><?php _e('Custom Posts', _SQ_PLUGIN_NAME_); ?>
|
587 |
-
</li>
|
588 |
-
</ul>
|
589 |
-
<span style="color: red; margin: 10px; line-height: 20px; display: block;"><?php echo sprintf(__('Select only the Post Types that have links in them. Your sitemap will be %s', _SQ_PLUGIN_NAME_), '<a href="' . SQ_ObjController::getController('SQ_Sitemaps')->getXmlUrl('sitemap') . '" target="_blank">' . SQ_ObjController::getController('SQ_Sitemaps')->getXmlUrl('sitemap') . '</a></strong>'); ?></span>
|
590 |
-
|
591 |
-
</li>
|
592 |
-
<li>
|
593 |
-
<p><?php _e('Include in Sitemaps', _SQ_PLUGIN_NAME_); ?>:</p>
|
594 |
-
<ul id="sq_sitemap_include">
|
595 |
-
<li>
|
596 |
-
<input type="checkbox" class="sq_sitemap_show" name="sq_sitemap_show[]" value="images" <?php echo((SQ_Tools::$options['sq_sitemap_show']['images'] == 1) ? 'checked="checked"' : ''); ?>><?php _e('<strong>Images</strong> from posts/pages', _SQ_PLUGIN_NAME_); ?>
|
597 |
-
</li>
|
598 |
-
<li>
|
599 |
-
<input type="checkbox" class="sq_sitemap_show" name="sq_sitemap_show[]" value="videos" <?php echo((SQ_Tools::$options['sq_sitemap_show']['videos'] == 1) ? 'checked="checked"' : ''); ?>><?php _e('<strong>Videos</strong> (embeded and local media)', _SQ_PLUGIN_NAME_); ?>
|
600 |
-
</li>
|
601 |
-
</ul>
|
602 |
-
</li>
|
603 |
-
<li>
|
604 |
-
<p><?php _e('How often do you update your site?', _SQ_PLUGIN_NAME_); ?></p>
|
605 |
-
<select name="sq_sitemap_frequency">
|
606 |
-
<option value="daily" <?php echo((SQ_Tools::$options['sq_sitemap_frequency'] == 'daily') ? 'selected="selected"' : ''); ?>><?php _e('every day', _SQ_PLUGIN_NAME_); ?></option>
|
607 |
-
<option value="weekly" <?php echo((SQ_Tools::$options['sq_sitemap_frequency'] == 'weekly') ? 'selected="selected"' : ''); ?>><?php _e('1-3 times per week', _SQ_PLUGIN_NAME_); ?></option>
|
608 |
-
<option value="monthly" <?php echo((SQ_Tools::$options['sq_sitemap_frequency'] == 'monthly') ? 'selected="selected"' : ''); ?>><?php _e('1-3 times per month', _SQ_PLUGIN_NAME_); ?></option>
|
609 |
-
<option value="yearly" <?php echo((SQ_Tools::$options['sq_sitemap_frequency'] == 'yearly') ? 'selected="selected"' : ''); ?>><?php _e('1-3 times per year', _SQ_PLUGIN_NAME_); ?></option>
|
610 |
-
</select>
|
611 |
-
</li>
|
612 |
-
</ul>
|
613 |
-
</div>
|
614 |
-
</fieldset>
|
615 |
-
<a name="sq_favicon_anchor"></a>
|
616 |
-
<fieldset id="sq_favicon" <?php echo((SQ_Tools::$options['sq_use'] == 0 || SQ_Tools::$options['sq_auto_favicon'] == 0) ? 'class="deactivated"' : ''); ?>>
|
617 |
-
<legend>
|
618 |
-
<span class="sq_legend_title"><?php _e('Change the Website Icon', _SQ_PLUGIN_NAME_); ?></span>
|
619 |
-
<span><?php _e('Now, even tablet & smartphone browsers make use of your icons. This makes having a good favicon even more important.', _SQ_PLUGIN_NAME_); ?> </span>
|
620 |
-
<span><?php echo sprintf(__('You can use %shttp://convertico.com/%s to convert your photo to icon and upload it here after that.', _SQ_PLUGIN_NAME_), '<a href="http://convertico.com/" target="_blank">', '</a>'); ?></span>
|
621 |
-
|
622 |
-
</legend>
|
623 |
-
<div>
|
624 |
-
<?php echo((defined('SQ_MESSAGE_FAVICON')) ? '<span class="sq_message sq_error" style="display: block; padding: 11px 0;">' . SQ_MESSAGE_FAVICON . '</span>' : '') ?>
|
625 |
-
<p>
|
626 |
-
<?php _e('Upload file:', _SQ_PLUGIN_NAME_); ?><br /><br />
|
627 |
-
<?php
|
628 |
-
if (SQ_Tools::$options['favicon'] <> '' && file_exists(_SQ_CACHE_DIR_ . SQ_Tools::$options['favicon'])) {
|
629 |
-
if (!get_option('permalink_structure')) {
|
630 |
-
$favicon = get_bloginfo('wpurl') . '/index.php?sq_get=favicon';
|
631 |
-
} else {
|
632 |
-
$favicon = get_bloginfo('wpurl') . '/favicon.icon' . '?' . time();
|
633 |
-
}
|
634 |
-
?>
|
635 |
-
<img src="<?php echo $favicon ?>" style="float: left; margin-top: 1px;width: 32px;height: 32px;" />
|
636 |
-
<?php } ?>
|
637 |
-
<input type="file" name="favicon" id="favicon" style="float: left;" />
|
638 |
-
<input type="submit" name="sq_update" value="<?php _e('Upload', _SQ_PLUGIN_NAME_) ?>" style="float: left; margin-top: 0;" />
|
639 |
-
<br />
|
640 |
-
</p>
|
641 |
-
|
642 |
-
<span class="sq_settings_info"><?php _e('If you don\'t see the new icon in your browser, empty the browser cache and refresh the page.', _SQ_PLUGIN_NAME_); ?></span>
|
643 |
-
<div>
|
644 |
-
<div style="margin-top: 10px"><?php echo __('File types: JPG, JPEG, GIF and PNG.', _SQ_PLUGIN_NAME_); ?></div>
|
645 |
-
<br /><br />
|
646 |
-
<span><strong style="color:#f7681a"><?php echo __('Does not physically create the favicon.ico file. The best option for Multisites.', _SQ_PLUGIN_NAME_) ?></strong></span>
|
647 |
-
</div>
|
648 |
-
</div>
|
649 |
-
|
650 |
-
</fieldset>
|
651 |
-
<fieldset id="sq_jsonld" <?php echo((SQ_Tools::$options['sq_use'] == 0 || SQ_Tools::$options['sq_auto_jsonld'] == 0) ? 'class="deactivated"' : ''); ?>>
|
652 |
-
<legend>
|
653 |
-
<span class="sq_legend_title"><?php _e('JSON-LD for Semantic SEO', _SQ_PLUGIN_NAME_); ?></span>
|
654 |
-
<span><?php echo __('Squirrly will automatically add the JSON-LD Structured Data in your site.', _SQ_PLUGIN_NAME_) ?></span>
|
655 |
-
<span><?php echo sprintf(__('%sJSON-LD\'s Big Day at Google%s', _SQ_PLUGIN_NAME_), '<a href="http://www.seoskeptic.com/json-ld-big-day-at-google/" target="_blank">', '</a>'); ?></span>
|
656 |
-
<span><?php echo sprintf(__('%sGoogle Testing Tool%s', _SQ_PLUGIN_NAME_), '<a href="https://developers.google.com/structured-data/testing-tool/" target="_blank">', '</a>'); ?></span>
|
657 |
-
<span><?php echo sprintf(__('%sSpecify your social profiles to Google%s', _SQ_PLUGIN_NAME_), '<a href="https://developers.google.com/structured-data/customize/social-profiles" target="_blank">', '</a>'); ?></span>
|
658 |
-
|
659 |
-
<div class="sq_badge_google">
|
660 |
-
<div class="sq_badge-image"></div>
|
661 |
-
<div class="sq_description">
|
662 |
-
<div class="sq_title">
|
663 |
-
<?php _e('JSON-LD G17 -2x More Options', _SQ_PLUGIN_NAME_); ?>
|
664 |
-
</div>
|
665 |
-
<div class="sq_link">
|
666 |
-
<a href="https://howto.squirrly.co/wordpress-seo/what-can-you-tell-us-about-squirrly-seo-2016-vs-squirrly-seo-2017/" target="_blank" title="<?php _e('see how this improved since 2016', _SQ_PLUGIN_NAME_); ?>"> (<?php _e('see how this improved since 2016', _SQ_PLUGIN_NAME_); ?>) </a>
|
667 |
-
</div>
|
668 |
-
</div>
|
669 |
-
</div>
|
670 |
-
|
671 |
-
</legend>
|
672 |
-
|
673 |
-
<div>
|
674 |
-
<ul id="sq_jsonld_option" class="sq_settings_info">
|
675 |
-
<li class="withborder">
|
676 |
-
<p style="line-height: 30px;"><?php _e('Your site type:', _SQ_PLUGIN_NAME_); ?>
|
677 |
-
<select name="sq_jsonld_type" class="sq_jsonld_type">
|
678 |
-
<option value="Organization" <?php echo((SQ_Tools::$options['sq_jsonld_type'] == 'Organization') ? 'selected="selected"' : ''); ?>><?php _e('Organization', _SQ_PLUGIN_NAME_); ?></option>
|
679 |
-
<option value="Person" <?php echo((SQ_Tools::$options['sq_jsonld_type'] == 'Person') ? 'selected="selected"' : ''); ?>><?php _e('Personal', _SQ_PLUGIN_NAME_); ?></option>
|
680 |
-
</select>
|
681 |
-
</p>
|
682 |
-
</li>
|
683 |
-
<li class="withborder">
|
684 |
-
<p>
|
685 |
-
<span class="sq_jsonld_types sq_jsonld_Organization" style="display: block;float: left; <?php echo((SQ_Tools::$options['sq_jsonld_type'] == 'Person') ? 'display:none' : ''); ?>"><?php _e('Your Organization Name:', _SQ_PLUGIN_NAME_); ?></span>
|
686 |
-
<span class="sq_jsonld_types sq_jsonld_Person" style="width: 105px;display: block;float: left; <?php echo((SQ_Tools::$options['sq_jsonld_type'] == 'Organization') ? 'display:none' : ''); ?>"><?php _e('Your Name:', _SQ_PLUGIN_NAME_); ?></span>
|
687 |
-
<strong><input type="text" name="sq_jsonld_name" value="<?php echo((SQ_Tools::$options['sq_jsonld'][SQ_Tools::$options['sq_jsonld_type']]['name'] <> '') ? SQ_Tools::$options['sq_jsonld'][SQ_Tools::$options['sq_jsonld_type']]['name'] : '') ?>" size="60" style="width: 300px;" /></strong>
|
688 |
-
</p>
|
689 |
-
<p class="sq_jsonld_types sq_jsonld_Person" <?php echo((SQ_Tools::$options['sq_jsonld_type'] == 'Organization') ? 'style="display:none"' : ''); ?>>
|
690 |
-
<span style="width: 105px;display: block;float: left;"><?php _e('Job Title:', _SQ_PLUGIN_NAME_); ?></span>
|
691 |
-
<strong><input type="text" name="sq_jsonld_jobTitle" value="<?php echo((SQ_Tools::$options['sq_jsonld']['Person']['jobTitle'] <> '') ? SQ_Tools::$options['sq_jsonld']['Person']['jobTitle'] : '') ?>" size="60" style="width: 300px;" /></strong>
|
692 |
-
</p>
|
693 |
-
<p>
|
694 |
-
<span class="sq_jsonld_types sq_jsonld_Organization" style="width: 105px; display: block;float: left; <?php echo((SQ_Tools::$options['sq_jsonld_type'] == 'Person') ? 'display:none' : ''); ?>"><?php _e('Logo Url:', _SQ_PLUGIN_NAME_); ?></span>
|
695 |
-
<span class="sq_jsonld_types sq_jsonld_Person" style="width: 105px;display: block;float: left; <?php echo((SQ_Tools::$options['sq_jsonld_type'] == 'Organization') ? 'display:none' : ''); ?>"><?php _e('Image Url:', _SQ_PLUGIN_NAME_); ?></span>
|
696 |
-
<strong><input type="text" name="sq_jsonld_logo" value="<?php echo((SQ_Tools::$options['sq_jsonld'][SQ_Tools::$options['sq_jsonld_type']]['logo'] <> '') ? SQ_Tools::$options['sq_jsonld'][SQ_Tools::$options['sq_jsonld_type']]['logo'] : '') ?>" size="60" style="width: 247px;" /><input id="sq_json_imageselect" type="button" class="sq_button" value="<?php echo __('Select Image', _SQ_PLUGIN_NAME_) ?>" /></strong>
|
697 |
-
</p>
|
698 |
-
<p>
|
699 |
-
<span style="width: 105px;display: block;float: left;"><?php _e('Contact Phone:', _SQ_PLUGIN_NAME_); ?></span>
|
700 |
-
<strong><input type="text" name="sq_jsonld_telephone" value="<?php echo((SQ_Tools::$options['sq_jsonld'][SQ_Tools::$options['sq_jsonld_type']]['telephone'] <> '') ? SQ_Tools::$options['sq_jsonld'][SQ_Tools::$options['sq_jsonld_type']]['telephone'] : '') ?>" size="60" style="width: 350px;" /></strong>
|
701 |
-
</p>
|
702 |
-
<p class="sq_jsonld_types sq_jsonld_Organization" <?php echo((SQ_Tools::$options['sq_jsonld_type'] == 'Person') ? 'style="display:none"' : ''); ?>>
|
703 |
-
<span style="width: 105px;display: block;float: left;"><?php _e('Contact Type:', _SQ_PLUGIN_NAME_); ?></span>
|
704 |
-
<select name="sq_jsonld_contactType" class="sq_jsonld_contactType">
|
705 |
-
<option value="customer service" <?php echo((SQ_Tools::$options['sq_jsonld']['Organization']['contactType'] == 'customer service') ? 'selected="selected"' : ''); ?>><?php _e('Customer Service', _SQ_PLUGIN_NAME_); ?></option>
|
706 |
-
<option value="technical support" <?php echo((SQ_Tools::$options['sq_jsonld']['Organization']['contactType'] == 'technical support') ? 'selected="selected"' : ''); ?>><?php _e('Technical Support', _SQ_PLUGIN_NAME_); ?></option>
|
707 |
-
<option value="billing support" <?php echo((SQ_Tools::$options['sq_jsonld']['Organization']['contactType'] == 'billing support') ? 'selected="selected"' : ''); ?>><?php _e('Billing Support', _SQ_PLUGIN_NAME_); ?></option>
|
708 |
-
<option value="bill payment" <?php echo((SQ_Tools::$options['sq_jsonld']['Organization']['contactType'] == 'bill payment') ? 'selected="selected"' : ''); ?>><?php _e('Bill Payment', _SQ_PLUGIN_NAME_); ?></option>
|
709 |
-
<option value="sales" <?php echo((SQ_Tools::$options['sq_jsonld']['Organization']['contactType'] == 'sales') ? 'selected="selected"' : ''); ?>><?php _e('Sales', _SQ_PLUGIN_NAME_); ?></option>
|
710 |
-
<option value="reservations" <?php echo((SQ_Tools::$options['sq_jsonld']['Organization']['contactType'] == 'reservations') ? 'selected="selected"' : ''); ?>><?php _e('Reservations', _SQ_PLUGIN_NAME_); ?></option>
|
711 |
-
<option value="credit card support" <?php echo((SQ_Tools::$options['sq_jsonld']['Organization']['contactType'] == 'credit card support') ? 'selected="selected"' : ''); ?>><?php _e('Credit Card Support', _SQ_PLUGIN_NAME_); ?></option>
|
712 |
-
<option value="emergency" <?php echo((SQ_Tools::$options['sq_jsonld']['Organization']['contactType'] == 'emergency') ? 'selected="selected"' : ''); ?>><?php _e('Emergency', _SQ_PLUGIN_NAME_); ?></option>
|
713 |
-
<option value="baggage tracking" <?php echo((SQ_Tools::$options['sq_jsonld']['Organization']['contactType'] == 'baggage tracking') ? 'selected="selected"' : ''); ?>><?php _e('Baggage Tracking', _SQ_PLUGIN_NAME_); ?></option>
|
714 |
-
<option value="roadside assistance" <?php echo((SQ_Tools::$options['sq_jsonld']['Organization']['contactType'] == 'roadside assistance') ? 'selected="selected"' : ''); ?>><?php _e('Roadside Assistance', _SQ_PLUGIN_NAME_); ?></option>
|
715 |
-
<option value="package tracking" <?php echo((SQ_Tools::$options['sq_jsonld']['Organization']['contactType'] == 'package tracking') ? 'selected="selected"' : ''); ?>><?php _e('Package Tracking', _SQ_PLUGIN_NAME_); ?></option>
|
716 |
-
</select>
|
717 |
-
</p>
|
718 |
-
|
719 |
-
<p>
|
720 |
-
<span style="width: 105px;display: block;float: left;"><?php _e('Short Description:', _SQ_PLUGIN_NAME_); ?></span>
|
721 |
-
<strong><textarea name="sq_jsonld_description" size="60" style="width: 350px; height: 70px;" /><?php echo((SQ_Tools::$options['sq_jsonld'][SQ_Tools::$options['sq_jsonld_type']]['description'] <> '') ? SQ_Tools::$options['sq_jsonld'][SQ_Tools::$options['sq_jsonld_type']]['description'] : '') ?></textarea>
|
722 |
-
</strong>
|
723 |
-
</p>
|
724 |
-
<p>
|
725 |
-
<input type="button" class="sq_social_link" style="margin-left:120px;background-color: #15b14a;color: white;padding: 5px; cursor: pointer;" value="<?php _e('Add your social accounts for Json-LD', _SQ_PLUGIN_NAME_) ?>" />
|
726 |
-
</p>
|
727 |
-
</li>
|
728 |
-
<li style="position: relative; font-size: 14px;color: #f7681a;">
|
729 |
-
<div class="sq_option_img"></div><?php echo __('How will the search results look once google grab your data.', _SQ_PLUGIN_NAME_) ?>
|
730 |
-
</li>
|
731 |
-
|
732 |
-
</ul>
|
733 |
-
</div>
|
734 |
-
</fieldset>
|
735 |
-
<fieldset id="sq_social_media_accounts">
|
736 |
-
<legend>
|
737 |
-
<span class="sq_legend_title"><?php _e('Social Media Accounts', _SQ_PLUGIN_NAME_); ?></span>
|
738 |
-
<span><?php echo sprintf(__('%sLink your Google+ profile to the content you create%s', _SQ_PLUGIN_NAME_), '<a href="https://developers.google.com/structured-data/" target="_blank">', '</a>'); ?></span>
|
739 |
-
<span><?php echo sprintf(__('%sTwitter account is mandatory for <strong>Twitter Card Validation</strong>%s', _SQ_PLUGIN_NAME_), '<a href="https://cards-dev.twitter.com/validator" target="_blank">', '</a>'); ?></span>
|
740 |
-
<span><?php echo sprintf(__('%sAdd all your social accounts for <strong>JSON-LD Semantic SEO</strong>%s', _SQ_PLUGIN_NAME_), '<a href="http://howto.squirrly.c%so/sides/squirrly-json-ld-structured-data/" target="_blank">', '</a>'); ?></span>
|
741 |
-
<span><?php echo sprintf(__('%sSpecify your social profiles to Google%s', _SQ_PLUGIN_NAME_), '<a href="https://developers.google.com/structured-data/customize/social-profiles" target="_blank">', '</a>'); ?></span>
|
742 |
-
</legend>
|
743 |
-
|
744 |
-
<div>
|
745 |
-
<ul id="sq_settings_sq_use" class="sq_settings_info">
|
746 |
-
<li>
|
747 |
-
<p class="withborder withcode">
|
748 |
-
<span class="sq_icon sq_icon_twitter"></span>
|
749 |
-
<?php _e('Your Twitter Account:', _SQ_PLUGIN_NAME_); ?>
|
750 |
-
<br /><strong><input type="text" name="sq_twitter_account" value="<?php echo((SQ_Tools::$options['sq_twitter_account'] <> '') ? SQ_Tools::$options['sq_twitter_account'] : '') ?>" size="60" placeholder="https://twitter.com/" /> (e.g. https://twitter.com/XXXXXXXXXXXXXXXXXX)</strong>
|
751 |
-
</p>
|
752 |
-
</li>
|
753 |
-
<li>
|
754 |
-
<p class="withborder withcode">
|
755 |
-
<span class="sq_icon sq_icon_googleplus"></span>
|
756 |
-
<?php _e('Google Plus Profile:', _SQ_PLUGIN_NAME_); ?>
|
757 |
-
<br /><strong><input type="text" name="sq_google_plus" value="<?php echo((SQ_Tools::$options['sq_google_plus'] <> '') ? SQ_Tools::$options['sq_google_plus'] : '') ?>" size="60" placeholder="https://plus.google.com/" /> (e.g. https://plus.google.com/+XXXXXXXXXXXXXXXXXX)</strong>
|
758 |
-
</p>
|
759 |
-
</li>
|
760 |
-
<li>
|
761 |
-
<p class="withborder withcode">
|
762 |
-
<span class="sq_icon sq_icon_facebook"></span>
|
763 |
-
<?php _e('Facebook Profile:', _SQ_PLUGIN_NAME_); ?>
|
764 |
-
<br /><strong><input type="text" name="sq_facebook_account" value="<?php echo((SQ_Tools::$options['sq_facebook_account'] <> '') ? SQ_Tools::$options['sq_facebook_account'] : '') ?>" size="60" placeholder="https://www.facebook.com/" /> (e.g. https://www.facebook.com/XXXXXXXXXXXXXXXXXX)</strong>
|
765 |
-
</p>
|
766 |
-
</li>
|
767 |
-
<li>
|
768 |
-
<p class="withborder withcode">
|
769 |
-
<span class="sq_icon sq_icon_linkedin"></span>
|
770 |
-
<?php _e('Linkedin Profile:', _SQ_PLUGIN_NAME_); ?>
|
771 |
-
<br /><strong><input type="text" name="sq_linkedin_account" value="<?php echo((SQ_Tools::$options['sq_linkedin_account'] <> '') ? SQ_Tools::$options['sq_linkedin_account'] : '') ?>" size="60" placeholder="https://www.linkedin.com/" /> (e.g. https://www.linkedin.com/XXXX/XXXXXXXXXXXXXXXXXX)</strong>
|
772 |
-
</p>
|
773 |
-
</li>
|
774 |
-
<li>
|
775 |
-
<p class="withborder withcode"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|