Version Description
- Follow/Nofollow bulk link edition
- Link re-index tool from the bulk link editor
- Follow/Nofollow on Wordpress content (onpage SEO)
- Index/Noindex on Wordpress content (onpage SEO)
Download this release
Release Info
Developer | JoomUnited |
Plugin | WP Meta SEO |
Version | 2.2.0 |
Comparing to | |
See all releases |
Code changes from version 2.1.0 to 2.2.0
- css/metaseo_admin.css +29 -1
- inc/class-metaseo-mutils.php +0 -205
- inc/class.metaseo-admin.php +208 -28
- inc/class.metaseo-broken-link-table.php +78 -10
- inc/class.metaseo-content-list-table.php +29 -1
- inc/class.metaseo-link-list-table.php +104 -123
- inc/class.metaseo-meta.php +1 -1
- inc/class.metaseo-metabox.php +41 -9
- inc/pages/content-meta.php +20 -0
- inc/pages/link-meta.php +15 -2
- inc/pages/metaseo-broken-link.php +1 -46
- js/metaseo_admin.js +242 -63
- languages/wp-meta-seo-en_US.mo +0 -0
- languages/wp-meta-seo-en_US.po +58 -4
- languages/wp-meta-seo-fr_FR.mo +0 -0
- languages/wp-meta-seo-fr_FR.po +283 -69
- languages/wp-meta-seo.pot +56 -2
- readme.txt +10 -2
- wp-meta-seo.php +32 -10
css/metaseo_admin.css
CHANGED
@@ -20,6 +20,15 @@ and open the template in the editor.
|
|
20 |
width: 30%;
|
21 |
}
|
22 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
.title-len, .desc-len, .word-exceed , .keywords-len {
|
24 |
color: #FFF;
|
25 |
border-radius: 2px;
|
@@ -429,7 +438,7 @@ strong {
|
|
429 |
float: left;
|
430 |
}
|
431 |
|
432 |
-
.wpms_scan_link{
|
433 |
float: left;
|
434 |
}
|
435 |
|
@@ -578,4 +587,23 @@ strong {
|
|
578 |
width: 20px;
|
579 |
height: 20px;
|
580 |
display:none;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
581 |
}
|
20 |
width: 30%;
|
21 |
}
|
22 |
|
23 |
+
.column-col_follow,.column-col_index{
|
24 |
+
width: 5%;
|
25 |
+
text-align: center;
|
26 |
+
}
|
27 |
+
|
28 |
+
.metaseo_post_follow,.metaseo_post_index{
|
29 |
+
margin-top: 20px !important;
|
30 |
+
}
|
31 |
+
|
32 |
.title-len, .desc-len, .word-exceed , .keywords-len {
|
33 |
color: #FFF;
|
34 |
border-radius: 2px;
|
438 |
float: left;
|
439 |
}
|
440 |
|
441 |
+
.wp-meta-seo_page_metaseo_broken_link .wpms_scan_link{
|
442 |
float: left;
|
443 |
}
|
444 |
|
587 |
width: 20px;
|
588 |
height: 20px;
|
589 |
display:none;
|
590 |
+
}
|
591 |
+
|
592 |
+
.wpmslabel{
|
593 |
+
width:275px;
|
594 |
+
float: left;
|
595 |
+
text-align: left;
|
596 |
+
color: #23282d;
|
597 |
+
line-height: 1.3;
|
598 |
+
font-weight: 600;
|
599 |
+
font-size: 13px;
|
600 |
+
margin-top:5px;
|
601 |
+
}
|
602 |
+
|
603 |
+
.metaseo_metabox_follow,.metaseo_metabox_index{
|
604 |
+
margin-left: 15px !important;
|
605 |
+
}
|
606 |
+
|
607 |
+
.wpms_change_follow{
|
608 |
+
cursor: pointer;
|
609 |
}
|
inc/class-metaseo-mutils.php
DELETED
@@ -1,205 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class WPMSEO_Utils {
|
4 |
-
|
5 |
-
public static $has_filters;
|
6 |
-
private static $cache_clear = array();
|
7 |
-
|
8 |
-
public static function is_url_relative($url) {
|
9 |
-
return ( strpos($url, 'http') !== 0 && strpos($url, '//') !== 0 );
|
10 |
-
}
|
11 |
-
|
12 |
-
public static function standardize_whitespace($string) {
|
13 |
-
return trim(str_replace(' ', ' ', str_replace(array("\t", "\n", "\r", "\f"), ' ', $string)));
|
14 |
-
}
|
15 |
-
|
16 |
-
public static function strip_shortcode($text) {
|
17 |
-
return preg_replace('`\[[^\]]+\]`s', '', $text);
|
18 |
-
}
|
19 |
-
|
20 |
-
public static function translate_score($val, $css_value = true) {
|
21 |
-
if ($val > 10) {
|
22 |
-
$val = round($val / 10);
|
23 |
-
}
|
24 |
-
switch ($val) {
|
25 |
-
case 0:
|
26 |
-
$score = __('N/A', 'wp-meta-seo');
|
27 |
-
$css = 'na';
|
28 |
-
break;
|
29 |
-
case 4:
|
30 |
-
case 5:
|
31 |
-
$score = __('Poor', 'wp-meta-seo');
|
32 |
-
$css = 'poor';
|
33 |
-
break;
|
34 |
-
case 6:
|
35 |
-
case 7:
|
36 |
-
$score = __('OK', 'wp-meta-seo');
|
37 |
-
$css = 'ok';
|
38 |
-
break;
|
39 |
-
case 8:
|
40 |
-
case 9:
|
41 |
-
case 10:
|
42 |
-
$score = __('Good', 'wp-meta-seo');
|
43 |
-
$css = 'good';
|
44 |
-
break;
|
45 |
-
default:
|
46 |
-
$score = __('Bad', 'wp-meta-seo');
|
47 |
-
$css = 'bad';
|
48 |
-
break;
|
49 |
-
}
|
50 |
-
|
51 |
-
if ($css_value) {
|
52 |
-
return $css;
|
53 |
-
} else {
|
54 |
-
return $score;
|
55 |
-
}
|
56 |
-
}
|
57 |
-
|
58 |
-
public static function sanitize_text_field($value) {
|
59 |
-
$filtered = wp_check_invalid_utf8($value);
|
60 |
-
|
61 |
-
if (strpos($filtered, '<') !== false) {
|
62 |
-
$filtered = wp_pre_kses_less_than($filtered);
|
63 |
-
// This will strip extra whitespace for us.
|
64 |
-
$filtered = wp_strip_all_tags($filtered, true);
|
65 |
-
} else {
|
66 |
-
$filtered = trim(preg_replace('`[\r\n\t ]+`', ' ', $filtered));
|
67 |
-
}
|
68 |
-
|
69 |
-
$found = false;
|
70 |
-
while (preg_match('`[^%](%[a-f0-9]{2})`i', $filtered, $match)) {
|
71 |
-
$filtered = str_replace($match[1], '', $filtered);
|
72 |
-
$found = true;
|
73 |
-
}
|
74 |
-
unset($match);
|
75 |
-
|
76 |
-
if ($found) {
|
77 |
-
// Strip out the whitespace that may now exist after removing the octets.
|
78 |
-
$filtered = trim(preg_replace('` +`', ' ', $filtered));
|
79 |
-
}
|
80 |
-
|
81 |
-
|
82 |
-
return apply_filters('sanitize_text_field', $filtered, $value);
|
83 |
-
}
|
84 |
-
|
85 |
-
public static function sanitize_url($value, $allowed_protocols = array('http', 'https')) {
|
86 |
-
return esc_url_raw(sanitize_text_field(rawurldecode($value)), $allowed_protocols);
|
87 |
-
}
|
88 |
-
|
89 |
-
public static function validate_int($value) {
|
90 |
-
if (!isset(self::$has_filters)) {
|
91 |
-
self::$has_filters = extension_loaded('filter');
|
92 |
-
}
|
93 |
-
|
94 |
-
if (self::$has_filters) {
|
95 |
-
return filter_var($value, FILTER_VALIDATE_INT);
|
96 |
-
} else {
|
97 |
-
return self::emulate_filter_int($value);
|
98 |
-
}
|
99 |
-
}
|
100 |
-
|
101 |
-
public static function calc($number1, $action, $number2, $round = false, $decimals = 0, $precision = 10) {
|
102 |
-
static $bc;
|
103 |
-
|
104 |
-
if (!is_scalar($number1) || !is_scalar($number2)) {
|
105 |
-
return false;
|
106 |
-
}
|
107 |
-
|
108 |
-
if (!isset($bc)) {
|
109 |
-
$bc = extension_loaded('bcmath');
|
110 |
-
}
|
111 |
-
|
112 |
-
if ($bc) {
|
113 |
-
$number1 = number_format($number1, 10, '.', '');
|
114 |
-
$number2 = number_format($number2, 10, '.', '');
|
115 |
-
}
|
116 |
-
|
117 |
-
$result = null;
|
118 |
-
$compare = false;
|
119 |
-
|
120 |
-
switch ($action) {
|
121 |
-
case '+':
|
122 |
-
case 'add':
|
123 |
-
case 'addition':
|
124 |
-
$result = ( $bc ) ? bcadd($number1, $number2, $precision) /* string */ : ( $number1 + $number2 );
|
125 |
-
break;
|
126 |
-
|
127 |
-
case '-':
|
128 |
-
case 'sub':
|
129 |
-
case 'subtract':
|
130 |
-
$result = ( $bc ) ? bcsub($number1, $number2, $precision) /* string */ : ( $number1 - $number2 );
|
131 |
-
break;
|
132 |
-
|
133 |
-
case '*':
|
134 |
-
case 'mul':
|
135 |
-
case 'multiply':
|
136 |
-
$result = ( $bc ) ? bcmul($number1, $number2, $precision) /* string */ : ( $number1 * $number2 );
|
137 |
-
break;
|
138 |
-
|
139 |
-
case '/':
|
140 |
-
case 'div':
|
141 |
-
case 'divide':
|
142 |
-
if ($bc) {
|
143 |
-
$result = bcdiv($number1, $number2, $precision); // String, or NULL if right_operand is 0.
|
144 |
-
} elseif ($number2 != 0) {
|
145 |
-
$result = ( $number1 / $number2 );
|
146 |
-
}
|
147 |
-
|
148 |
-
if (!isset($result)) {
|
149 |
-
$result = 0;
|
150 |
-
}
|
151 |
-
break;
|
152 |
-
|
153 |
-
case '%':
|
154 |
-
case 'mod':
|
155 |
-
case 'modulus':
|
156 |
-
if ($bc) {
|
157 |
-
$result = bcmod($number1, $number2, $precision); // String, or NULL if modulus is 0.
|
158 |
-
} elseif ($number2 != 0) {
|
159 |
-
$result = ( $number1 % $number2 );
|
160 |
-
}
|
161 |
-
|
162 |
-
if (!isset($result)) {
|
163 |
-
$result = 0;
|
164 |
-
}
|
165 |
-
break;
|
166 |
-
|
167 |
-
case '=':
|
168 |
-
case 'comp':
|
169 |
-
case 'compare':
|
170 |
-
$compare = true;
|
171 |
-
if ($bc) {
|
172 |
-
$result = bccomp($number1, $number2, $precision); // Returns int 0, 1 or -1.
|
173 |
-
} else {
|
174 |
-
$result = ( $number1 == $number2 ) ? 0 : ( ( $number1 > $number2 ) ? 1 : - 1 );
|
175 |
-
}
|
176 |
-
break;
|
177 |
-
}
|
178 |
-
|
179 |
-
if (isset($result)) {
|
180 |
-
if ($compare === false) {
|
181 |
-
if ($round === true) {
|
182 |
-
$result = round(floatval($result), $decimals);
|
183 |
-
if ($decimals === 0) {
|
184 |
-
$result = (int) $result;
|
185 |
-
}
|
186 |
-
} else {
|
187 |
-
$result = ( intval($result) == $result ) ? intval($result) : floatval($result);
|
188 |
-
}
|
189 |
-
}
|
190 |
-
|
191 |
-
return $result;
|
192 |
-
}
|
193 |
-
|
194 |
-
return false;
|
195 |
-
}
|
196 |
-
|
197 |
-
public static function trim_nbsp_from_string($string) {
|
198 |
-
$find = array(' ', chr(0xC2) . chr(0xA0));
|
199 |
-
$string = str_replace($find, ' ', $string);
|
200 |
-
$string = trim($string);
|
201 |
-
|
202 |
-
return $string;
|
203 |
-
}
|
204 |
-
|
205 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inc/class.metaseo-admin.php
CHANGED
@@ -20,6 +20,8 @@ class MetaSeo_Admin {
|
|
20 |
"metaseo_seovalidate" => 0,
|
21 |
"metaseo_linkfield" => 1,
|
22 |
"metaseo_metatitle_tab" => 0,
|
|
|
|
|
23 |
);
|
24 |
$settings = get_option( '_metaseo_settings' );
|
25 |
|
@@ -60,11 +62,11 @@ class MetaSeo_Admin {
|
|
60 |
add_action( 'delete_post', array('MetaSeo_Broken_Link_Table','wpms_delete_post' ));
|
61 |
add_action( 'edit_comment', array('MetaSeo_Broken_Link_Table','wpms_update_comment') );
|
62 |
add_action( 'deleted_comment', array('MetaSeo_Broken_Link_Table','wpms_deleted_comment') );
|
63 |
-
|
64 |
}
|
65 |
|
66 |
function metaseo_create_404page(){
|
67 |
global $wpdb;
|
|
|
68 |
// create table wpms_links
|
69 |
$sql = "CREATE TABLE IF NOT EXISTS `{$wpdb->prefix}wpms_links`(
|
70 |
`id` int(20) unsigned NOT NULL AUTO_INCREMENT,
|
@@ -83,10 +85,32 @@ class MetaSeo_Admin {
|
|
83 |
`warning` tinyint(1) unsigned NOT NULL DEFAULT '0',
|
84 |
`dismissed` tinyint(1) NOT NULL DEFAULT '0',
|
85 |
PRIMARY KEY (id))";
|
|
|
86 |
|
87 |
require_once(ABSPATH.'wp-admin/includes/upgrade.php');
|
88 |
dbDelta($sql);
|
89 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
90 |
// create page 404
|
91 |
$sql = $wpdb->prepare("SELECT COUNT(*) FROM " . $wpdb->prefix . "posts WHERE post_title = %s" , array("WP Meta SEO 404 Page"));
|
92 |
$post_if = $wpdb->get_var($sql);
|
@@ -215,7 +239,7 @@ class MetaSeo_Admin {
|
|
215 |
}else{
|
216 |
if(!empty($tags_h1)) {
|
217 |
foreach($tags_h1 as $order => $tagh1){
|
218 |
-
$words_tagh1 = preg_split('~[^\p{L}\p{N}\']+~u',strtolower($tagh1->nodeValue));
|
219 |
if(is_array($words_tagh1) && is_array($words_post_title)){
|
220 |
foreach ($words_tagh1 as $mh){
|
221 |
if(in_array($mh, $words_post_title) && $mh!=''){
|
@@ -228,7 +252,7 @@ class MetaSeo_Admin {
|
|
228 |
|
229 |
if(!empty($tags_h2)) {
|
230 |
foreach($tags_h2 as $order => $tagh2){
|
231 |
-
$words_tagh2 = preg_split('~[^\p{L}\p{N}\']+~u',strtolower($tagh2->nodeValue));
|
232 |
if(is_array($words_tagh2) && is_array($words_post_title)){
|
233 |
foreach ($words_tagh2 as $mh){
|
234 |
if(in_array($mh, $words_post_title) && $mh!=''){
|
@@ -241,7 +265,7 @@ class MetaSeo_Admin {
|
|
241 |
|
242 |
if(!empty($tags_h3)) {
|
243 |
foreach($tags_h3 as $order => $tagh3){
|
244 |
-
$words_tagh3 = preg_split('~[^\p{L}\p{N}\']+~u',strtolower($tagh3->nodeValue));
|
245 |
if(is_array($words_tagh3) && is_array($words_post_title)){
|
246 |
foreach ($words_tagh3 as $mh){
|
247 |
if(in_array($mh, $words_post_title) && $mh!=''){
|
@@ -254,7 +278,7 @@ class MetaSeo_Admin {
|
|
254 |
|
255 |
if(!empty($tags_h4)) {
|
256 |
foreach($tags_h4 as $order => $tagh4){
|
257 |
-
$words_tagh4 = preg_split('~[^\p{L}\p{N}\']+~u',strtolower($tagh4->nodeValue));
|
258 |
if(is_array($words_tagh4) && is_array($words_post_title)){
|
259 |
foreach ($words_tagh4 as $mh){
|
260 |
if(in_array($mh, $words_post_title) && $mh!=''){
|
@@ -267,7 +291,7 @@ class MetaSeo_Admin {
|
|
267 |
|
268 |
if(!empty($tags_h5)) {
|
269 |
foreach($tags_h5 as $order => $tagh5){
|
270 |
-
$words_tagh5 = preg_split('~[^\p{L}\p{N}\']+~u',strtolower($tagh5->nodeValue));
|
271 |
if(is_array($words_tagh5) && is_array($words_post_title)){
|
272 |
foreach ($words_tagh5 as $mh){
|
273 |
if(in_array($mh, $words_post_title) && $mh!=''){
|
@@ -280,7 +304,7 @@ class MetaSeo_Admin {
|
|
280 |
|
281 |
if(!empty($tags_h6)) {
|
282 |
foreach($tags_h6 as $order => $tagh6){
|
283 |
-
$words_tagh6 = preg_split('~[^\p{L}\p{N}\']+~u',strtolower($tagh6->nodeValue));
|
284 |
if(is_array($words_tagh6) && is_array($words_post_title)){
|
285 |
foreach ($words_tagh6 as $mh){
|
286 |
if(in_array($mh, $words_post_title) && $mh!=''){
|
@@ -422,30 +446,164 @@ class MetaSeo_Admin {
|
|
422 |
}
|
423 |
|
424 |
function metaseo_update_link(){
|
425 |
-
if(isset($_POST['
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
if(!empty($post) && !empty($post->post_content)){
|
431 |
-
if(strpos($post->post_content, $link_old) !== false){
|
432 |
-
$content = str_replace($link_old, $link_new, $post->post_content);
|
433 |
-
$my_post = array(
|
434 |
-
'ID' => $_POST['postid'],
|
435 |
-
'post_content' => $content
|
436 |
-
);
|
437 |
-
wp_update_post( $my_post );
|
438 |
-
wp_send_json(array('link_new' => stripcslashes($link_new)));
|
439 |
-
}else{
|
440 |
-
wp_send_json(false);
|
441 |
-
}
|
442 |
-
}
|
443 |
wp_send_json(false);
|
444 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
445 |
}
|
446 |
wp_send_json(false);
|
447 |
}
|
448 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
449 |
function wpms_save_settings404(){
|
450 |
if(isset($_POST['wpms_redirect'])){
|
451 |
update_option('wpms_settings_404', $_POST['wpms_redirect']);
|
@@ -467,6 +625,8 @@ class MetaSeo_Admin {
|
|
467 |
add_settings_field('metaseo_showsocial', __('Social networks meta', 'wp-meta-seo'), array( $this, 'showsocial' ), 'metaseo_settings', 'metaseo_dashboard');
|
468 |
add_settings_field('metaseo_seovalidate', __('Force SEO validation', 'wp-meta-seo'), array( $this, 'showseovalidate' ), 'metaseo_settings', 'metaseo_dashboard');
|
469 |
add_settings_field('metaseo_linkfield', __('Link text field', 'wp-meta-seo'), array( $this, 'showlinkfield' ), 'metaseo_settings', 'metaseo_dashboard');
|
|
|
|
|
470 |
}
|
471 |
|
472 |
public function showmetatitletab(){
|
@@ -532,6 +692,22 @@ class MetaSeo_Admin {
|
|
532 |
<?php
|
533 |
}
|
534 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
535 |
public function showfacebook(){
|
536 |
$face = isset( $this->settings['metaseo_showfacebook'] ) ? $this->settings['metaseo_showfacebook'] : '';
|
537 |
echo '<input id="metaseo_showfacebook" name="_metaseo_settings[metaseo_showfacebook]" type="text" value="'.esc_attr( $face ).'" size="50"/>';
|
@@ -707,7 +883,7 @@ class MetaSeo_Admin {
|
|
707 |
array(
|
708 |
'metaseo_dashboard',
|
709 |
'',
|
710 |
-
__('Image
|
711 |
$manage_options_cap,
|
712 |
'metaseo_image_meta',
|
713 |
array($this, 'load_page'),
|
@@ -725,7 +901,7 @@ class MetaSeo_Admin {
|
|
725 |
array(
|
726 |
'metaseo_dashboard',
|
727 |
'',
|
728 |
-
__('Link
|
729 |
$manage_options_cap,
|
730 |
'metaseo_link_meta',
|
731 |
array($this, 'load_page'),
|
@@ -1033,6 +1209,10 @@ class MetaSeo_Admin {
|
|
1033 |
add_action('wp_ajax_wpms_recheck_link',array('MetaSeo_Broken_Link_Table','wpms_recheck_link'));
|
1034 |
add_action('wp_ajax_wpms_scan_link',array('MetaSeo_Broken_Link_Table','wpms_scan_link'));
|
1035 |
add_action('wp_ajax_wpms_flush_link',array('MetaSeo_Broken_Link_Table','wpms_flush_link'));
|
|
|
|
|
|
|
|
|
1036 |
}
|
1037 |
|
1038 |
}
|
20 |
"metaseo_seovalidate" => 0,
|
21 |
"metaseo_linkfield" => 1,
|
22 |
"metaseo_metatitle_tab" => 0,
|
23 |
+
"metaseo_follow" => 0,
|
24 |
+
"metaseo_index" => 0
|
25 |
);
|
26 |
$settings = get_option( '_metaseo_settings' );
|
27 |
|
62 |
add_action( 'delete_post', array('MetaSeo_Broken_Link_Table','wpms_delete_post' ));
|
63 |
add_action( 'edit_comment', array('MetaSeo_Broken_Link_Table','wpms_update_comment') );
|
64 |
add_action( 'deleted_comment', array('MetaSeo_Broken_Link_Table','wpms_deleted_comment') );
|
|
|
65 |
}
|
66 |
|
67 |
function metaseo_create_404page(){
|
68 |
global $wpdb;
|
69 |
+
|
70 |
// create table wpms_links
|
71 |
$sql = "CREATE TABLE IF NOT EXISTS `{$wpdb->prefix}wpms_links`(
|
72 |
`id` int(20) unsigned NOT NULL AUTO_INCREMENT,
|
85 |
`warning` tinyint(1) unsigned NOT NULL DEFAULT '0',
|
86 |
`dismissed` tinyint(1) NOT NULL DEFAULT '0',
|
87 |
PRIMARY KEY (id))";
|
88 |
+
|
89 |
|
90 |
require_once(ABSPATH.'wp-admin/includes/upgrade.php');
|
91 |
dbDelta($sql);
|
92 |
|
93 |
+
$row = $wpdb->get_results( "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
|
94 |
+
WHERE table_name = '".$wpdb->prefix."wpms_links' AND column_name = 'follow'" );
|
95 |
+
|
96 |
+
if(empty($row)){
|
97 |
+
$wpdb->query("ALTER TABLE ".$wpdb->prefix."wpms_links ADD follow tinyint(1) DEFAULT 1");
|
98 |
+
}
|
99 |
+
|
100 |
+
$row = $wpdb->get_results( "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
|
101 |
+
WHERE table_name = '".$wpdb->prefix."wpms_links' AND column_name = 'meta_title'" );
|
102 |
+
|
103 |
+
if(empty($row)){
|
104 |
+
$wpdb->query("ALTER TABLE ".$wpdb->prefix."wpms_links ADD meta_title varchar(250) DEFAULT ''");
|
105 |
+
}
|
106 |
+
|
107 |
+
$row = $wpdb->get_results( "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
|
108 |
+
WHERE table_name = '".$wpdb->prefix."wpms_links' AND column_name = 'internal'" );
|
109 |
+
|
110 |
+
if(empty($row)){
|
111 |
+
$wpdb->query("ALTER TABLE ".$wpdb->prefix."wpms_links ADD internal tinyint(1) DEFAULT 1");
|
112 |
+
}
|
113 |
+
|
114 |
// create page 404
|
115 |
$sql = $wpdb->prepare("SELECT COUNT(*) FROM " . $wpdb->prefix . "posts WHERE post_title = %s" , array("WP Meta SEO 404 Page"));
|
116 |
$post_if = $wpdb->get_var($sql);
|
239 |
}else{
|
240 |
if(!empty($tags_h1)) {
|
241 |
foreach($tags_h1 as $order => $tagh1){
|
242 |
+
$words_tagh1 = preg_split('~[^\p{L}\p{N}\']+~u',utf8_decode(strtolower($tagh1->nodeValue)));
|
243 |
if(is_array($words_tagh1) && is_array($words_post_title)){
|
244 |
foreach ($words_tagh1 as $mh){
|
245 |
if(in_array($mh, $words_post_title) && $mh!=''){
|
252 |
|
253 |
if(!empty($tags_h2)) {
|
254 |
foreach($tags_h2 as $order => $tagh2){
|
255 |
+
$words_tagh2 = preg_split('~[^\p{L}\p{N}\']+~u',utf8_decode(strtolower($tagh2->nodeValue)));
|
256 |
if(is_array($words_tagh2) && is_array($words_post_title)){
|
257 |
foreach ($words_tagh2 as $mh){
|
258 |
if(in_array($mh, $words_post_title) && $mh!=''){
|
265 |
|
266 |
if(!empty($tags_h3)) {
|
267 |
foreach($tags_h3 as $order => $tagh3){
|
268 |
+
$words_tagh3 = preg_split('~[^\p{L}\p{N}\']+~u',utf8_decode(strtolower($tagh3->nodeValue)));
|
269 |
if(is_array($words_tagh3) && is_array($words_post_title)){
|
270 |
foreach ($words_tagh3 as $mh){
|
271 |
if(in_array($mh, $words_post_title) && $mh!=''){
|
278 |
|
279 |
if(!empty($tags_h4)) {
|
280 |
foreach($tags_h4 as $order => $tagh4){
|
281 |
+
$words_tagh4 = preg_split('~[^\p{L}\p{N}\']+~u',utf8_decode(strtolower($tagh4->nodeValue)));
|
282 |
if(is_array($words_tagh4) && is_array($words_post_title)){
|
283 |
foreach ($words_tagh4 as $mh){
|
284 |
if(in_array($mh, $words_post_title) && $mh!=''){
|
291 |
|
292 |
if(!empty($tags_h5)) {
|
293 |
foreach($tags_h5 as $order => $tagh5){
|
294 |
+
$words_tagh5 = preg_split('~[^\p{L}\p{N}\']+~u',utf8_decode(strtolower($tagh5->nodeValue)));
|
295 |
if(is_array($words_tagh5) && is_array($words_post_title)){
|
296 |
foreach ($words_tagh5 as $mh){
|
297 |
if(in_array($mh, $words_post_title) && $mh!=''){
|
304 |
|
305 |
if(!empty($tags_h6)) {
|
306 |
foreach($tags_h6 as $order => $tagh6){
|
307 |
+
$words_tagh6 = preg_split('~[^\p{L}\p{N}\']+~u',utf8_decode(strtolower($tagh6->nodeValue)));
|
308 |
if(is_array($words_tagh6) && is_array($words_post_title)){
|
309 |
foreach ($words_tagh6 as $mh){
|
310 |
if(in_array($mh, $words_post_title) && $mh!=''){
|
446 |
}
|
447 |
|
448 |
function metaseo_update_link(){
|
449 |
+
if (isset($_POST['link_id'])) {
|
450 |
+
global $wpdb;
|
451 |
+
$sql = $wpdb->prepare("SELECT * FROM " . $wpdb->prefix . "wpms_links WHERE id=%d", array($_POST['link_id']));
|
452 |
+
$link_detail = $wpdb->get_row($sql);
|
453 |
+
if (empty($link_detail))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
454 |
wp_send_json(false);
|
455 |
+
|
456 |
+
$value = array('meta_title' => $_POST['meta_title']);
|
457 |
+
$wpdb->update(
|
458 |
+
$wpdb->prefix . 'wpms_links', $value, array('id' => $_POST['link_id'])
|
459 |
+
);
|
460 |
+
|
461 |
+
|
462 |
+
$post = get_post($link_detail->source_id);
|
463 |
+
if(!empty($post)){
|
464 |
+
$old_value = $post->post_content;
|
465 |
+
$edit_result = $this->wpms_edit_linkhtml($old_value,$link_detail->link_url,$link_detail->link_url,$_POST['meta_title']);
|
466 |
+
$my_post = array(
|
467 |
+
'ID' => $link_detail->source_id,
|
468 |
+
'post_content' => $edit_result['content']
|
469 |
+
);
|
470 |
+
remove_action('post_updated', array('MetaSeo_Broken_Link_Table', 'wpms_update_post'));
|
471 |
+
wp_update_post($my_post);
|
472 |
+
wp_send_json(array('status' => true));
|
473 |
+
}
|
474 |
+
|
475 |
}
|
476 |
wp_send_json(false);
|
477 |
}
|
478 |
|
479 |
+
function metaseo_update_pageindex(){
|
480 |
+
if(isset($_POST['page_id']) && isset($_POST['index'])){
|
481 |
+
update_post_meta($_POST['page_id'], '_metaseo_metaindex', $_POST['index']);
|
482 |
+
wp_send_json(array('status' => true));
|
483 |
+
}
|
484 |
+
wp_send_json(array('status' => false));
|
485 |
+
}
|
486 |
+
|
487 |
+
function metaseo_update_pagefollow(){
|
488 |
+
if(isset($_POST['page_id']) && isset($_POST['follow'])){
|
489 |
+
update_post_meta($_POST['page_id'], '_metaseo_metafollow', $_POST['follow']);
|
490 |
+
wp_send_json(array('status' => true));
|
491 |
+
}
|
492 |
+
wp_send_json(array('status' => false));
|
493 |
+
}
|
494 |
+
|
495 |
+
function metaseo_update_follow(){
|
496 |
+
if (isset($_POST['link_id'])) {
|
497 |
+
$this->update_follow($_POST['link_id'],$_POST['follow']);
|
498 |
+
wp_send_json(array('status' => true));
|
499 |
+
}
|
500 |
+
wp_send_json(array('status' => false));
|
501 |
+
}
|
502 |
+
|
503 |
+
function metaseo_update_multiplefollow(){
|
504 |
+
global $wpdb;
|
505 |
+
$follow_value = $_POST['follow_value'];
|
506 |
+
$limit = 20;
|
507 |
+
|
508 |
+
switch ($follow_value){
|
509 |
+
case 'follow_selected':
|
510 |
+
if (empty($_POST['linkids'])) wp_send_json(array('status' => true));
|
511 |
+
$follow = 1;
|
512 |
+
foreach ($_POST['linkids'] as $linkId){
|
513 |
+
$this->update_follow($linkId,$follow);
|
514 |
+
}
|
515 |
+
break;
|
516 |
+
|
517 |
+
case 'follow_all':
|
518 |
+
$follow = 1;
|
519 |
+
$i = 0;
|
520 |
+
$query = "SELECT * FROM " . $wpdb->prefix . "wpms_links WHERE follow=0 AND type='url'";
|
521 |
+
$links = $wpdb->get_results($query);
|
522 |
+
foreach ($links as $link){
|
523 |
+
if($i > $limit){
|
524 |
+
wp_send_json(array('status' => false,'message' => 'limit'));
|
525 |
+
}else{
|
526 |
+
$this->update_follow($link->id,$follow);
|
527 |
+
$i++;
|
528 |
+
}
|
529 |
+
}
|
530 |
+
|
531 |
+
break;
|
532 |
+
|
533 |
+
case 'nofollow_selected':
|
534 |
+
$follow = 0;
|
535 |
+
if (empty($_POST['linkids'])) wp_send_json(array('status' => true));
|
536 |
+
foreach ($_POST['linkids'] as $linkId){
|
537 |
+
$this->update_follow($linkId,$follow);
|
538 |
+
}
|
539 |
+
break;
|
540 |
+
|
541 |
+
case 'nofollow_all':
|
542 |
+
$follow = 0;
|
543 |
+
$i = 0;
|
544 |
+
$query = "SELECT * FROM " . $wpdb->prefix . "wpms_links WHERE follow=1 AND type='url'";
|
545 |
+
$links = $wpdb->get_results($query);
|
546 |
+
foreach ($links as $link){
|
547 |
+
if($i>$limit){
|
548 |
+
wp_send_json(array('status' => false,'message' => 'limit'));
|
549 |
+
}else{
|
550 |
+
$this->update_follow($link->id,$follow);
|
551 |
+
$i++;
|
552 |
+
}
|
553 |
+
}
|
554 |
+
break;
|
555 |
+
}
|
556 |
+
wp_send_json(array('status' => true));
|
557 |
+
}
|
558 |
+
|
559 |
+
function update_follow($linkId,$follow){
|
560 |
+
global $wpdb;
|
561 |
+
$sql = $wpdb->prepare("SELECT * FROM " . $wpdb->prefix . "wpms_links WHERE id=%d", array($linkId));
|
562 |
+
$link_detail = $wpdb->get_row($sql);
|
563 |
+
if (empty($link_detail))
|
564 |
+
wp_send_json(array('status' => false));
|
565 |
+
|
566 |
+
$value = array('follow' => $follow);
|
567 |
+
$wpdb->update(
|
568 |
+
$wpdb->prefix . 'wpms_links', $value, array('id' => $linkId)
|
569 |
+
);
|
570 |
+
|
571 |
+
$post = get_post($link_detail->source_id);
|
572 |
+
if(!empty($post)){
|
573 |
+
$old_value = $post->post_content;
|
574 |
+
$edit_result = $this->wpms_edit_linkhtml($old_value,$link_detail->link_url,$link_detail->link_url,$link_detail->meta_title,$follow);
|
575 |
+
$my_post = array(
|
576 |
+
'ID' => $link_detail->source_id,
|
577 |
+
'post_content' => $edit_result['content']
|
578 |
+
);
|
579 |
+
remove_action('post_updated', array('MetaSeo_Broken_Link_Table', 'wpms_update_post'));
|
580 |
+
wp_update_post($my_post);
|
581 |
+
}
|
582 |
+
}
|
583 |
+
|
584 |
+
public function wpms_edit_linkhtml($content, $new_url, $old_url,$meta_title,$follow, $new_text = null) {
|
585 |
+
//Save the old & new URLs for use in the edit callback.
|
586 |
+
$args = array(
|
587 |
+
'old_url' => $old_url,
|
588 |
+
'new_url' => $new_url,
|
589 |
+
'new_text' => $new_text,
|
590 |
+
'meta_title' => $meta_title,
|
591 |
+
'follow' => $follow
|
592 |
+
);
|
593 |
+
|
594 |
+
//Find all links and replace those that match $old_url.
|
595 |
+
$content = MetaSeo_Broken_Link_Table::wpms_multi_edit($content, array('MetaSeo_Broken_Link_Table', 'wpms_edithtml_callback'), $args);
|
596 |
+
|
597 |
+
$result = array(
|
598 |
+
'content' => $content,
|
599 |
+
'raw_url' => $new_url,
|
600 |
+
);
|
601 |
+
if (isset($new_text)) {
|
602 |
+
$result['link_text'] = $new_text;
|
603 |
+
}
|
604 |
+
return $result;
|
605 |
+
}
|
606 |
+
|
607 |
function wpms_save_settings404(){
|
608 |
if(isset($_POST['wpms_redirect'])){
|
609 |
update_option('wpms_settings_404', $_POST['wpms_redirect']);
|
625 |
add_settings_field('metaseo_showsocial', __('Social networks meta', 'wp-meta-seo'), array( $this, 'showsocial' ), 'metaseo_settings', 'metaseo_dashboard');
|
626 |
add_settings_field('metaseo_seovalidate', __('Force SEO validation', 'wp-meta-seo'), array( $this, 'showseovalidate' ), 'metaseo_settings', 'metaseo_dashboard');
|
627 |
add_settings_field('metaseo_linkfield', __('Link text field', 'wp-meta-seo'), array( $this, 'showlinkfield' ), 'metaseo_settings', 'metaseo_dashboard');
|
628 |
+
add_settings_field('metaseo_follow', __('Post/Page follow', 'wp-meta-seo'), array( $this, 'showfollow' ), 'metaseo_settings', 'metaseo_dashboard');
|
629 |
+
add_settings_field('metaseo_index', __('Post/Page index', 'wp-meta-seo'), array( $this, 'showindex' ), 'metaseo_settings', 'metaseo_dashboard');
|
630 |
}
|
631 |
|
632 |
public function showmetatitletab(){
|
692 |
<?php
|
693 |
}
|
694 |
|
695 |
+
public function showfollow(){
|
696 |
+
echo '<input name="_metaseo_settings[metaseo_follow]" type="hidden" value="0"/>';
|
697 |
+
?>
|
698 |
+
<label><input name="_metaseo_settings[metaseo_follow]" type="checkbox" id="metaseo_follow" value="1" <?php checked( 1, $this->settings['metaseo_follow']); ?> />
|
699 |
+
<?php _e( "Provides a way for webmasters to tell search engines don't follow links on the page.","wp-meta-seo" ); ?></label>
|
700 |
+
<?php
|
701 |
+
}
|
702 |
+
|
703 |
+
public function showindex(){
|
704 |
+
echo '<input name="_metaseo_settings[metaseo_index]" type="hidden" value="0"/>';
|
705 |
+
?>
|
706 |
+
<label><input name="_metaseo_settings[metaseo_index]" type="checkbox" id="metaseo_index" value="1" <?php checked( 1, $this->settings['metaseo_index']); ?> />
|
707 |
+
<?php _e( "Provides show or do not show this page in search results in search results.","wp-meta-seo" ); ?></label>
|
708 |
+
<?php
|
709 |
+
}
|
710 |
+
|
711 |
public function showfacebook(){
|
712 |
$face = isset( $this->settings['metaseo_showfacebook'] ) ? $this->settings['metaseo_showfacebook'] : '';
|
713 |
echo '<input id="metaseo_showfacebook" name="_metaseo_settings[metaseo_showfacebook]" type="text" value="'.esc_attr( $face ).'" size="50"/>';
|
883 |
array(
|
884 |
'metaseo_dashboard',
|
885 |
'',
|
886 |
+
__('Image information', 'wp-meta-seo'),
|
887 |
$manage_options_cap,
|
888 |
'metaseo_image_meta',
|
889 |
array($this, 'load_page'),
|
901 |
array(
|
902 |
'metaseo_dashboard',
|
903 |
'',
|
904 |
+
__('Link editor', 'wp-meta-seo'),
|
905 |
$manage_options_cap,
|
906 |
'metaseo_link_meta',
|
907 |
array($this, 'load_page'),
|
1209 |
add_action('wp_ajax_wpms_recheck_link',array('MetaSeo_Broken_Link_Table','wpms_recheck_link'));
|
1210 |
add_action('wp_ajax_wpms_scan_link',array('MetaSeo_Broken_Link_Table','wpms_scan_link'));
|
1211 |
add_action('wp_ajax_wpms_flush_link',array('MetaSeo_Broken_Link_Table','wpms_flush_link'));
|
1212 |
+
add_action('wp_ajax_metaseo_update_follow',array($this,'metaseo_update_follow'));
|
1213 |
+
add_action('wp_ajax_metaseo_update_multiplefollow',array($this,'metaseo_update_multiplefollow'));
|
1214 |
+
add_action('wp_ajax_metaseo_update_pagefollow',array($this,'metaseo_update_pagefollow'));
|
1215 |
+
add_action('wp_ajax_metaseo_update_pageindex',array($this,'metaseo_update_pageindex'));
|
1216 |
}
|
1217 |
|
1218 |
}
|
inc/class.metaseo-broken-link-table.php
CHANGED
@@ -729,7 +729,7 @@ class MetaSeo_Broken_Link_Table extends WP_List_Table {
|
|
729 |
return $list_link;
|
730 |
}
|
731 |
|
732 |
-
public static function get_result_link( $source_link, $row_action, $source_id, $url, $link_text, $type, $status, $status_type) {
|
733 |
$res = array(
|
734 |
'source_link' => $source_link,
|
735 |
'row_action' => $row_action,
|
@@ -740,6 +740,18 @@ class MetaSeo_Broken_Link_Table extends WP_List_Table {
|
|
740 |
'status' => $status,
|
741 |
'status_type' => $status_type);
|
742 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
743 |
if($type == 'url'){
|
744 |
if (!preg_match("~^(?:f|ht)tps?://~i", $url)) {
|
745 |
$perlink = get_option('permalink_structure');
|
@@ -754,6 +766,7 @@ class MetaSeo_Broken_Link_Table extends WP_List_Table {
|
|
754 |
}else{
|
755 |
$res['link_final_url'] = $url;
|
756 |
}
|
|
|
757 |
return $res;
|
758 |
}
|
759 |
|
@@ -935,6 +948,11 @@ class MetaSeo_Broken_Link_Table extends WP_List_Table {
|
|
935 |
|
936 |
preg_match_all("#<a[^>]*>.*?</a>#si", $post->post_content, $matches, PREG_PATTERN_ORDER);
|
937 |
foreach (array_unique($matches[0]) as $i => $content) {
|
|
|
|
|
|
|
|
|
|
|
938 |
preg_match('/< *a[^>]*href *= *["\']?([^"\']*)/i', $content, $matches);
|
939 |
$href = $matches[1];
|
940 |
$status = MetaSeo_Broken_Link_Table::get_urlstatus($href);
|
@@ -945,7 +963,7 @@ class MetaSeo_Broken_Link_Table extends WP_List_Table {
|
|
945 |
'view' => '<a href="' . get_post_permalink($post->ID) . '" title="View “test”" rel="permalink">View</a>'
|
946 |
);
|
947 |
$source_link = '<a href="' . get_edit_post_link($post->ID) . '"><b>' . $post->post_title . '</b></a>';
|
948 |
-
$links_in_content[$href.'url'.$post->ID.$link_text] = MetaSeo_Broken_Link_Table::get_result_link($source_link, $row_action, $post->ID, $href, $link_text, 'url', $status, $status_type);
|
949 |
}
|
950 |
preg_match_all('/(<img[\s]+[^>]*src\s*=\s*)([\"\'])([^>]+?)\2([^<>]*>)/i', $post->post_content, $matches, PREG_PATTERN_ORDER);
|
951 |
foreach (array_unique($matches[0]) as $content) {
|
@@ -1120,6 +1138,10 @@ class MetaSeo_Broken_Link_Table extends WP_List_Table {
|
|
1120 |
if (isset($post->post_content) && $post->post_content != '') {
|
1121 |
preg_match_all("#<a[^>]*>.*?</a>#si", $post->post_content, $matches, PREG_PATTERN_ORDER);
|
1122 |
foreach (array_unique($matches[0]) as $i => $content) {
|
|
|
|
|
|
|
|
|
1123 |
preg_match('/< *a[^>]*href *= *["\']?([^"\']*)/i', $content, $matches);
|
1124 |
$href = $matches[1];
|
1125 |
$status = MetaSeo_Broken_Link_Table::get_urlstatus($href);
|
@@ -1129,8 +1151,9 @@ class MetaSeo_Broken_Link_Table extends WP_List_Table {
|
|
1129 |
'edit' => '<a href="' . get_edit_post_link($post->ID) . '" title="Edit this item">Edit</a>',
|
1130 |
'view' => '<a href="' . get_post_permalink($post->ID) . '" title="View “test”" rel="permalink">View</a>'
|
1131 |
);
|
|
|
1132 |
$source_link = '<a href="' . get_edit_post_link($post->ID) . '"><b>' . $post->post_title . '</b></a>';
|
1133 |
-
$link_a = MetaSeo_Broken_Link_Table::get_result_link($source_link, $row_action, $post->ID, $href, $link_text, 'url', $status, $status_type);
|
1134 |
MetaSeo_Broken_Link_Table::wpms_insert_link($link_a, $wpdb);
|
1135 |
}
|
1136 |
preg_match_all('/(<img[\s]+[^>]*src\s*=\s*)([\"\'])([^>]+?)\2([^<>]*>)/i', $post->post_content, $matches, PREG_PATTERN_ORDER);
|
@@ -1160,10 +1183,10 @@ class MetaSeo_Broken_Link_Table extends WP_List_Table {
|
|
1160 |
}
|
1161 |
|
1162 |
public static function wpms_insert_link($link, $wpdb) {
|
1163 |
-
$sql = $wpdb->prepare("SELECT
|
1164 |
-
$
|
1165 |
-
if ($
|
1166 |
-
$
|
1167 |
'link_url' => $link['link_url'],
|
1168 |
'link_final_url' => $link['link_final_url'],
|
1169 |
'link_text' => $link['link_text'],
|
@@ -1175,17 +1198,49 @@ class MetaSeo_Broken_Link_Table extends WP_List_Table {
|
|
1175 |
'broken_internal' => 0,
|
1176 |
'warning' => 0,
|
1177 |
'dismissed' => 0,
|
|
|
|
|
1178 |
);
|
1179 |
if (isset($link['status_type']) && $link['status_type'] != 'ok') {
|
1180 |
-
$
|
1181 |
}
|
1182 |
|
|
|
|
|
|
|
1183 |
$wpdb->insert(
|
1184 |
-
$wpdb->prefix . 'wpms_links', $
|
1185 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1186 |
}
|
1187 |
}
|
1188 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1189 |
public static function wpms_flush_link() {
|
1190 |
global $wpdb;
|
1191 |
if(isset($_POST['type']) && $_POST['type'] != 'none'){
|
@@ -1290,9 +1345,12 @@ class MetaSeo_Broken_Link_Table extends WP_List_Table {
|
|
1290 |
'broken_indexed' => 1
|
1291 |
);
|
1292 |
}
|
|
|
|
|
|
|
1293 |
|
1294 |
$wpdb->update(
|
1295 |
-
$wpdb->prefix . 'wpms_links', $value, array('
|
1296 |
);
|
1297 |
|
1298 |
switch ($link_detail->type) {
|
@@ -1549,6 +1607,16 @@ class MetaSeo_Broken_Link_Table extends WP_List_Table {
|
|
1549 |
if (isset($params['new_text'])) {
|
1550 |
$modified['#link_text'] = $params['new_text'];
|
1551 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1552 |
return $modified;
|
1553 |
} else {
|
1554 |
return $link['#raw'];
|
729 |
return $list_link;
|
730 |
}
|
731 |
|
732 |
+
public static function get_result_link( $source_link, $row_action, $source_id, $url, $link_text, $type, $status, $status_type,$meta_title = '',$rel = '') {
|
733 |
$res = array(
|
734 |
'source_link' => $source_link,
|
735 |
'row_action' => $row_action,
|
740 |
'status' => $status,
|
741 |
'status_type' => $status_type);
|
742 |
|
743 |
+
if(isset($meta_title)){
|
744 |
+
$res['meta_title'] = $meta_title;
|
745 |
+
}else{
|
746 |
+
$res['meta_title'] = '';
|
747 |
+
}
|
748 |
+
|
749 |
+
if(isset($rel) && $rel == 'nofollow'){
|
750 |
+
$res['follow'] = 0;
|
751 |
+
}else{
|
752 |
+
$res['follow'] = 1;
|
753 |
+
}
|
754 |
+
|
755 |
if($type == 'url'){
|
756 |
if (!preg_match("~^(?:f|ht)tps?://~i", $url)) {
|
757 |
$perlink = get_option('permalink_structure');
|
766 |
}else{
|
767 |
$res['link_final_url'] = $url;
|
768 |
}
|
769 |
+
|
770 |
return $res;
|
771 |
}
|
772 |
|
948 |
|
949 |
preg_match_all("#<a[^>]*>.*?</a>#si", $post->post_content, $matches, PREG_PATTERN_ORDER);
|
950 |
foreach (array_unique($matches[0]) as $i => $content) {
|
951 |
+
$dom->loadHTML($content);
|
952 |
+
$tags = $dom->getElementsByTagName('a');
|
953 |
+
$meta_title = $tags->item(0)->getAttribute('title');
|
954 |
+
$rel = $tags->item(0)->getAttribute('rel');
|
955 |
+
|
956 |
preg_match('/< *a[^>]*href *= *["\']?([^"\']*)/i', $content, $matches);
|
957 |
$href = $matches[1];
|
958 |
$status = MetaSeo_Broken_Link_Table::get_urlstatus($href);
|
963 |
'view' => '<a href="' . get_post_permalink($post->ID) . '" title="View “test”" rel="permalink">View</a>'
|
964 |
);
|
965 |
$source_link = '<a href="' . get_edit_post_link($post->ID) . '"><b>' . $post->post_title . '</b></a>';
|
966 |
+
$links_in_content[$href.'url'.$post->ID.$link_text] = MetaSeo_Broken_Link_Table::get_result_link($source_link, $row_action, $post->ID, $href, $link_text, 'url', $status, $status_type,$meta_title,$rel);
|
967 |
}
|
968 |
preg_match_all('/(<img[\s]+[^>]*src\s*=\s*)([\"\'])([^>]+?)\2([^<>]*>)/i', $post->post_content, $matches, PREG_PATTERN_ORDER);
|
969 |
foreach (array_unique($matches[0]) as $content) {
|
1138 |
if (isset($post->post_content) && $post->post_content != '') {
|
1139 |
preg_match_all("#<a[^>]*>.*?</a>#si", $post->post_content, $matches, PREG_PATTERN_ORDER);
|
1140 |
foreach (array_unique($matches[0]) as $i => $content) {
|
1141 |
+
$dom->loadHTML($content);
|
1142 |
+
$tags = $dom->getElementsByTagName('a');
|
1143 |
+
$meta_title = $tags->item(0)->getAttribute('title');
|
1144 |
+
$rel = $tags->item(0)->getAttribute('rel');
|
1145 |
preg_match('/< *a[^>]*href *= *["\']?([^"\']*)/i', $content, $matches);
|
1146 |
$href = $matches[1];
|
1147 |
$status = MetaSeo_Broken_Link_Table::get_urlstatus($href);
|
1151 |
'edit' => '<a href="' . get_edit_post_link($post->ID) . '" title="Edit this item">Edit</a>',
|
1152 |
'view' => '<a href="' . get_post_permalink($post->ID) . '" title="View “test”" rel="permalink">View</a>'
|
1153 |
);
|
1154 |
+
|
1155 |
$source_link = '<a href="' . get_edit_post_link($post->ID) . '"><b>' . $post->post_title . '</b></a>';
|
1156 |
+
$link_a = MetaSeo_Broken_Link_Table::get_result_link($source_link, $row_action, $post->ID, $href, $link_text, 'url', $status, $status_type,$meta_title,$rel);
|
1157 |
MetaSeo_Broken_Link_Table::wpms_insert_link($link_a, $wpdb);
|
1158 |
}
|
1159 |
preg_match_all('/(<img[\s]+[^>]*src\s*=\s*)([\"\'])([^>]+?)\2([^<>]*>)/i', $post->post_content, $matches, PREG_PATTERN_ORDER);
|
1183 |
}
|
1184 |
|
1185 |
public static function wpms_insert_link($link, $wpdb) {
|
1186 |
+
$sql = $wpdb->prepare("SELECT * FROM " . $wpdb->prefix . "wpms_links WHERE link_url=%s AND type=%s AND source_id=%d ", array($link['link_url'], $link['type'], $link['source_id']));
|
1187 |
+
$links = $wpdb->get_results($sql);
|
1188 |
+
if (count($links) == 0) {
|
1189 |
+
$value = array(
|
1190 |
'link_url' => $link['link_url'],
|
1191 |
'link_final_url' => $link['link_final_url'],
|
1192 |
'link_text' => $link['link_text'],
|
1198 |
'broken_internal' => 0,
|
1199 |
'warning' => 0,
|
1200 |
'dismissed' => 0,
|
1201 |
+
'meta_title' =>$link['meta_title'],
|
1202 |
+
'follow' => $link['follow']
|
1203 |
);
|
1204 |
if (isset($link['status_type']) && $link['status_type'] != 'ok') {
|
1205 |
+
$value[$link['status_type']] = 1;
|
1206 |
}
|
1207 |
|
1208 |
+
$site_url = get_site_url();
|
1209 |
+
$value = MetaSeo_Broken_Link_Table::wpms_check_internal_link($links[0]->link_url,$site_url,$value);
|
1210 |
+
|
1211 |
$wpdb->insert(
|
1212 |
+
$wpdb->prefix . 'wpms_links', $value
|
1213 |
);
|
1214 |
+
}else{
|
1215 |
+
$value = array(
|
1216 |
+
'meta_title' => $link['meta_title'],
|
1217 |
+
'follow' => $link['follow']
|
1218 |
+
);
|
1219 |
+
$site_url = get_site_url();
|
1220 |
+
$value = MetaSeo_Broken_Link_Table::wpms_check_internal_link($links[0]->link_url,$site_url,$value);
|
1221 |
+
|
1222 |
+
if($links[0]->follow != $link['follow'] || $links[0]->meta_title != $link['meta_title'] || $links[0]->internal != $value['internal']){
|
1223 |
+
$wpdb->update(
|
1224 |
+
$wpdb->prefix . 'wpms_links', $value, array('id' => $links[0]->id)
|
1225 |
+
);
|
1226 |
+
}
|
1227 |
}
|
1228 |
}
|
1229 |
|
1230 |
+
public static function wpms_check_internal_link($link,$siteUrl,$value) {
|
1231 |
+
$info_link = parse_url($link);
|
1232 |
+
$info_site_url = parse_url($siteUrl);
|
1233 |
+
$domain_link = $info_link['host'].$info_link['path'].'/';
|
1234 |
+
$domain_site = $info_site_url['host'].$info_site_url['path'].'/';
|
1235 |
+
if(strpos($domain_link, $domain_site) !== false){
|
1236 |
+
$value['internal'] = 1;
|
1237 |
+
}else{
|
1238 |
+
$value['internal'] = 0;
|
1239 |
+
}
|
1240 |
+
|
1241 |
+
return $value;
|
1242 |
+
}
|
1243 |
+
|
1244 |
public static function wpms_flush_link() {
|
1245 |
global $wpdb;
|
1246 |
if(isset($_POST['type']) && $_POST['type'] != 'none'){
|
1345 |
'broken_indexed' => 1
|
1346 |
);
|
1347 |
}
|
1348 |
+
|
1349 |
+
$site_url = get_site_url();
|
1350 |
+
$value = MetaSeo_Broken_Link_Table::wpms_check_internal_link($_POST['new_link'],$site_url,$value);
|
1351 |
|
1352 |
$wpdb->update(
|
1353 |
+
$wpdb->prefix . 'wpms_links', $value, array('id' => $_POST['link_id'])
|
1354 |
);
|
1355 |
|
1356 |
switch ($link_detail->type) {
|
1607 |
if (isset($params['new_text'])) {
|
1608 |
$modified['#link_text'] = $params['new_text'];
|
1609 |
}
|
1610 |
+
|
1611 |
+
if (isset($params['meta_title'])) {
|
1612 |
+
$modified['title'] = $params['meta_title'];
|
1613 |
+
}
|
1614 |
+
|
1615 |
+
if (isset($params['follow']) && $params['follow'] == 0) {
|
1616 |
+
$modified['rel'] = 'nofollow';
|
1617 |
+
}else{
|
1618 |
+
$modified['rel'] = '';
|
1619 |
+
}
|
1620 |
return $modified;
|
1621 |
} else {
|
1622 |
return $link['#raw'];
|
inc/class.metaseo-content-list-table.php
CHANGED
@@ -144,6 +144,14 @@ class MetaSeo_Content_List_Table extends WP_List_Table {
|
|
144 |
$columns['col_meta_keywords'] = __('Meta Keywords', 'wp-meta-seo');
|
145 |
}
|
146 |
$columns['col_meta_desc'] = __('Meta Description', 'wp-meta-seo');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
147 |
|
148 |
return $columns;
|
149 |
}
|
@@ -304,7 +312,7 @@ class MetaSeo_Content_List_Table extends WP_List_Table {
|
|
304 |
switch ($column_name) {
|
305 |
case 'cb':
|
306 |
echo '<th scope="row" class="check-column">';
|
307 |
-
echo '<input id="cb-select-
|
308 |
echo '</th>';
|
309 |
|
310 |
break;
|
@@ -379,6 +387,26 @@ class MetaSeo_Content_List_Table extends WP_List_Table {
|
|
379 |
$input .= sprintf('<div class="desc-len" id="%1$s"></div>', 'metaseo-metadesc-len' . $rec->ID);
|
380 |
echo sprintf('<td %2$s>%1$s</td>', $input, $attributes);
|
381 |
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
382 |
}
|
383 |
}
|
384 |
|
144 |
$columns['col_meta_keywords'] = __('Meta Keywords', 'wp-meta-seo');
|
145 |
}
|
146 |
$columns['col_meta_desc'] = __('Meta Description', 'wp-meta-seo');
|
147 |
+
$settings = get_option( '_metaseo_settings' );
|
148 |
+
if(!empty($settings['metaseo_follow'])){
|
149 |
+
$columns['col_follow'] = __('Follow', 'wp-meta-seo');
|
150 |
+
}
|
151 |
+
|
152 |
+
if(!empty($settings['metaseo_index'])){
|
153 |
+
$columns['col_index'] = __('Index', 'wp-meta-seo');
|
154 |
+
}
|
155 |
|
156 |
return $columns;
|
157 |
}
|
312 |
switch ($column_name) {
|
313 |
case 'cb':
|
314 |
echo '<th scope="row" class="check-column">';
|
315 |
+
echo '<input id="cb-select-'.$rec->ID.'" class="metaseo_post" type="checkbox" name="post[]" value="'.$rec->ID.'">';
|
316 |
echo '</th>';
|
317 |
|
318 |
break;
|
387 |
$input .= sprintf('<div class="desc-len" id="%1$s"></div>', 'metaseo-metadesc-len' . $rec->ID);
|
388 |
echo sprintf('<td %2$s>%1$s</td>', $input, $attributes);
|
389 |
break;
|
390 |
+
|
391 |
+
case 'col_index':
|
392 |
+
$page_index = get_post_meta($rec->ID,'_metaseo_metaindex',true);
|
393 |
+
if(isset($page_index) && $page_index == 'noindex'){
|
394 |
+
$input = '<input class="metaseo_post_index" name="index[]" type="checkbox" value="'.$rec->ID.'">';
|
395 |
+
}else{
|
396 |
+
$input = '<input checked class="metaseo_post_index" name="index[]" type="checkbox" value="'.$rec->ID.'">';
|
397 |
+
}
|
398 |
+
echo sprintf('<td %2$s>%1$s</td>', $input, $attributes);
|
399 |
+
break;
|
400 |
+
|
401 |
+
case 'col_follow':
|
402 |
+
$page_follow = get_post_meta($rec->ID,'_metaseo_metafollow',true);
|
403 |
+
if(isset($page_follow) && $page_follow == 'nofollow'){
|
404 |
+
$input = '<input class="metaseo_post_follow" name="follow[]" type="checkbox" value="'.$rec->ID.'">';
|
405 |
+
}else{
|
406 |
+
$input = '<input checked class="metaseo_post_follow" name="follow[]" type="checkbox" value="'.$rec->ID.'">';
|
407 |
+
}
|
408 |
+
echo sprintf('<td %2$s>%1$s</td>', $input, $attributes);
|
409 |
+
break;
|
410 |
}
|
411 |
}
|
412 |
|
inc/class.metaseo-link-list-table.php
CHANGED
@@ -8,7 +8,7 @@
|
|
8 |
if (!class_exists('WP_List_Table')) {
|
9 |
require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
|
10 |
}
|
11 |
-
|
12 |
class MetaSeo_Link_List_Table extends WP_List_Table {
|
13 |
|
14 |
function __construct() {
|
@@ -30,11 +30,14 @@ class MetaSeo_Link_List_Table extends WP_List_Table {
|
|
30 |
<input type="hidden" name="page" value="metaseo_image_meta" />
|
31 |
<div class="alignleft actions bulkactions">
|
32 |
<?php $this->months_fillter($p_type, 'sldate', 'filter_date_action'); ?>
|
|
|
33 |
</div>
|
|
|
34 |
<?php elseif ($which == 'bottom'): ?>
|
35 |
<input type="hidden" name="page" value="metaseo_image_meta" />
|
36 |
<div class="alignleft actions bulkactions">
|
37 |
<?php $this->months_fillter($p_type, 'sldate1', 'filter_date_action'); ?>
|
|
|
38 |
</div>
|
39 |
<?php endif ?>
|
40 |
|
@@ -49,7 +52,17 @@ class MetaSeo_Link_List_Table extends WP_List_Table {
|
|
49 |
<input type="number" required min="1" value="<?php echo $this->_pagination_args['per_page'] ?>" maxlength="3" name="metaseo_link_per_page" class="metaseo_imgs_per_page screen-per-page" max="999" min="1" step="1">
|
50 |
<input type="submit" name="btn_perpage" class="button_perpage button" id="button_perpage" value="Apply" >
|
51 |
</div>
|
52 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
<?php $this->pagination($which); ?>
|
54 |
<br class="clear" />
|
55 |
</div>
|
@@ -133,17 +146,20 @@ class MetaSeo_Link_List_Table extends WP_List_Table {
|
|
133 |
function get_columns() {
|
134 |
return $columns = array(
|
135 |
'cb' => '<input id="cb-select-all-1" type="checkbox">',
|
136 |
-
'col_id' => __('ID', 'wp-meta-seo'),
|
137 |
'post_id' => __('Source', 'wp-meta-seo'),
|
138 |
'col_link_url' => __('URL', 'wp-meta-seo'),
|
139 |
'col_link_title' => __('Link title', 'wp-meta-seo'),
|
140 |
'col_link_label' => __('Link text', 'wp-meta-seo'),
|
|
|
141 |
);
|
142 |
}
|
143 |
|
144 |
function get_sortable_columns() {
|
145 |
return $sortable = array(
|
146 |
-
'post_id' => array('post_title', true)
|
|
|
|
|
|
|
147 |
);
|
148 |
}
|
149 |
|
@@ -226,58 +242,33 @@ class MetaSeo_Link_List_Table extends WP_List_Table {
|
|
226 |
}
|
227 |
}
|
228 |
}
|
229 |
-
|
230 |
function prepare_items() {
|
231 |
global $wpdb, $_wp_column_headers;
|
232 |
-
|
233 |
|
234 |
-
$
|
235 |
-
|
236 |
-
|
237 |
-
$post_type = isset($_REQUEST['post_type_filter']) ? $_REQUEST['post_type_filter'] : "";
|
238 |
-
if ($post_type == "-1") {
|
239 |
-
$post_type = "";
|
240 |
}
|
241 |
|
242 |
-
|
243 |
-
|
244 |
-
if (!empty($post_type) && !in_array($post_type, $post_types))
|
245 |
-
$post_type = '\'post\'';
|
246 |
-
else if (empty($post_type)) {
|
247 |
-
$post_type = "'" . implode("', '", $post_types) . "'";
|
248 |
-
} else {
|
249 |
-
$post_type = "'" . $post_type . "'";
|
250 |
}
|
251 |
-
|
252 |
-
$
|
253 |
-
|
254 |
-
$states['trash'] = 'trash';
|
255 |
-
$all_states = "'" . implode("', '", $states) . "'";
|
256 |
-
|
257 |
-
if (empty($_REQUEST['post_status'])) {
|
258 |
-
$where[] = "post_status IN ($all_states)";
|
259 |
-
} else {
|
260 |
-
$requested_state = $_REQUEST['post_status'];
|
261 |
-
if (in_array($requested_state, $states)) {
|
262 |
-
$where[] = "post_status IN ('$requested_state')";
|
263 |
-
} else {
|
264 |
-
$where[] = "post_status IN ($all_states)";
|
265 |
-
}
|
266 |
-
}
|
267 |
-
|
268 |
-
if(!empty($_REQUEST['sldate'])){
|
269 |
-
$where[] = $wpdb->prepare(" post_date Like %s","%" .$_REQUEST['sldate']. "%");
|
270 |
}
|
271 |
|
272 |
-
|
273 |
-
|
|
|
274 |
$order = !empty($_GET["order"]) ? ($_GET["order"]) : 'asc';
|
275 |
-
|
276 |
$sortable = $this->get_sortable_columns();
|
277 |
if (in_array($orderby, $sortable)) {
|
278 |
$orderStr = $orderby;
|
279 |
} else {
|
280 |
-
$orderStr = '
|
281 |
}
|
282 |
|
283 |
if ($order == "asc") {
|
@@ -290,65 +281,23 @@ class MetaSeo_Link_List_Table extends WP_List_Table {
|
|
290 |
$orderStr = ' ORDER BY ' . $orderStr;
|
291 |
}
|
292 |
|
293 |
-
$query = "SELECT
|
294 |
-
. " FROM $wpdb->posts "
|
295 |
-
. " WHERE " . implode(' AND ', $where) . $orderStr;
|
296 |
-
|
297 |
$columns = $this->get_columns();
|
298 |
$hidden = array();
|
299 |
$sortable = $this->get_sortable_columns();
|
300 |
$this->_column_headers = array($columns, $hidden, $sortable);
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
$list_link = array();
|
305 |
-
foreach ($results as $post){
|
306 |
-
$dom = new DOMDocument;
|
307 |
-
libxml_use_internal_errors( true );
|
308 |
-
if(isset($post->post_content) && $post->post_content != ''){
|
309 |
-
if ($dom->loadHTML($post->post_content)) {
|
310 |
-
// Extracting the specified elements from the web page
|
311 |
-
preg_match_all("|<[^>]+>(.*)</[^>]+>|U",$post->post_content,$matches, PREG_PATTERN_ORDER);
|
312 |
-
foreach (array_unique($matches[0]) as $match){
|
313 |
-
if(strpos($match, '<a') !== false && strpos($match, 'a>') !== false){
|
314 |
-
$dom = new DOMDocument;
|
315 |
-
libxml_use_internal_errors( true );
|
316 |
-
if ($dom->loadHTML($match)) {
|
317 |
-
$tags = $dom->getElementsByTagName('a');
|
318 |
-
$html_tag = $match;
|
319 |
-
$link_title = $tags->item(0)->getAttribute('title');
|
320 |
-
$link_url = $tags->item(0)->getAttribute('href');
|
321 |
-
$link_label = $tags->item(0)->nodeValue;
|
322 |
-
if(isset($link_label) && $link_label == ''){
|
323 |
-
$link_label = __('(None)','wp-meta-seo');
|
324 |
-
}
|
325 |
-
|
326 |
-
if (isset($keyword) && $keyword != '') {
|
327 |
-
if(strpos($link_label, $keyword) !== false || strpos($link_title, $keyword) !== false){
|
328 |
-
$list_link[] = array('html_tag' => $html_tag , 'link_title' => $link_title , 'link_label' => $link_label , 'link_url' => $link_url , 'post_title' => $post->post_title , 'post_id' => $post->ID);
|
329 |
-
}
|
330 |
-
}else{
|
331 |
-
$list_link[] = array('html_tag' => $html_tag , 'link_title' => $link_title , 'link_label' => $link_label , 'link_url' => $link_url ,'post_title' => $post->post_title , 'post_id' => $post->ID);
|
332 |
-
}
|
333 |
-
}
|
334 |
-
}
|
335 |
-
}
|
336 |
-
}
|
337 |
-
}
|
338 |
-
}
|
339 |
-
|
340 |
-
$total_items = count($list_link);
|
341 |
-
if (!empty($_REQUEST['metaseo_link_per_page'])) {
|
342 |
-
$_per_page = intval($_REQUEST['metaseo_link_per_page']);
|
343 |
} else {
|
344 |
$_per_page = 0;
|
345 |
}
|
346 |
-
|
347 |
-
$per_page = get_user_option('
|
348 |
if ($per_page !== false) {
|
349 |
if ($_per_page && $_per_page !== $per_page) {
|
350 |
$per_page = $_per_page;
|
351 |
-
update_user_option(get_current_user_id(), '
|
352 |
}
|
353 |
} else {
|
354 |
if ($_per_page > 0) {
|
@@ -356,7 +305,7 @@ class MetaSeo_Link_List_Table extends WP_List_Table {
|
|
356 |
} else {
|
357 |
$per_page = 10;
|
358 |
}
|
359 |
-
add_user_meta(get_current_user_id(), '
|
360 |
}
|
361 |
|
362 |
$paged = !empty($_GET["paged"]) ? $_GET["paged"] : '';
|
@@ -365,21 +314,21 @@ class MetaSeo_Link_List_Table extends WP_List_Table {
|
|
365 |
}
|
366 |
|
367 |
$total_pages = ceil($total_items / $per_page);
|
|
|
|
|
|
|
|
|
|
|
|
|
368 |
$this->set_pagination_args(array(
|
369 |
'total_items' => $total_items,
|
370 |
'total_pages' => $total_pages,
|
371 |
'per_page' => $per_page
|
372 |
));
|
373 |
-
|
374 |
-
foreach ($list_link as $key => $item){
|
375 |
-
if($key >= $paged*$per_page || $key < ($paged-1)*$per_page){
|
376 |
-
unset($list_link[$key]);
|
377 |
-
}
|
378 |
-
}
|
379 |
|
380 |
-
$this->items = $
|
381 |
}
|
382 |
-
|
383 |
function search_box1() {
|
384 |
if (empty($_REQUEST['txtkeyword']) && !$this->has_items())
|
385 |
return;
|
@@ -400,6 +349,36 @@ class MetaSeo_Link_List_Table extends WP_List_Table {
|
|
400 |
</p>
|
401 |
<?php
|
402 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
403 |
|
404 |
function months_fillter($post_type, $name, $namebutton) {
|
405 |
global $wpdb, $wp_locale;
|
@@ -443,14 +422,12 @@ class MetaSeo_Link_List_Table extends WP_List_Table {
|
|
443 |
$url = URL;
|
444 |
$url = preg_replace('/(^(http|https):\/\/[w]*\.*)/', '', $url);
|
445 |
$records = $this->items;
|
446 |
-
$i = 0;
|
447 |
$alternate = "";
|
448 |
|
449 |
list( $columns, $hidden ) = $this->get_column_info();
|
450 |
if (!empty($records)) {
|
451 |
foreach ($records as $rec) {
|
452 |
-
$
|
453 |
-
echo '<tr id="record_' . $i . '" data-link="'.$i.'" data-post_id="'.$rec['post_id'].'">';
|
454 |
foreach ($columns as $column_name => $column_display_name) {
|
455 |
|
456 |
$class = sprintf('class="%1$s column-%1$s"', $column_name);
|
@@ -465,48 +442,48 @@ class MetaSeo_Link_List_Table extends WP_List_Table {
|
|
465 |
switch ($column_name) {
|
466 |
case 'cb':
|
467 |
echo '<td scope="row" class="check-column" style="padding:8px 10px;">';
|
468 |
-
echo '<input id="cb-select-
|
469 |
echo '</td>';
|
470 |
break;
|
471 |
|
472 |
-
case 'col_id':
|
473 |
-
echo '<td class="col_id">';
|
474 |
-
echo $i;
|
475 |
-
echo '</td>';
|
476 |
-
break;
|
477 |
-
|
478 |
case 'post_id':
|
|
|
479 |
$row_action = array (
|
480 |
-
'edit' => '<a href="'.get_edit_post_link( $rec
|
481 |
-
'view' => '<a href="'.get_post_permalink( $rec
|
482 |
);
|
483 |
echo '<td class="col_id" colspan="3">';
|
484 |
-
echo '<a href="'.get_edit_post_link( $rec
|
485 |
echo $this->row_actions($row_action ,false);
|
486 |
echo '</td>';
|
487 |
break;
|
488 |
|
489 |
case 'col_link_url':
|
490 |
echo '<td class="wpms_link_html" colspan="3">';
|
491 |
-
echo '<a target="_blank" href="'.$rec
|
492 |
-
echo '<div style="display:none" class="wpms_new_link">'.$rec['html_tag'].'</div>';
|
493 |
echo '</td>';
|
494 |
break;
|
495 |
|
496 |
case 'col_link_title':
|
497 |
-
$link_title = $rec['link_title'];
|
498 |
echo '<td colspan="3">';
|
499 |
-
echo '<input type="text" data-post_id="'.$rec
|
500 |
-
echo '<
|
501 |
-
echo '<div data-post_id="'.$rec['post_id'].'" class="wpms_update_link">'.__('Update','wp-meta-seo').'</div>';
|
502 |
echo '<strong class="wpms_mesage_link">'.__('Saved.','wp-meta-seo').'</strong>';
|
503 |
echo '<strong class="wpms_error_mesage_link">'.__('Error.','wp-meta-seo').'</strong>';
|
504 |
echo '</td>';
|
505 |
break;
|
506 |
|
507 |
case 'col_link_label':
|
508 |
-
|
509 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
510 |
break;
|
511 |
}
|
512 |
}
|
@@ -535,6 +512,11 @@ class MetaSeo_Link_List_Table extends WP_List_Table {
|
|
535 |
$current_url = add_query_arg(array("paged" => intval($_POST['paged'])), $current_url);
|
536 |
$redirect = true;
|
537 |
}
|
|
|
|
|
|
|
|
|
|
|
538 |
|
539 |
if (!empty($_POST['metaseo_link_per_page'])) {
|
540 |
$current_url = add_query_arg(array("metaseo_link_per_page" => intval($_POST['metaseo_link_per_page'])), $current_url);
|
@@ -547,5 +529,4 @@ class MetaSeo_Link_List_Table extends WP_List_Table {
|
|
547 |
exit();
|
548 |
}
|
549 |
}
|
550 |
-
|
551 |
}
|
8 |
if (!class_exists('WP_List_Table')) {
|
9 |
require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
|
10 |
}
|
11 |
+
wp_enqueue_style('metaseo-google-icon');
|
12 |
class MetaSeo_Link_List_Table extends WP_List_Table {
|
13 |
|
14 |
function __construct() {
|
30 |
<input type="hidden" name="page" value="metaseo_image_meta" />
|
31 |
<div class="alignleft actions bulkactions">
|
32 |
<?php $this->months_fillter($p_type, 'sldate', 'filter_date_action'); ?>
|
33 |
+
<?php $this->link_source_fillter(); ?>
|
34 |
</div>
|
35 |
+
|
36 |
<?php elseif ($which == 'bottom'): ?>
|
37 |
<input type="hidden" name="page" value="metaseo_image_meta" />
|
38 |
<div class="alignleft actions bulkactions">
|
39 |
<?php $this->months_fillter($p_type, 'sldate1', 'filter_date_action'); ?>
|
40 |
+
<?php $this->link_source_fillter(); ?>
|
41 |
</div>
|
42 |
<?php endif ?>
|
43 |
|
52 |
<input type="number" required min="1" value="<?php echo $this->_pagination_args['per_page'] ?>" maxlength="3" name="metaseo_link_per_page" class="metaseo_imgs_per_page screen-per-page" max="999" min="1" step="1">
|
53 |
<input type="submit" name="btn_perpage" class="button_perpage button" id="button_perpage" value="Apply" >
|
54 |
</div>
|
55 |
+
|
56 |
+
<?php if ($which == 'top'): ?>
|
57 |
+
<div class="alignleft actions bulkactions">
|
58 |
+
<?php $this->follow_action(); ?>
|
59 |
+
</div>
|
60 |
+
<?php elseif ($which == 'bottom'): ?>
|
61 |
+
<div class="alignleft actions bulkactions">
|
62 |
+
<?php $this->follow_action(); ?>
|
63 |
+
</div>
|
64 |
+
<?php endif ?>
|
65 |
+
|
66 |
<?php $this->pagination($which); ?>
|
67 |
<br class="clear" />
|
68 |
</div>
|
146 |
function get_columns() {
|
147 |
return $columns = array(
|
148 |
'cb' => '<input id="cb-select-all-1" type="checkbox">',
|
|
|
149 |
'post_id' => __('Source', 'wp-meta-seo'),
|
150 |
'col_link_url' => __('URL', 'wp-meta-seo'),
|
151 |
'col_link_title' => __('Link title', 'wp-meta-seo'),
|
152 |
'col_link_label' => __('Link text', 'wp-meta-seo'),
|
153 |
+
'col_follow' => __('Follow', 'wp-meta-seo')
|
154 |
);
|
155 |
}
|
156 |
|
157 |
function get_sortable_columns() {
|
158 |
return $sortable = array(
|
159 |
+
'post_id' => array('post_title', true),
|
160 |
+
'col_link_url' => array('col_link_url', true),
|
161 |
+
'col_link_title' => array('col_link_title', true),
|
162 |
+
'col_follow' => array('col_follow', true),
|
163 |
);
|
164 |
}
|
165 |
|
242 |
}
|
243 |
}
|
244 |
}
|
245 |
+
|
246 |
function prepare_items() {
|
247 |
global $wpdb, $_wp_column_headers;
|
248 |
+
$where = array('1=1');
|
249 |
|
250 |
+
$keyword = !empty($_GET["txtkeyword"]) ? $_GET["txtkeyword"] : '';
|
251 |
+
if (isset($keyword) && $keyword != '') {
|
252 |
+
$where[] .= '(link_text LIKE "%' . $keyword . '%" OR link_url LIKE "%' . $keyword . '%")';
|
|
|
|
|
|
|
253 |
}
|
254 |
|
255 |
+
if (isset($_GET['metaseo_link_source']) && $_GET['metaseo_link_source'] == 'internal') {
|
256 |
+
$where[] .= 'internal = 1';
|
|
|
|
|
|
|
|
|
|
|
|
|
257 |
}
|
258 |
+
|
259 |
+
if (isset($_GET['metaseo_link_source']) && $_GET['metaseo_link_source'] == 'external') {
|
260 |
+
$where[] .= 'internal = 0';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
261 |
}
|
262 |
|
263 |
+
$where[] .= 'type="url"';
|
264 |
+
|
265 |
+
$orderby = !empty($_GET["orderby"]) ? ($_GET["orderby"]) : 'id';
|
266 |
$order = !empty($_GET["order"]) ? ($_GET["order"]) : 'asc';
|
|
|
267 |
$sortable = $this->get_sortable_columns();
|
268 |
if (in_array($orderby, $sortable)) {
|
269 |
$orderStr = $orderby;
|
270 |
} else {
|
271 |
+
$orderStr = 'id';
|
272 |
}
|
273 |
|
274 |
if ($order == "asc") {
|
281 |
$orderStr = ' ORDER BY ' . $orderStr;
|
282 |
}
|
283 |
|
284 |
+
$query = "SELECT * FROM " . $wpdb->prefix . "wpms_links WHERE " . implode(' AND ', $where) . $orderStr;
|
|
|
|
|
|
|
285 |
$columns = $this->get_columns();
|
286 |
$hidden = array();
|
287 |
$sortable = $this->get_sortable_columns();
|
288 |
$this->_column_headers = array($columns, $hidden, $sortable);
|
289 |
+
$total_items = $wpdb->query($query);
|
290 |
+
if (!empty($_REQUEST['metaseo_broken_link_per_page'])) {
|
291 |
+
$_per_page = intval($_REQUEST['metaseo_broken_link_per_page']);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
292 |
} else {
|
293 |
$_per_page = 0;
|
294 |
}
|
295 |
+
|
296 |
+
$per_page = get_user_option('metaseo_broken_link_per_page');
|
297 |
if ($per_page !== false) {
|
298 |
if ($_per_page && $_per_page !== $per_page) {
|
299 |
$per_page = $_per_page;
|
300 |
+
update_user_option(get_current_user_id(), 'metaseo_broken_link_per_page', $per_page);
|
301 |
}
|
302 |
} else {
|
303 |
if ($_per_page > 0) {
|
305 |
} else {
|
306 |
$per_page = 10;
|
307 |
}
|
308 |
+
add_user_meta(get_current_user_id(), 'metaseo_broken_link_per_page', $per_page);
|
309 |
}
|
310 |
|
311 |
$paged = !empty($_GET["paged"]) ? $_GET["paged"] : '';
|
314 |
}
|
315 |
|
316 |
$total_pages = ceil($total_items / $per_page);
|
317 |
+
|
318 |
+
if (!empty($paged) && !empty($per_page)) {
|
319 |
+
$offset = ($paged - 1) * $per_page;
|
320 |
+
$query .= ' LIMIT ' . (int) $offset . ',' . (int) $per_page;
|
321 |
+
}
|
322 |
+
|
323 |
$this->set_pagination_args(array(
|
324 |
'total_items' => $total_items,
|
325 |
'total_pages' => $total_pages,
|
326 |
'per_page' => $per_page
|
327 |
));
|
|
|
|
|
|
|
|
|
|
|
|
|
328 |
|
329 |
+
$this->items = $wpdb->get_results($query);
|
330 |
}
|
331 |
+
|
332 |
function search_box1() {
|
333 |
if (empty($_REQUEST['txtkeyword']) && !$this->has_items())
|
334 |
return;
|
349 |
</p>
|
350 |
<?php
|
351 |
}
|
352 |
+
|
353 |
+
function follow_action(){
|
354 |
+
?>
|
355 |
+
<select name="metaseo_follow_action" class="metaseo_follow_action">
|
356 |
+
<option value="0"><?php _e('-- Selection --','wp-meta-seo') ?></option>
|
357 |
+
<option value="follow_selected"><?php _e('Follow selected','wp-meta-seo') ?></option>
|
358 |
+
<option value="nofollow_selected"><?php _e('Nofollow selected','wp-meta-seo') ?></option>
|
359 |
+
<option value="follow_all"><?php _e('Follow all','wp-meta-seo') ?></option>
|
360 |
+
<option value="nofollow_all"><?php _e('Nofollow all','wp-meta-seo') ?></option>
|
361 |
+
</select>
|
362 |
+
<input type="button" class="button btn_apply_follow" value="<?php _e('Apply','wp-meta-seo') ?>">
|
363 |
+
<div data-comment_paged="1" data-paged="1" class="button wpms_scan_link page_link_meta"><?php _e('Re-index content links', 'wp-meta-seo') ?></div>
|
364 |
+
<span class="spinner spinner_apply_follow"></span>
|
365 |
+
<?php
|
366 |
+
}
|
367 |
+
|
368 |
+
function link_source_fillter(){
|
369 |
+
if(isset($_GET['metaseo_link_source'])){
|
370 |
+
$link_source = $_GET['metaseo_link_source'];
|
371 |
+
}else{
|
372 |
+
$link_source = 0;
|
373 |
+
}
|
374 |
+
?>
|
375 |
+
<select name="metaseo_link_source" class="metaseo_link_source">
|
376 |
+
<option value="0" <?php selected($link_source, 0) ?>><?php _e('Link source','wp-meta-seo') ?></option>
|
377 |
+
<option value="internal" <?php selected($link_source, 'internal') ?>><?php _e('Internal','wp-meta-seo') ?></option>
|
378 |
+
<option value="external" <?php selected($link_source, 'external') ?>><?php _e('External','wp-meta-seo') ?></option>
|
379 |
+
</select>
|
380 |
+
<?php
|
381 |
+
}
|
382 |
|
383 |
function months_fillter($post_type, $name, $namebutton) {
|
384 |
global $wpdb, $wp_locale;
|
422 |
$url = URL;
|
423 |
$url = preg_replace('/(^(http|https):\/\/[w]*\.*)/', '', $url);
|
424 |
$records = $this->items;
|
|
|
425 |
$alternate = "";
|
426 |
|
427 |
list( $columns, $hidden ) = $this->get_column_info();
|
428 |
if (!empty($records)) {
|
429 |
foreach ($records as $rec) {
|
430 |
+
echo '<tr id="record_' . $rec->id . '" data-link="'.$rec->id.'" data-post_id="'.$rec->source_id.'">';
|
|
|
431 |
foreach ($columns as $column_name => $column_display_name) {
|
432 |
|
433 |
$class = sprintf('class="%1$s column-%1$s"', $column_name);
|
442 |
switch ($column_name) {
|
443 |
case 'cb':
|
444 |
echo '<td scope="row" class="check-column" style="padding:8px 10px;">';
|
445 |
+
echo '<input id="cb-select-'.$rec->id.'" class="metaseo_link" type="checkbox" name="link['.$rec->id.']" value="'.$rec->id.'">';
|
446 |
echo '</td>';
|
447 |
break;
|
448 |
|
|
|
|
|
|
|
|
|
|
|
|
|
449 |
case 'post_id':
|
450 |
+
$post = get_post($rec->source_id);
|
451 |
$row_action = array (
|
452 |
+
'edit' => '<a target="_blank" href="'.get_edit_post_link( $rec->source_id ).'" title="Edit this item">Edit</a>',
|
453 |
+
'view' => '<a target="_blank" href="'.get_post_permalink( $rec->source_id ).'" title="View “test”" rel="permalink">View</a>'
|
454 |
);
|
455 |
echo '<td class="col_id" colspan="3">';
|
456 |
+
echo '<a target="_blank" href="'.get_edit_post_link( $rec->source_id ).'">'.$post->post_title.'</a>';
|
457 |
echo $this->row_actions($row_action ,false);
|
458 |
echo '</td>';
|
459 |
break;
|
460 |
|
461 |
case 'col_link_url':
|
462 |
echo '<td class="wpms_link_html" colspan="3">';
|
463 |
+
echo '<a target="_blank" href="'.$rec->link_url.'">'.$rec->link_url.'</a>';
|
|
|
464 |
echo '</td>';
|
465 |
break;
|
466 |
|
467 |
case 'col_link_title':
|
|
|
468 |
echo '<td colspan="3">';
|
469 |
+
echo '<input type="text" data-post_id="'.$rec->source_id.'" name="metaseo_link_title" id="metaseo_link_title" class="metaseo_link_title" value="'.$rec->meta_title.'">';
|
470 |
+
echo '<div data-post_id="'.$rec->source_id.'" class="wpms_update_link">'.__('Update','wp-meta-seo').'</div>';
|
|
|
471 |
echo '<strong class="wpms_mesage_link">'.__('Saved.','wp-meta-seo').'</strong>';
|
472 |
echo '<strong class="wpms_error_mesage_link">'.__('Error.','wp-meta-seo').'</strong>';
|
473 |
echo '</td>';
|
474 |
break;
|
475 |
|
476 |
case 'col_link_label':
|
477 |
+
echo '<td colspan="3">'.strip_tags($rec->link_text).'</td>';
|
478 |
+
break;
|
479 |
+
|
480 |
+
case 'col_follow':
|
481 |
+
if($rec->follow==1){
|
482 |
+
$follow = '<i class="material-icons wpms_ok wpms_change_follow" data-type="done">done</i>';
|
483 |
+
}else{
|
484 |
+
$follow = '<i class="material-icons wpms_warning wpms_change_follow" data-type="warning">warning</i>';
|
485 |
+
}
|
486 |
+
echo '<td colspan="3">'.$follow.'</td>';
|
487 |
break;
|
488 |
}
|
489 |
}
|
512 |
$current_url = add_query_arg(array("paged" => intval($_POST['paged'])), $current_url);
|
513 |
$redirect = true;
|
514 |
}
|
515 |
+
|
516 |
+
if (isset($_POST['metaseo_link_source'])) {
|
517 |
+
$current_url = add_query_arg(array("metaseo_link_source" => $_POST['metaseo_link_source']), $current_url);
|
518 |
+
$redirect = true;
|
519 |
+
}
|
520 |
|
521 |
if (!empty($_POST['metaseo_link_per_page'])) {
|
522 |
$current_url = add_query_arg(array("metaseo_link_per_page" => intval($_POST['metaseo_link_per_page'])), $current_url);
|
529 |
exit();
|
530 |
}
|
531 |
}
|
|
|
532 |
}
|
inc/class.metaseo-meta.php
CHANGED
@@ -49,7 +49,7 @@ class WPMSEO_Meta {
|
|
49 |
'rows' => 2,
|
50 |
'description' => '',
|
51 |
'help' => '',
|
52 |
-
)
|
53 |
),
|
54 |
'social' => array(
|
55 |
'opengraph-title' => array(
|
49 |
'rows' => 2,
|
50 |
'description' => '',
|
51 |
'help' => '',
|
52 |
+
)
|
53 |
),
|
54 |
'social' => array(
|
55 |
'opengraph-title' => array(
|
inc/class.metaseo-metabox.php
CHANGED
@@ -71,7 +71,7 @@ class WPMSEO_Metabox extends WPMSEO_Meta {
|
|
71 |
self::$meta_fields['general']['desc']['title'] = __('Search engine description', 'wp-meta-seo');
|
72 |
self::$meta_fields['general']['desc']['description'] = sprintf(__('<span id="metaseo_wpmseo_desc-length">%s</span>'),self::$meta_length_reason);
|
73 |
self::$meta_fields['general']['desc']['help'] = __('The description of your content that may be displayed in search engine results aka meta description. By default search engine take an excerpt from your content (depending on the search query). 156 characters max allowed.', 'wp-meta-seo');
|
74 |
-
|
75 |
self::$meta_fields['social']['opengraph-title']['title'] = __('Facebook Title','wp-meta-seo');
|
76 |
self::$meta_fields['social']['opengraph-title']['description'] = __('Custom title to display when sharing this content on facebook, content title override','wp-meta-seo');
|
77 |
|
@@ -253,7 +253,7 @@ class WPMSEO_Metabox extends WPMSEO_Meta {
|
|
253 |
add_meta_box('wpmseo_meta', __('WP Meta SEO - Page optimization','wp-meta-seo'), array(
|
254 |
$this,
|
255 |
'meta_box',
|
256 |
-
), $post_type, 'normal', apply_filters('wpmseo_metabox_prio', '
|
257 |
}
|
258 |
}
|
259 |
}
|
@@ -342,7 +342,7 @@ class WPMSEO_Metabox extends WPMSEO_Meta {
|
|
342 |
}else{
|
343 |
if(!empty($tags_h1)) {
|
344 |
foreach($tags_h1 as $order => $tagh1){
|
345 |
-
$words_tagh1 = preg_split('~[^\p{L}\p{N}\']+~u',strtolower($tagh1->nodeValue));
|
346 |
if(is_array($words_tagh1) && is_array($words_post_title)){
|
347 |
foreach ($words_tagh1 as $mh){
|
348 |
if(in_array($mh, $words_post_title) && $mh!=''){
|
@@ -358,7 +358,7 @@ class WPMSEO_Metabox extends WPMSEO_Meta {
|
|
358 |
|
359 |
if(!empty($tags_h2)) {
|
360 |
foreach($tags_h2 as $order => $tagh2){
|
361 |
-
$words_tagh2 = preg_split('~[^\p{L}\p{N}\']+~u',strtolower($tagh2->nodeValue));
|
362 |
if(is_array($words_tagh2) && is_array($words_post_title)){
|
363 |
foreach ($words_tagh2 as $mh){
|
364 |
if(in_array($mh, $words_post_title) && $mh!=''){
|
@@ -374,7 +374,7 @@ class WPMSEO_Metabox extends WPMSEO_Meta {
|
|
374 |
|
375 |
if(!empty($tags_h3)) {
|
376 |
foreach($tags_h3 as $order => $tagh3){
|
377 |
-
$words_tagh3 = preg_split('~[^\p{L}\p{N}\']+~u',strtolower($tagh3->nodeValue));
|
378 |
if(is_array($words_tagh3) && is_array($words_post_title)){
|
379 |
foreach ($words_tagh3 as $mh){
|
380 |
if(in_array($mh, $words_post_title) && $mh!=''){
|
@@ -390,7 +390,7 @@ class WPMSEO_Metabox extends WPMSEO_Meta {
|
|
390 |
|
391 |
if(!empty($tags_h4)) {
|
392 |
foreach($tags_h4 as $order => $tagh4){
|
393 |
-
$words_tagh4 = preg_split('~[^\p{L}\p{N}\']+~u',strtolower($tagh4->nodeValue));
|
394 |
if(is_array($words_tagh4) && is_array($words_post_title)){
|
395 |
foreach ($words_tagh4 as $mh){
|
396 |
if(in_array($mh, $words_post_title) && $mh!=''){
|
@@ -406,7 +406,7 @@ class WPMSEO_Metabox extends WPMSEO_Meta {
|
|
406 |
|
407 |
if(!empty($tags_h5)) {
|
408 |
foreach($tags_h5 as $order => $tagh5){
|
409 |
-
$words_tagh5 = preg_split('~[^\p{L}\p{N}\']+~u',strtolower($tagh5->nodeValue));
|
410 |
if(is_array($words_tagh5) && is_array($words_post_title)){
|
411 |
foreach ($words_tagh5 as $mh){
|
412 |
if(in_array($mh, $words_post_title) && $mh!=''){
|
@@ -422,7 +422,7 @@ class WPMSEO_Metabox extends WPMSEO_Meta {
|
|
422 |
|
423 |
if(!empty($tags_h6)) {
|
424 |
foreach($tags_h6 as $order => $tagh6){
|
425 |
-
$words_tagh6 = preg_split('~[^\p{L}\p{N}\']+~u',strtolower($tagh6->nodeValue));
|
426 |
if(is_array($words_tagh6) && is_array($words_post_title)){
|
427 |
foreach ($words_tagh6 as $mh){
|
428 |
if(in_array($mh, $words_post_title) && $mh!=''){
|
@@ -605,6 +605,7 @@ class WPMSEO_Metabox extends WPMSEO_Meta {
|
|
605 |
|
606 |
$output = '';
|
607 |
$circliful = ceil(100*($this->perc_score)/7);
|
|
|
608 |
$output .= '<div class="metaseo_left">
|
609 |
<div class="metaseo-progress-bar" data-post_id="'.$post->ID.'">
|
610 |
<canvas id="inactiveProgress" class="metaseo-progress-inactive" height="275px" width="275px"></canvas>
|
@@ -618,7 +619,7 @@ class WPMSEO_Metabox extends WPMSEO_Meta {
|
|
618 |
$output .= '<div class="metaseo_right">';
|
619 |
$output .= $headingtitle . $contenttitle . $output_pageurl . $output_metatitle . $output_metadesc . $output_imagewrong . $output_imagealt;
|
620 |
$output .= '</div>';
|
621 |
-
|
622 |
return $output;
|
623 |
}
|
624 |
|
@@ -643,6 +644,37 @@ class WPMSEO_Metabox extends WPMSEO_Meta {
|
|
643 |
<?php
|
644 |
if($id == 'general'){
|
645 |
echo $this->metaseo_page_analysis($post);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
646 |
}
|
647 |
?>
|
648 |
</div>
|
71 |
self::$meta_fields['general']['desc']['title'] = __('Search engine description', 'wp-meta-seo');
|
72 |
self::$meta_fields['general']['desc']['description'] = sprintf(__('<span id="metaseo_wpmseo_desc-length">%s</span>'),self::$meta_length_reason);
|
73 |
self::$meta_fields['general']['desc']['help'] = __('The description of your content that may be displayed in search engine results aka meta description. By default search engine take an excerpt from your content (depending on the search query). 156 characters max allowed.', 'wp-meta-seo');
|
74 |
+
|
75 |
self::$meta_fields['social']['opengraph-title']['title'] = __('Facebook Title','wp-meta-seo');
|
76 |
self::$meta_fields['social']['opengraph-title']['description'] = __('Custom title to display when sharing this content on facebook, content title override','wp-meta-seo');
|
77 |
|
253 |
add_meta_box('wpmseo_meta', __('WP Meta SEO - Page optimization','wp-meta-seo'), array(
|
254 |
$this,
|
255 |
'meta_box',
|
256 |
+
), $post_type, 'normal', apply_filters('wpmseo_metabox_prio', 'core'));
|
257 |
}
|
258 |
}
|
259 |
}
|
342 |
}else{
|
343 |
if(!empty($tags_h1)) {
|
344 |
foreach($tags_h1 as $order => $tagh1){
|
345 |
+
$words_tagh1 = preg_split('~[^\p{L}\p{N}\']+~u',utf8_decode(strtolower($tagh1->nodeValue)));
|
346 |
if(is_array($words_tagh1) && is_array($words_post_title)){
|
347 |
foreach ($words_tagh1 as $mh){
|
348 |
if(in_array($mh, $words_post_title) && $mh!=''){
|
358 |
|
359 |
if(!empty($tags_h2)) {
|
360 |
foreach($tags_h2 as $order => $tagh2){
|
361 |
+
$words_tagh2 = preg_split('~[^\p{L}\p{N}\']+~u',utf8_decode(strtolower($tagh2->nodeValue)));
|
362 |
if(is_array($words_tagh2) && is_array($words_post_title)){
|
363 |
foreach ($words_tagh2 as $mh){
|
364 |
if(in_array($mh, $words_post_title) && $mh!=''){
|
374 |
|
375 |
if(!empty($tags_h3)) {
|
376 |
foreach($tags_h3 as $order => $tagh3){
|
377 |
+
$words_tagh3 = preg_split('~[^\p{L}\p{N}\']+~u',utf8_decode(strtolower($tagh3->nodeValue)));
|
378 |
if(is_array($words_tagh3) && is_array($words_post_title)){
|
379 |
foreach ($words_tagh3 as $mh){
|
380 |
if(in_array($mh, $words_post_title) && $mh!=''){
|
390 |
|
391 |
if(!empty($tags_h4)) {
|
392 |
foreach($tags_h4 as $order => $tagh4){
|
393 |
+
$words_tagh4 = preg_split('~[^\p{L}\p{N}\']+~u',utf8_decode(strtolower($tagh4->nodeValue)));
|
394 |
if(is_array($words_tagh4) && is_array($words_post_title)){
|
395 |
foreach ($words_tagh4 as $mh){
|
396 |
if(in_array($mh, $words_post_title) && $mh!=''){
|
406 |
|
407 |
if(!empty($tags_h5)) {
|
408 |
foreach($tags_h5 as $order => $tagh5){
|
409 |
+
$words_tagh5 = preg_split('~[^\p{L}\p{N}\']+~u',utf8_decode(strtolower($tagh5->nodeValue)));
|
410 |
if(is_array($words_tagh5) && is_array($words_post_title)){
|
411 |
foreach ($words_tagh5 as $mh){
|
412 |
if(in_array($mh, $words_post_title) && $mh!=''){
|
422 |
|
423 |
if(!empty($tags_h6)) {
|
424 |
foreach($tags_h6 as $order => $tagh6){
|
425 |
+
$words_tagh6 = preg_split('~[^\p{L}\p{N}\']+~u',utf8_decode(strtolower($tagh6->nodeValue)));
|
426 |
if(is_array($words_tagh6) && is_array($words_post_title)){
|
427 |
foreach ($words_tagh6 as $mh){
|
428 |
if(in_array($mh, $words_post_title) && $mh!=''){
|
605 |
|
606 |
$output = '';
|
607 |
$circliful = ceil(100*($this->perc_score)/7);
|
608 |
+
$output .= '<div style="width:100%;float:left;">';
|
609 |
$output .= '<div class="metaseo_left">
|
610 |
<div class="metaseo-progress-bar" data-post_id="'.$post->ID.'">
|
611 |
<canvas id="inactiveProgress" class="metaseo-progress-inactive" height="275px" width="275px"></canvas>
|
619 |
$output .= '<div class="metaseo_right">';
|
620 |
$output .= $headingtitle . $contenttitle . $output_pageurl . $output_metatitle . $output_metadesc . $output_imagewrong . $output_imagealt;
|
621 |
$output .= '</div>';
|
622 |
+
$output .= '</div>';
|
623 |
return $output;
|
624 |
}
|
625 |
|
644 |
<?php
|
645 |
if($id == 'general'){
|
646 |
echo $this->metaseo_page_analysis($post);
|
647 |
+
$settings = get_option( '_metaseo_settings' );
|
648 |
+
if(!empty($settings['metaseo_follow'])){
|
649 |
+
$page_follow = get_post_meta($post->ID,'_metaseo_metafollow',true);
|
650 |
+
$select_follow = '<select class="metaseo_metabox_follow" data-post_id="'.$post->ID.'">';
|
651 |
+
if($page_follow == 'nofollow'){
|
652 |
+
$select_follow .= '<option value="follow">'.__('Follow','wp-meta-seo').'</option>';
|
653 |
+
$select_follow .= '<option selected value="nofollow">'.__('Nofollow','wp-meta-seo').'</option>';
|
654 |
+
}else{
|
655 |
+
$select_follow .= '<option selected value="follow">'.__('Follow','wp-meta-seo').'</option>';
|
656 |
+
$select_follow .= '<option value="nofollow">'.__('Nofollow','wp-meta-seo').'</option>';
|
657 |
+
}
|
658 |
+
$select_follow .= '</select>';
|
659 |
+
echo '<p><span class="wpmslabel">'.__('Follow','wp-meta-seo').'<i class="material-icons alignright metaseo_help" id="deschelp" alt="'.__('Nofollow provides a way for webmasters to tell search engines: don\'t follow this link. So it may influence the link target’s ranking','wp-meta-seo').'" style="color:#32373C" data-hasqtip="2">chat_bubble</i></span>'.$select_follow.'</p>';
|
660 |
+
|
661 |
+
}
|
662 |
+
|
663 |
+
if(!empty($settings['metaseo_index'])){
|
664 |
+
$page_index = get_post_meta($post->ID,'_metaseo_metaindex',true);
|
665 |
+
$select_index = '<select class="metaseo_metabox_index" data-post_id="'.$post->ID.'">';
|
666 |
+
if($page_index == 'noindex'){
|
667 |
+
$select_index .= '<option value="index">'.__('Index','wp-meta-seo').'</option>';
|
668 |
+
$select_index .= '<option selected value="noindex">'.__('Noindex','wp-meta-seo').'</option>';
|
669 |
+
}else{
|
670 |
+
$select_index .= '<option selected value="index">'.__('Index','wp-meta-seo').'</option>';
|
671 |
+
$select_index .= '<option value="noindex">'.__('Noindex','wp-meta-seo').'</option>';
|
672 |
+
}
|
673 |
+
|
674 |
+
$select_index .= '</select>';
|
675 |
+
echo '<p><span class="wpmslabel">'.__('Index','wp-meta-seo').'<i class="material-icons alignright metaseo_help" id="deschelp" alt="'.__('Allow search engines robots to index this content, as default your content is indexed','wp-meta-seo').'" style="color:#32373C" data-hasqtip="2">chat_bubble</i></span>'.$select_index.'</p>';
|
676 |
+
|
677 |
+
}
|
678 |
}
|
679 |
?>
|
680 |
</div>
|
inc/pages/content-meta.php
CHANGED
@@ -33,6 +33,26 @@ if (!empty($_REQUEST['_wp_http_referer'])) {
|
|
33 |
</div>
|
34 |
<script type="text/javascript">
|
35 |
jQuery(document).ready(function($){
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
$('.metaseo-metatitle').each(function() {
|
37 |
metaseo_titlelength(this.id, false , false);
|
38 |
metaseo_updateTitle(this.id, false, false);
|
33 |
</div>
|
34 |
<script type="text/javascript">
|
35 |
jQuery(document).ready(function($){
|
36 |
+
$('.metaseo_post_follow').on('click',function(){
|
37 |
+
var page_id = $(this).val();
|
38 |
+
if($(this).is(':checked')){
|
39 |
+
var follow = 'follow';
|
40 |
+
}else{
|
41 |
+
var follow = 'nofollow';
|
42 |
+
}
|
43 |
+
metaseo_update_pagefollow(page_id,follow);
|
44 |
+
});
|
45 |
+
|
46 |
+
$('.metaseo_post_index').on('click',function(){
|
47 |
+
var page_id = $(this).val();
|
48 |
+
if($(this).is(':checked')){
|
49 |
+
var index = 'index';
|
50 |
+
}else{
|
51 |
+
var index = 'noindex';
|
52 |
+
}
|
53 |
+
metaseo_update_pageindex(page_id,index);
|
54 |
+
});
|
55 |
+
|
56 |
$('.metaseo-metatitle').each(function() {
|
57 |
metaseo_titlelength(this.id, false , false);
|
58 |
metaseo_updateTitle(this.id, false, false);
|
inc/pages/link-meta.php
CHANGED
@@ -20,7 +20,7 @@ if (!empty($_REQUEST['_wp_http_referer'])) {
|
|
20 |
<div class="wrap seo_extended_table_page">
|
21 |
<div id="icon-edit-pages" class="icon32 icon32-posts-page"></div>
|
22 |
|
23 |
-
<?php echo '<h1>' . __('Link
|
24 |
|
25 |
<form id="wp-seo-meta-form" action="" method="post">
|
26 |
|
@@ -33,12 +33,25 @@ if (!empty($_REQUEST['_wp_http_referer'])) {
|
|
33 |
<script type="text/javascript">
|
34 |
jQuery(document).ready(function($){
|
35 |
$('.metaseo_link_title').bind('input propertychange', function() {
|
36 |
-
|
37 |
});
|
38 |
|
39 |
$('.wpms_update_link').on('click', function() {
|
40 |
saveMetaLinkChanges(this);
|
41 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
});
|
43 |
|
44 |
</script>
|
20 |
<div class="wrap seo_extended_table_page">
|
21 |
<div id="icon-edit-pages" class="icon32 icon32-posts-page"></div>
|
22 |
|
23 |
+
<?php echo '<h1>' . __('Link editor', 'wp-meta-seo') . '</h1>'; ?>
|
24 |
|
25 |
<form id="wp-seo-meta-form" action="" method="post">
|
26 |
|
33 |
<script type="text/javascript">
|
34 |
jQuery(document).ready(function($){
|
35 |
$('.metaseo_link_title').bind('input propertychange', function() {
|
36 |
+
$(this).closest('tr').find('.wpms_update_link').show();
|
37 |
});
|
38 |
|
39 |
$('.wpms_update_link').on('click', function() {
|
40 |
saveMetaLinkChanges(this);
|
41 |
});
|
42 |
+
|
43 |
+
$('.wpms_change_follow').on('click', function() {
|
44 |
+
wpmsChangeFollow(this);
|
45 |
+
});
|
46 |
+
|
47 |
+
$('.btn_apply_follow').on('click',function(){
|
48 |
+
wpmsUpdateFollow(this);
|
49 |
+
});
|
50 |
+
|
51 |
+
$('.wpms_scan_link').on('click',function(){
|
52 |
+
var $this = $(this);
|
53 |
+
wpms_scan_link($this);
|
54 |
+
});
|
55 |
});
|
56 |
|
57 |
</script>
|
inc/pages/metaseo-broken-link.php
CHANGED
@@ -44,52 +44,7 @@ if (!empty($_REQUEST['_wp_http_referer'])) {
|
|
44 |
|
45 |
$('.wpms_scan_link').on('click',function(){
|
46 |
var $this = $(this);
|
47 |
-
|
48 |
-
url: ajaxurl,
|
49 |
-
method: 'POST',
|
50 |
-
dataType: 'json',
|
51 |
-
data: {
|
52 |
-
'action': 'wpms_scan_link',
|
53 |
-
'paged' : $this.data('paged'),
|
54 |
-
'comment_paged' : $this.data('comment_paged')
|
55 |
-
},
|
56 |
-
success: function (res) {
|
57 |
-
if(res.status == false){
|
58 |
-
|
59 |
-
if(res.type == 'limit'){
|
60 |
-
var wpmf_process = $('.wpmf_process').data('w');
|
61 |
-
var wpmf_process_new = parseFloat(wpmf_process) + parseFloat(res.percent);
|
62 |
-
if(wpmf_process_new > 100) wpmf_process_new = 100;
|
63 |
-
$('.wpmf_process').data('w' , wpmf_process_new);
|
64 |
-
$('.wpmf_process').css('width' , wpmf_process_new +'%').show();
|
65 |
-
$this.click();
|
66 |
-
}else if(res.type == 'limit_comment_content'){
|
67 |
-
var wpmf_process = $('.wpmf_process').data('w');
|
68 |
-
if(wpmf_process < 33.33 ) wpmf_process = 33.33;
|
69 |
-
var wpmf_process_new = parseFloat(wpmf_process) + parseFloat(res.percent);
|
70 |
-
if(wpmf_process_new > 100) wpmf_process_new = 100;
|
71 |
-
$('.wpmf_process').data('w' , wpmf_process_new);
|
72 |
-
$('.wpmf_process').css('width' , wpmf_process_new +'%').show();
|
73 |
-
$this.data('comment_paged' , parseInt(res.paged)+1);
|
74 |
-
$this.click();
|
75 |
-
}else{
|
76 |
-
var wpmf_process = $('.wpmf_process').data('w');
|
77 |
-
if(wpmf_process < 66.66 ) wpmf_process = 66.66;
|
78 |
-
var wpmf_process_new = parseFloat(wpmf_process) + parseFloat(res.percent);
|
79 |
-
if(wpmf_process_new > 100) wpmf_process_new = 100;
|
80 |
-
$('.wpmf_process').data('w' , wpmf_process_new);
|
81 |
-
$('.wpmf_process').css('width' , wpmf_process_new +'%').show();
|
82 |
-
$this.data('paged' , parseInt(res.paged)+1);
|
83 |
-
$this.click();
|
84 |
-
}
|
85 |
-
}else{
|
86 |
-
$('.wpmf_process').data('w' , 100);
|
87 |
-
$('.wpmf_process').css('width' , '100%');
|
88 |
-
$('#wp-seo-meta-form .spinner').hide();
|
89 |
-
window.location.assign(document.URL);
|
90 |
-
}
|
91 |
-
}
|
92 |
-
});
|
93 |
});
|
94 |
|
95 |
$('.wpms_flush_link').on('click',function(){
|
44 |
|
45 |
$('.wpms_scan_link').on('click',function(){
|
46 |
var $this = $(this);
|
47 |
+
wpms_scan_link($this);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
});
|
49 |
|
50 |
$('.wpms_flush_link').on('click',function(){
|
js/metaseo_admin.js
CHANGED
@@ -85,31 +85,18 @@ function metaseo_updatekeywords(metakeywords_id, needToSave, updateSnippet) {
|
|
85 |
oldKeywordsValues[postid] = keywords;
|
86 |
}
|
87 |
|
88 |
-
var wpms_link_array = [];
|
89 |
-
|
90 |
-
|
91 |
-
function metaseo_updateLinktitle(input){
|
92 |
-
var stt = jQuery(input).closest('tr').data('link');
|
93 |
-
var link_title = jQuery.trim(metaseo_clean(jQuery(input).closest('tr').find('.metaseo_link_title').val()));
|
94 |
-
var postid = jQuery(input).data('post_id');
|
95 |
-
var link_old = jQuery(input).closest('tr').find('.wpms_old_link').val();
|
96 |
-
jQuery(input).closest('tr').find('.wpms_new_link a').attr('title',link_title);
|
97 |
-
jQuery(input).closest('tr').find('.wpms_update_link').show();
|
98 |
-
var link_new = jQuery(input).closest('tr').find('.wpms_new_link').html();
|
99 |
-
wpms_link_array[stt] = {postid : postid , link_old : link_old ,link_new : link_new , link_title : link_title };
|
100 |
-
}
|
101 |
-
|
102 |
function saveMetaLinkChanges(button_update){
|
103 |
-
var
|
|
|
|
|
104 |
jQuery.ajax({
|
105 |
url : ajaxurl,
|
106 |
method : 'POST',
|
107 |
dataType: 'json',
|
108 |
data: {
|
109 |
'action' : 'metaseo_update_link',
|
110 |
-
'
|
111 |
-
'
|
112 |
-
'link_new' : wpms_link_array[stt].link_new,
|
113 |
},
|
114 |
success: function (response) {
|
115 |
jQuery(button_update).closest('tr').find('.wpms_update_link').hide();
|
@@ -124,6 +111,168 @@ function saveMetaLinkChanges(button_update){
|
|
124 |
});
|
125 |
}
|
126 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
127 |
function metaseo_desclength(metadesc_id, needToSave) {
|
128 |
var desc = jQuery.trim(metaseo_clean(jQuery('#' + metadesc_id).val()));
|
129 |
var postid = metadesc_id.replace('metaseo-metadesc-', '');
|
@@ -687,51 +836,69 @@ jQuery(document).ready(function($) {
|
|
687 |
});
|
688 |
|
689 |
$('.metaseo_imgs_per_page').bind('input propertychange', function(){
|
690 |
-
|
691 |
-
|
692 |
-
|
693 |
-
|
694 |
-
|
695 |
-
|
696 |
-
|
697 |
-
|
698 |
-
$('.metaseo-filter').bind('change', function(){
|
699 |
-
var value = $(this).val();
|
700 |
-
$('.metaseo-filter').each(function(i,e){
|
701 |
-
if($(e).val() != value){
|
702 |
-
$(e).val(value);
|
703 |
-
}
|
704 |
-
});
|
705 |
-
});
|
706 |
-
|
707 |
-
$('.redirect_fillter').bind('change', function(){
|
708 |
-
var value = $(this).val();
|
709 |
-
$('.redirect_fillter').each(function(i,e){
|
710 |
-
if($(e).val() != value){
|
711 |
-
$(e).val(value);
|
712 |
-
}
|
713 |
-
});
|
714 |
-
});
|
715 |
-
|
716 |
-
$('.broken_fillter').bind('change', function(){
|
717 |
-
var value = $(this).val();
|
718 |
-
$('.broken_fillter').each(function(i,e){
|
719 |
-
if($(e).val() != value){
|
720 |
-
$(e).val(value);
|
721 |
-
}
|
722 |
-
});
|
723 |
-
});
|
724 |
|
725 |
-
|
726 |
-
|
727 |
-
|
728 |
-
|
729 |
-
|
730 |
-
|
731 |
-
|
732 |
-
|
733 |
|
734 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
735 |
var savedInfo = $(this).parent().find('span.saved-info');
|
736 |
var iname = validateiName( $(this).val() );
|
737 |
var msg = iname.msg;
|
@@ -772,7 +939,7 @@ jQuery(document).ready(function($) {
|
|
772 |
}
|
773 |
});
|
774 |
|
775 |
-
|
776 |
e.preventDefault();
|
777 |
$(this).closest('.error').fadeOut(1000);
|
778 |
setTimeout(function(){
|
@@ -797,7 +964,19 @@ jQuery(document).ready(function($) {
|
|
797 |
}
|
798 |
});
|
799 |
}
|
800 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
801 |
//----------------------------------------------------------
|
802 |
//Pop-up declaration
|
803 |
$.fn.absoluteCenter = function() {
|
85 |
oldKeywordsValues[postid] = keywords;
|
86 |
}
|
87 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
88 |
function saveMetaLinkChanges(button_update){
|
89 |
+
var link_id = jQuery(button_update).closest('tr').data('link');
|
90 |
+
var meta_title = jQuery(button_update).closest('tr').find('.metaseo_link_title').val();
|
91 |
+
meta_title = jQuery.trim(metaseo_clean(meta_title));
|
92 |
jQuery.ajax({
|
93 |
url : ajaxurl,
|
94 |
method : 'POST',
|
95 |
dataType: 'json',
|
96 |
data: {
|
97 |
'action' : 'metaseo_update_link',
|
98 |
+
'link_id' : link_id,
|
99 |
+
'meta_title' : meta_title,
|
|
|
100 |
},
|
101 |
success: function (response) {
|
102 |
jQuery(button_update).closest('tr').find('.wpms_update_link').hide();
|
111 |
});
|
112 |
}
|
113 |
|
114 |
+
function metaseo_update_pageindex(page_id,index){
|
115 |
+
jQuery.ajax({
|
116 |
+
url : ajaxurl,
|
117 |
+
method : 'POST',
|
118 |
+
dataType: 'json',
|
119 |
+
data: {
|
120 |
+
'action' : 'metaseo_update_pageindex',
|
121 |
+
'page_id' : page_id,
|
122 |
+
'index' : index,
|
123 |
+
},
|
124 |
+
success: function (response) {
|
125 |
+
|
126 |
+
}
|
127 |
+
});
|
128 |
+
}
|
129 |
+
|
130 |
+
function metaseo_update_pagefollow(page_id,follow){
|
131 |
+
jQuery.ajax({
|
132 |
+
url : ajaxurl,
|
133 |
+
method : 'POST',
|
134 |
+
dataType: 'json',
|
135 |
+
data: {
|
136 |
+
'action' : 'metaseo_update_pagefollow',
|
137 |
+
'page_id' : page_id,
|
138 |
+
'follow' : follow,
|
139 |
+
},
|
140 |
+
success: function (response) {
|
141 |
+
|
142 |
+
}
|
143 |
+
});
|
144 |
+
}
|
145 |
+
|
146 |
+
function wpmsChangeFollow(button){
|
147 |
+
var link_id = jQuery(button).closest('tr').data('link');
|
148 |
+
var type = jQuery(button).data('type');
|
149 |
+
var follow = 1;
|
150 |
+
if(type == 'done'){
|
151 |
+
jQuery(button).data('type','warning').html('warning');
|
152 |
+
jQuery(button).removeClass('wpms_ok').addClass('wpms_warning');
|
153 |
+
follow = 0;
|
154 |
+
}else{
|
155 |
+
jQuery(button).data('type','done').html('done');
|
156 |
+
jQuery(button).removeClass('wpms_warning').addClass('wpms_ok');
|
157 |
+
follow = 1;
|
158 |
+
}
|
159 |
+
|
160 |
+
jQuery.ajax({
|
161 |
+
url : ajaxurl,
|
162 |
+
method : 'POST',
|
163 |
+
dataType: 'json',
|
164 |
+
data: {
|
165 |
+
'action' : 'metaseo_update_follow',
|
166 |
+
'link_id' : link_id,
|
167 |
+
'follow' : follow,
|
168 |
+
},
|
169 |
+
success: function (response) {
|
170 |
+
|
171 |
+
}
|
172 |
+
});
|
173 |
+
}
|
174 |
+
|
175 |
+
function wpms_scan_link($this){
|
176 |
+
if($this.hasClass('page_link_meta')){
|
177 |
+
jQuery('.spinner_apply_follow').css('visibility','visible').show();
|
178 |
+
}
|
179 |
+
jQuery.ajax({
|
180 |
+
url: ajaxurl,
|
181 |
+
method: 'POST',
|
182 |
+
dataType: 'json',
|
183 |
+
data: {
|
184 |
+
'action': 'wpms_scan_link',
|
185 |
+
'paged' : $this.data('paged'),
|
186 |
+
'comment_paged' : $this.data('comment_paged')
|
187 |
+
},
|
188 |
+
success: function (res) {
|
189 |
+
if(res.status == false){
|
190 |
+
|
191 |
+
if(res.type == 'limit'){
|
192 |
+
var wpmf_process = jQuery('.wpmf_process').data('w');
|
193 |
+
var wpmf_process_new = parseFloat(wpmf_process) + parseFloat(res.percent);
|
194 |
+
if(wpmf_process_new > 100) wpmf_process_new = 100;
|
195 |
+
jQuery('.wpmf_process').data('w' , wpmf_process_new);
|
196 |
+
jQuery('.wpmf_process').css('width' , wpmf_process_new +'%').show();
|
197 |
+
$this.click();
|
198 |
+
}else if(res.type == 'limit_comment_content'){
|
199 |
+
var wpmf_process = jQuery('.wpmf_process').data('w');
|
200 |
+
if(wpmf_process < 33.33 ) wpmf_process = 33.33;
|
201 |
+
var wpmf_process_new = parseFloat(wpmf_process) + parseFloat(res.percent);
|
202 |
+
if(wpmf_process_new > 100) wpmf_process_new = 100;
|
203 |
+
jQuery('.wpmf_process').data('w' , wpmf_process_new);
|
204 |
+
jQuery('.wpmf_process').css('width' , wpmf_process_new +'%').show();
|
205 |
+
$this.data('comment_paged' , parseInt(res.paged)+1);
|
206 |
+
$this.click();
|
207 |
+
}else{
|
208 |
+
var wpmf_process = jQuery('.wpmf_process').data('w');
|
209 |
+
if(wpmf_process < 66.66 ) wpmf_process = 66.66;
|
210 |
+
var wpmf_process_new = parseFloat(wpmf_process) + parseFloat(res.percent);
|
211 |
+
if(wpmf_process_new > 100) wpmf_process_new = 100;
|
212 |
+
jQuery('.wpmf_process').data('w' , wpmf_process_new);
|
213 |
+
jQuery('.wpmf_process').css('width' , wpmf_process_new +'%').show();
|
214 |
+
$this.data('paged' , parseInt(res.paged)+1);
|
215 |
+
$this.click();
|
216 |
+
}
|
217 |
+
}else{
|
218 |
+
jQuery('.wpmf_process').data('w' , 100);
|
219 |
+
jQuery('.wpmf_process').css('width' , '100%');
|
220 |
+
jQuery('#wp-seo-meta-form .spinner').hide();
|
221 |
+
if($this.hasClass('page_link_meta')){
|
222 |
+
jQuery('.spinner_apply_follow').hide();
|
223 |
+
}
|
224 |
+
window.location.assign(document.URL);
|
225 |
+
}
|
226 |
+
}
|
227 |
+
});
|
228 |
+
}
|
229 |
+
|
230 |
+
function wpmsUpdateFollow(button){
|
231 |
+
var $this = jQuery(button);
|
232 |
+
jQuery('.spinner_apply_follow').css('visibility','visible').show();
|
233 |
+
var follow_value = jQuery('.metaseo_follow_action').val();
|
234 |
+
if(follow_value == 'follow_selected' || follow_value == 'nofollow_selected'){
|
235 |
+
if (follow_value == 0)
|
236 |
+
return;
|
237 |
+
|
238 |
+
var link_selected = [];
|
239 |
+
jQuery(".metaseo_link").each(function (index) {
|
240 |
+
if (jQuery(this).is(':checked')) {
|
241 |
+
link_selected.push(jQuery(this).val());
|
242 |
+
}
|
243 |
+
});
|
244 |
+
if(link_selected.length == 0) return;
|
245 |
+
var data = {
|
246 |
+
action : 'metaseo_update_multiplefollow',
|
247 |
+
linkids : link_selected,
|
248 |
+
follow_value : follow_value
|
249 |
+
};
|
250 |
+
}else{
|
251 |
+
var data = {
|
252 |
+
action : 'metaseo_update_multiplefollow',
|
253 |
+
follow_value : follow_value
|
254 |
+
};
|
255 |
+
}
|
256 |
+
jQuery.ajax({
|
257 |
+
url : ajaxurl,
|
258 |
+
method : 'POST',
|
259 |
+
dataType : 'json',
|
260 |
+
data : data,
|
261 |
+
success: function (response) {
|
262 |
+
if(response.status == true){
|
263 |
+
jQuery('.spinner_apply_follow').hide();
|
264 |
+
window.location.assign(document.URL);
|
265 |
+
}else{
|
266 |
+
if(follow_value == 'follow_all' || follow_value == 'nofollow_all'){
|
267 |
+
if(response.message == 'limit'){
|
268 |
+
$this.click();
|
269 |
+
}
|
270 |
+
}
|
271 |
+
}
|
272 |
+
}
|
273 |
+
});
|
274 |
+
}
|
275 |
+
|
276 |
function metaseo_desclength(metadesc_id, needToSave) {
|
277 |
var desc = jQuery.trim(metaseo_clean(jQuery('#' + metadesc_id).val()));
|
278 |
var postid = metadesc_id.replace('metaseo-metadesc-', '');
|
836 |
});
|
837 |
|
838 |
$('.metaseo_imgs_per_page').bind('input propertychange', function(){
|
839 |
+
var perpage = $(this).val();
|
840 |
+
$('.metaseo_imgs_per_page').each(function(i,e){
|
841 |
+
if($(e).val() != perpage){
|
842 |
+
$(e).val(perpage);
|
843 |
+
}
|
844 |
+
});
|
845 |
+
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
846 |
|
847 |
+
$('.metaseo_link_source').bind('change', function(){
|
848 |
+
var value = $(this).val();
|
849 |
+
$('.metaseo_link_source').each(function(i,e){
|
850 |
+
if($(e).val() != value){
|
851 |
+
$(e).val(value);
|
852 |
+
}
|
853 |
+
});
|
854 |
+
});
|
855 |
|
856 |
+
$('.metaseo_follow_action').bind('change', function(){
|
857 |
+
var value = $(this).val();
|
858 |
+
$('.metaseo_follow_action').each(function(i,e){
|
859 |
+
if($(e).val() != value){
|
860 |
+
$(e).val(value);
|
861 |
+
}
|
862 |
+
});
|
863 |
+
});
|
864 |
+
|
865 |
+
$('.metaseo-filter').bind('change', function(){
|
866 |
+
var value = $(this).val();
|
867 |
+
$('.metaseo-filter').each(function(i,e){
|
868 |
+
if($(e).val() != value){
|
869 |
+
$(e).val(value);
|
870 |
+
}
|
871 |
+
});
|
872 |
+
});
|
873 |
+
|
874 |
+
$('.redirect_fillter').bind('change', function(){
|
875 |
+
var value = $(this).val();
|
876 |
+
$('.redirect_fillter').each(function(i,e){
|
877 |
+
if($(e).val() != value){
|
878 |
+
$(e).val(value);
|
879 |
+
}
|
880 |
+
});
|
881 |
+
});
|
882 |
+
|
883 |
+
$('.broken_fillter').bind('change', function(){
|
884 |
+
var value = $(this).val();
|
885 |
+
$('.broken_fillter').each(function(i,e){
|
886 |
+
if($(e).val() != value){
|
887 |
+
$(e).val(value);
|
888 |
+
}
|
889 |
+
});
|
890 |
+
});
|
891 |
+
|
892 |
+
$('.mbulk_copy').bind('change', function(){
|
893 |
+
var value = $(this).val();
|
894 |
+
$('.mbulk_copy').each(function(i,e){
|
895 |
+
if($(e).val() != value){
|
896 |
+
$(e).val(value);
|
897 |
+
}
|
898 |
+
});
|
899 |
+
});
|
900 |
+
|
901 |
+
$('.metaseo-img-name').bind('input propertychange', function() {
|
902 |
var savedInfo = $(this).parent().find('span.saved-info');
|
903 |
var iname = validateiName( $(this).val() );
|
904 |
var msg = iname.msg;
|
939 |
}
|
940 |
});
|
941 |
|
942 |
+
$('.dissmiss-import').bind('click', function(e){
|
943 |
e.preventDefault();
|
944 |
$(this).closest('.error').fadeOut(1000);
|
945 |
setTimeout(function(){
|
964 |
}
|
965 |
});
|
966 |
}
|
967 |
+
});
|
968 |
+
|
969 |
+
$('.metaseo_metabox_follow').on('change',function(){
|
970 |
+
var page_id = $(this).data('post_id');
|
971 |
+
var follow = $(this).val();
|
972 |
+
metaseo_update_pagefollow(page_id,follow);
|
973 |
+
});
|
974 |
+
|
975 |
+
$('.metaseo_metabox_index').on('change',function(){
|
976 |
+
var page_id = $(this).data('post_id');
|
977 |
+
var index = $(this).val();
|
978 |
+
metaseo_update_pageindex(page_id,index);
|
979 |
+
});
|
980 |
//----------------------------------------------------------
|
981 |
//Pop-up declaration
|
982 |
$.fn.absoluteCenter = function() {
|
languages/wp-meta-seo-en_US.mo
CHANGED
Binary file
|
languages/wp-meta-seo-en_US.po
CHANGED
@@ -264,8 +264,8 @@ msgstr "WP Meta SEO"
|
|
264 |
msgid "Content meta"
|
265 |
msgstr "Content meta"
|
266 |
|
267 |
-
msgid "Image
|
268 |
-
msgstr "Image
|
269 |
|
270 |
msgid "Settings"
|
271 |
msgstr "Settings"
|
@@ -547,8 +547,8 @@ msgstr "Link title"
|
|
547 |
msgid "Link text"
|
548 |
msgstr "Link text"
|
549 |
|
550 |
-
msgid "Link
|
551 |
-
msgstr "Link
|
552 |
|
553 |
msgid "Meta title as page title"
|
554 |
msgstr "Meta title as page title"
|
@@ -579,3 +579,57 @@ msgstr "Hits number"
|
|
579 |
|
580 |
msgid "Status"
|
581 |
msgstr "Status"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
264 |
msgid "Content meta"
|
265 |
msgstr "Content meta"
|
266 |
|
267 |
+
msgid "Image information"
|
268 |
+
msgstr "Image information"
|
269 |
|
270 |
msgid "Settings"
|
271 |
msgstr "Settings"
|
547 |
msgid "Link text"
|
548 |
msgstr "Link text"
|
549 |
|
550 |
+
msgid "Link editor"
|
551 |
+
msgstr "Link editor"
|
552 |
|
553 |
msgid "Meta title as page title"
|
554 |
msgstr "Meta title as page title"
|
579 |
|
580 |
msgid "Status"
|
581 |
msgstr "Status"
|
582 |
+
|
583 |
+
msgid "Allow search engines robots to index this content, as default your content is indexed"
|
584 |
+
msgstr "Allow search engines robots to index this content, as default your content is indexed"
|
585 |
+
|
586 |
+
msgid "Provides show or do not show this page in search results in search results."
|
587 |
+
msgstr "Provides show or do not show this page in search results in search results."
|
588 |
+
|
589 |
+
msgid "Index"
|
590 |
+
msgstr "Index"
|
591 |
+
|
592 |
+
msgid "Follow"
|
593 |
+
msgstr "Follow"
|
594 |
+
|
595 |
+
msgid "Re-index content links"
|
596 |
+
msgstr "Re-index content links"
|
597 |
+
|
598 |
+
msgid "Apply"
|
599 |
+
msgstr "Apply"
|
600 |
+
|
601 |
+
msgid "-- Selection --"
|
602 |
+
msgstr "-- Selection --"
|
603 |
+
|
604 |
+
msgid "Follow selected"
|
605 |
+
msgstr "Follow selected"
|
606 |
+
|
607 |
+
msgid "Nofollow selected"
|
608 |
+
msgstr "Nofollow selected"
|
609 |
+
|
610 |
+
msgid "Follow all"
|
611 |
+
msgstr "Follow all"
|
612 |
+
|
613 |
+
msgid "Nofollow all"
|
614 |
+
msgstr "Nofollow all"
|
615 |
+
|
616 |
+
msgid "Link source"
|
617 |
+
msgstr "Link source"
|
618 |
+
|
619 |
+
msgid "Internal"
|
620 |
+
msgstr "Internal"
|
621 |
+
|
622 |
+
msgid "External"
|
623 |
+
msgstr "External"
|
624 |
+
|
625 |
+
msgid "Post/Page follow"
|
626 |
+
msgstr "Post/Page follow"
|
627 |
+
|
628 |
+
msgid "Post/Page index"
|
629 |
+
msgstr "Post/Page index"
|
630 |
+
|
631 |
+
msgid "Use ImageRecycle image compression plugin to activate this feature"
|
632 |
+
msgstr "Use ImageRecycle image compression plugin to activate this feature"
|
633 |
+
|
634 |
+
msgid "Images represent around 60% of a web page weight. An image compression reduce the image size by up to 70% while preserving the same visual quality. Small loading time is great for SEO!"
|
635 |
+
msgstr "Images represent around 60% of a web page weight. An image compression reduce the image size by up to 70% while preserving the same visual quality. Small loading time is great for SEO!"
|
languages/wp-meta-seo-fr_FR.mo
CHANGED
Binary file
|
languages/wp-meta-seo-fr_FR.po
CHANGED
@@ -14,68 +14,110 @@ msgstr ""
|
|
14 |
msgid "Twitter username (without @)"
|
15 |
msgstr "ID Twitter (sans le @)"
|
16 |
|
17 |
-
msgid "
|
18 |
-
|
|
|
|
|
|
|
|
|
19 |
|
20 |
-
msgid "
|
21 |
-
|
|
|
|
|
|
|
|
|
22 |
|
23 |
-
msgid "
|
24 |
-
|
|
|
|
|
|
|
|
|
25 |
|
26 |
msgid "Results preview"
|
27 |
msgstr "Prévisualisation"
|
28 |
|
29 |
-
msgid "
|
|
|
|
|
30 |
msgstr "Prévisualisation des résultats de recherche, titre, description et URL"
|
31 |
|
32 |
msgid "Search engine title"
|
33 |
msgstr "Titre"
|
34 |
|
35 |
-
msgid "
|
36 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
|
38 |
msgid "Search engine description"
|
39 |
msgstr "Description"
|
40 |
|
41 |
-
msgid "
|
42 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
43 |
|
44 |
msgid "Facebook Title"
|
45 |
msgstr "Titre facebook"
|
46 |
|
47 |
-
msgid "
|
|
|
|
|
48 |
msgstr "Titre customisé lors du partage de ce contenu sur Facebook"
|
49 |
|
50 |
msgid "Facebook Description"
|
51 |
msgstr "Description Facebook"
|
52 |
|
53 |
-
msgid "
|
|
|
|
|
54 |
msgstr "Description customisé lors du partage de ce contenu sur Facebook"
|
55 |
|
56 |
msgid "Facebook Image"
|
57 |
msgstr "Image Facebook"
|
58 |
|
59 |
-
msgid "
|
60 |
-
|
|
|
|
|
|
|
|
|
61 |
|
62 |
msgid "Twitter Title"
|
63 |
msgstr "Titre Twitter"
|
64 |
|
65 |
-
msgid "
|
|
|
|
|
66 |
msgstr "Titre customisé lors du partage de ce contenu sur Twitter"
|
67 |
|
68 |
msgid "Twitter Description"
|
69 |
msgstr "Description Twitter"
|
70 |
|
71 |
-
msgid "
|
|
|
|
|
72 |
msgstr "Description customisé lors du partage de ce contenu sur Twitter"
|
73 |
|
74 |
msgid "Twitter Image"
|
75 |
msgstr "Image Twitter"
|
76 |
|
77 |
-
msgid "
|
78 |
-
|
|
|
|
|
|
|
|
|
79 |
|
80 |
msgid "Use Image"
|
81 |
msgstr "Utiliser image"
|
@@ -158,8 +200,11 @@ msgstr "Tout selectionner"
|
|
158 |
msgid "Filter"
|
159 |
msgstr "Filtrer"
|
160 |
|
161 |
-
msgid "
|
162 |
-
|
|
|
|
|
|
|
163 |
|
164 |
msgid "This image has still not been inserted in any post!"
|
165 |
msgstr "Cette image n'a été ajouté dans aucun de vos contenus"
|
@@ -207,7 +252,9 @@ msgid "Content of the post is empty, please check again"
|
|
207 |
msgstr "Le contenu est vide, merci de revérifier"
|
208 |
|
209 |
msgid "We can't get traffic rank from Alexa for this website"
|
210 |
-
msgstr "
|
|
|
|
|
211 |
|
212 |
msgid "Meta Title"
|
213 |
msgstr "Meta titre"
|
@@ -230,8 +277,12 @@ msgstr "Afficher"
|
|
230 |
msgid "Preview"
|
231 |
msgstr "Prévisualiser"
|
232 |
|
233 |
-
msgid "
|
234 |
-
|
|
|
|
|
|
|
|
|
235 |
|
236 |
msgid "Snippet Preview %s"
|
237 |
msgstr "Prévisualisation %s"
|
@@ -263,8 +314,8 @@ msgstr "WP Meta SEO"
|
|
263 |
msgid "Content meta"
|
264 |
msgstr "Contenu meta"
|
265 |
|
266 |
-
msgid "Image
|
267 |
-
msgstr "Image
|
268 |
|
269 |
msgid "Settings"
|
270 |
msgstr "Paramètres"
|
@@ -279,7 +330,9 @@ msgid "Well done! This image is perfect now."
|
|
279 |
msgstr "Bien joué ! Image remise à la bonne taille !"
|
280 |
|
281 |
msgid "Oops! An error occured when updating the post, please try again"
|
282 |
-
msgstr "
|
|
|
|
|
283 |
|
284 |
msgid "Resize image"
|
285 |
msgstr "Redimensionner image"
|
@@ -338,8 +391,12 @@ msgstr "Nom image > alt texte"
|
|
338 |
msgid "Image name as image title"
|
339 |
msgstr "Nom image > titre d'image"
|
340 |
|
341 |
-
msgid "
|
342 |
-
|
|
|
|
|
|
|
|
|
343 |
|
344 |
msgid "Twitter card type "
|
345 |
msgstr "Type Twitter card"
|
@@ -368,11 +425,15 @@ msgstr "Plus d'info sur le plugin WP Meta SEO"
|
|
368 |
msgid "Other plugins from JoomUnited"
|
369 |
msgstr "Autres plugin de JoomUnited"
|
370 |
|
371 |
-
msgid "
|
372 |
-
|
|
|
|
|
|
|
373 |
|
374 |
msgid "Check if a word of this content title is also in the text"
|
375 |
-
msgstr "
|
|
|
376 |
|
377 |
msgid "Does the page title match with the permalink (URL structure)"
|
378 |
msgstr "Vérifie si le titre de page correspond à l'URL (permalien)"
|
@@ -383,32 +444,72 @@ msgstr "Est-ce que les meta titres sont complétés?"
|
|
383 |
msgid "Is the meta description of this page filled?"
|
384 |
msgstr "Est-ce que les meta description sont complétés?"
|
385 |
|
386 |
-
msgid "
|
387 |
-
|
|
|
|
|
|
|
|
|
388 |
|
389 |
msgid "Check for image Alt text and title"
|
390 |
msgstr "Vérifie si les textes alt and titre d'images sont remplis"
|
391 |
|
392 |
-
msgid "
|
393 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
394 |
|
395 |
-
msgid "
|
396 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
397 |
|
398 |
-
msgid "
|
399 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
400 |
|
401 |
-
msgid "
|
402 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
403 |
|
404 |
msgid ""
|
405 |
-
"We recommend to use both alt text and image title. The main advantage is
|
406 |
-
"
|
|
|
|
|
|
|
407 |
msgstr ""
|
408 |
-
"Nous vous recommandons de compléter les le textes alternatif et les titres
|
|
|
|
|
|
|
409 |
|
410 |
-
msgid "
|
411 |
-
|
|
|
|
|
|
|
|
|
|
|
412 |
|
413 |
msgid "Social networks meta"
|
414 |
msgstr "Meta réseaux sociaux"
|
@@ -449,17 +550,26 @@ msgstr "Parfait! image optimisée"
|
|
449 |
msgid "The default card type to use"
|
450 |
msgstr "Type de Twitter card"
|
451 |
|
452 |
-
msgid "
|
453 |
-
|
|
|
|
|
|
|
|
|
454 |
|
455 |
-
msgid "
|
456 |
-
|
|
|
|
|
|
|
|
|
457 |
|
458 |
msgid "Name is existing"
|
459 |
msgstr "Ce nom existe déjà"
|
460 |
|
461 |
msgid "We found 0 image which needed to add or change meta information"
|
462 |
-
msgstr "
|
|
|
463 |
|
464 |
msgid "The post is not existed, please choose one another!"
|
465 |
msgstr "Ce post n'existe pas, merci d'un sélectionner un autre"
|
@@ -476,7 +586,9 @@ msgstr "Erreur lors de la mise à jour des meta"
|
|
476 |
msgid "The post has been deleted before, please check again!"
|
477 |
msgstr "Ce contenu a été supprimé, merci de recharger la page"
|
478 |
|
479 |
-
msgid "
|
|
|
|
|
480 |
msgstr "Prévisualisation des résultats de recherche Google"
|
481 |
|
482 |
msgid "This post is not existed or deleted, please choose one another!"
|
@@ -503,8 +615,10 @@ msgstr "Mot clés enregistrés"
|
|
503 |
msgid "Force SEO validation"
|
504 |
msgstr "Forcer validation SEO"
|
505 |
|
506 |
-
msgid "
|
507 |
-
|
|
|
|
|
508 |
|
509 |
msgid "Meta keywords"
|
510 |
msgstr "Mot clés"
|
@@ -521,8 +635,13 @@ msgstr "Ajouter un champ titre dans l'outil d'édition de lien"
|
|
521 |
msgid "Link titles"
|
522 |
msgstr "Titres lien"
|
523 |
|
524 |
-
msgid "
|
525 |
-
|
|
|
|
|
|
|
|
|
|
|
526 |
|
527 |
msgid "Links title completed"
|
528 |
msgstr "Titre de lien ajouté"
|
@@ -545,26 +664,56 @@ msgstr "Titre liens"
|
|
545 |
msgid "Link text"
|
546 |
msgstr "Text lien"
|
547 |
|
548 |
-
msgid "Link
|
549 |
-
msgstr "
|
550 |
|
551 |
msgid "Meta title as page title"
|
552 |
msgstr "Meta titre vers titre page"
|
553 |
|
554 |
-
msgid "
|
555 |
-
|
|
|
|
|
556 |
|
557 |
-
msgid "
|
558 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
559 |
|
560 |
-
msgid "
|
561 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
562 |
|
563 |
-
msgid "
|
564 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
565 |
|
566 |
-
msgid "
|
567 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
568 |
|
569 |
msgid "Index internal broken links"
|
570 |
msgstr "Indexer les liens brisés"
|
@@ -577,3 +726,68 @@ msgstr "Nombre de clic"
|
|
577 |
|
578 |
msgid "Status"
|
579 |
msgstr "Status"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14 |
msgid "Twitter username (without @)"
|
15 |
msgstr "ID Twitter (sans le @)"
|
16 |
|
17 |
+
msgid ""
|
18 |
+
"2 plugins that are doing almost the same thing detected: disable AIO SEO or "
|
19 |
+
"Yoast SEO to avoid conflict."
|
20 |
+
msgstr ""
|
21 |
+
"2 plugins sont présent et font tous les 2 du SEO: merci de désactiver AIO "
|
22 |
+
"SEO ou Yoast SEO pour éviter les conflits"
|
23 |
|
24 |
+
msgid ""
|
25 |
+
"We have found that you’re using All In One SEO plugin, WP Meta SEO can "
|
26 |
+
"import the meta from this plugin, %s"
|
27 |
+
msgstr ""
|
28 |
+
"Vous utilisez le plugin All in one SEO, nous pouvons importer les meta de "
|
29 |
+
"ce plugin pour vous, %s"
|
30 |
|
31 |
+
msgid ""
|
32 |
+
"We have found that you’re using Yoast SEO plugin, WP Meta SEO can import the "
|
33 |
+
"meta from this plugin, %s"
|
34 |
+
msgstr ""
|
35 |
+
"Vous utilisez le plugin Yoast SEO, nous pouvons importer les meta de ce "
|
36 |
+
"plugin pour vous, %s"
|
37 |
|
38 |
msgid "Results preview"
|
39 |
msgstr "Prévisualisation"
|
40 |
|
41 |
+
msgid ""
|
42 |
+
"This is a preview of what your content will looks like in search engine "
|
43 |
+
"results: title, description and URL"
|
44 |
msgstr "Prévisualisation des résultats de recherche, titre, description et URL"
|
45 |
|
46 |
msgid "Search engine title"
|
47 |
msgstr "Titre"
|
48 |
|
49 |
+
msgid ""
|
50 |
+
"This is the title of your content that may be displayed in search engine "
|
51 |
+
"results (meta title). By default it’s the content title (page title, post "
|
52 |
+
"title…). 69 characters max allowed."
|
53 |
+
msgstr ""
|
54 |
+
"Ceci est le titre de votre contenu qui pourra être reprit par les moteurs de "
|
55 |
+
"recherche (meta title). Par défaut il s'agit du titre du contenu. 69 "
|
56 |
+
"caractères max"
|
57 |
|
58 |
msgid "Search engine description"
|
59 |
msgstr "Description"
|
60 |
|
61 |
+
msgid ""
|
62 |
+
"The description of your content that may be displayed in search engine "
|
63 |
+
"results aka meta description. By default search engine take an excerpt from "
|
64 |
+
"your content (depending on the search query). 156 characters max allowed."
|
65 |
+
msgstr ""
|
66 |
+
"Ceci est la description de votre contenu qui pourra être reprit par les "
|
67 |
+
"moteurs de recherche (meta description). Par défaut il s'agit d'un extrait "
|
68 |
+
"de votre contenu.156 caractères max"
|
69 |
|
70 |
msgid "Facebook Title"
|
71 |
msgstr "Titre facebook"
|
72 |
|
73 |
+
msgid ""
|
74 |
+
"Custom title to display when sharing this content on facebook, content title "
|
75 |
+
"override"
|
76 |
msgstr "Titre customisé lors du partage de ce contenu sur Facebook"
|
77 |
|
78 |
msgid "Facebook Description"
|
79 |
msgstr "Description Facebook"
|
80 |
|
81 |
+
msgid ""
|
82 |
+
"Custom description to display when sharing this content on facebook, content "
|
83 |
+
"description override"
|
84 |
msgstr "Description customisé lors du partage de ce contenu sur Facebook"
|
85 |
|
86 |
msgid "Facebook Image"
|
87 |
msgstr "Image Facebook"
|
88 |
|
89 |
+
msgid ""
|
90 |
+
"Custom image to display when sharing this content on facebook, content "
|
91 |
+
"description override, recommended size is 1200px x 630px"
|
92 |
+
msgstr ""
|
93 |
+
"Image customisé lors du partage de ce contenu sur Facebook, taille "
|
94 |
+
"recommandée 1200px x 630px"
|
95 |
|
96 |
msgid "Twitter Title"
|
97 |
msgstr "Titre Twitter"
|
98 |
|
99 |
+
msgid ""
|
100 |
+
"Custom title to display when sharing this content on twitter, content title "
|
101 |
+
"override"
|
102 |
msgstr "Titre customisé lors du partage de ce contenu sur Twitter"
|
103 |
|
104 |
msgid "Twitter Description"
|
105 |
msgstr "Description Twitter"
|
106 |
|
107 |
+
msgid ""
|
108 |
+
"Custom description to display when sharing this content on twitter, content "
|
109 |
+
"description override"
|
110 |
msgstr "Description customisé lors du partage de ce contenu sur Twitter"
|
111 |
|
112 |
msgid "Twitter Image"
|
113 |
msgstr "Image Twitter"
|
114 |
|
115 |
+
msgid ""
|
116 |
+
"Custom image to display when sharing this content on facebook, content "
|
117 |
+
"description override, recommended min size 440px X 220px"
|
118 |
+
msgstr ""
|
119 |
+
"Image customisé lors du partage de ce contenu sur Twitter, taille "
|
120 |
+
"recommandée 440px x 220px"
|
121 |
|
122 |
msgid "Use Image"
|
123 |
msgstr "Utiliser image"
|
200 |
msgid "Filter"
|
201 |
msgstr "Filtrer"
|
202 |
|
203 |
+
msgid ""
|
204 |
+
"We didn't find any image which needed to be updated regarding meta "
|
205 |
+
"information"
|
206 |
+
msgstr ""
|
207 |
+
"Nous n'avons trouvé aucune image qui ont besoin d'être optimisé pour le SEO"
|
208 |
|
209 |
msgid "This image has still not been inserted in any post!"
|
210 |
msgstr "Cette image n'a été ajouté dans aucun de vos contenus"
|
252 |
msgstr "Le contenu est vide, merci de revérifier"
|
253 |
|
254 |
msgid "We can't get traffic rank from Alexa for this website"
|
255 |
+
msgstr ""
|
256 |
+
"Nous n'avons pas assez d'info (de trafic) Alexa pour avoir le \"Traffic Rank"
|
257 |
+
"\""
|
258 |
|
259 |
msgid "Meta Title"
|
260 |
msgstr "Meta titre"
|
277 |
msgid "Preview"
|
278 |
msgstr "Prévisualiser"
|
279 |
|
280 |
+
msgid ""
|
281 |
+
"This is a preview of what this content might looks like in Google's search "
|
282 |
+
"results."
|
283 |
+
msgstr ""
|
284 |
+
"Prévisualisation de ce à quoi votre contenu peut ressembler dans les "
|
285 |
+
"résultats de recherche"
|
286 |
|
287 |
msgid "Snippet Preview %s"
|
288 |
msgstr "Prévisualisation %s"
|
314 |
msgid "Content meta"
|
315 |
msgstr "Contenu meta"
|
316 |
|
317 |
+
msgid "Image information"
|
318 |
+
msgstr "Image information"
|
319 |
|
320 |
msgid "Settings"
|
321 |
msgstr "Paramètres"
|
330 |
msgstr "Bien joué ! Image remise à la bonne taille !"
|
331 |
|
332 |
msgid "Oops! An error occured when updating the post, please try again"
|
333 |
+
msgstr ""
|
334 |
+
"Oups! Une erreur est survenue durant la mise à jour du post, merci de "
|
335 |
+
"réessayer"
|
336 |
|
337 |
msgid "Resize image"
|
338 |
msgstr "Redimensionner image"
|
391 |
msgid "Image name as image title"
|
392 |
msgstr "Nom image > titre d'image"
|
393 |
|
394 |
+
msgid ""
|
395 |
+
"Warning, you're about to replace existing image alt or tile content, are you "
|
396 |
+
"sire about that?"
|
397 |
+
msgstr ""
|
398 |
+
"Vous êtes sur le point de remplacer des attributs de vos images, vous êtes "
|
399 |
+
"sûr ?"
|
400 |
|
401 |
msgid "Twitter card type "
|
402 |
msgstr "Type Twitter card"
|
425 |
msgid "Other plugins from JoomUnited"
|
426 |
msgstr "Autres plugin de JoomUnited"
|
427 |
|
428 |
+
msgid ""
|
429 |
+
"Check if a word of this content title is also in a title heading (h1, h2...)"
|
430 |
+
msgstr ""
|
431 |
+
"Vérifie si un mot du titre de page est aussi présent dans un titre du "
|
432 |
+
"contenu (h1, h2...)"
|
433 |
|
434 |
msgid "Check if a word of this content title is also in the text"
|
435 |
+
msgstr ""
|
436 |
+
"Vérifie si un mot du titre de page est aussi présent dans le contenu texte"
|
437 |
|
438 |
msgid "Does the page title match with the permalink (URL structure)"
|
439 |
msgstr "Vérifie si le titre de page correspond à l'URL (permalien)"
|
444 |
msgid "Is the meta description of this page filled?"
|
445 |
msgstr "Est-ce que les meta description sont complétés?"
|
446 |
|
447 |
+
msgid ""
|
448 |
+
"Check for image HTML resizing in content (usually image resized using "
|
449 |
+
"handles)"
|
450 |
+
msgstr ""
|
451 |
+
"Vérifie si des images sont redimensionnées en HTML (habituellement en "
|
452 |
+
"utilisant les poignées)"
|
453 |
|
454 |
msgid "Check for image Alt text and title"
|
455 |
msgstr "Vérifie si les textes alt and titre d'images sont remplis"
|
456 |
|
457 |
+
msgid ""
|
458 |
+
"It's better using a permalink structure that is adding in your URL the "
|
459 |
+
"category name and content title. This parameter can be changed in Settings > "
|
460 |
+
"Permalinks WordPress menu. Tag recommended is %category%/%postname%"
|
461 |
+
msgstr ""
|
462 |
+
"Il est préférable d'utiliser des URL dont le nom de la catégorie et le titre "
|
463 |
+
"de page sont en clair. Ce paramètre peut être modifié depuis le menu "
|
464 |
+
"Paramètres > Permaliens. Le tag recommandé est %category%/%postname%"
|
465 |
|
466 |
+
msgid ""
|
467 |
+
"Meta titles are displayed in search engine results as a page title. It's a "
|
468 |
+
"good thing for SEO to have some custom and attractive ones. Be sure to fill "
|
469 |
+
"at least the met information on your most popular pages"
|
470 |
+
msgstr ""
|
471 |
+
"Les titres Meta sont affichés dans les résultats de recherche comme titre de "
|
472 |
+
"page. C'est une bonne chose de mettre des titres accrocheurs pour avoir un "
|
473 |
+
"plus grand nombre de clics."
|
474 |
|
475 |
+
msgid ""
|
476 |
+
"Meta descriptions are displayed in search engine results as a page "
|
477 |
+
"description. It's a good thing for SEO to have some custom and attractive "
|
478 |
+
"ones. Be sure to fill at least the meta information on your most popular "
|
479 |
+
"pages."
|
480 |
+
msgstr ""
|
481 |
+
"Les Meta descroption sont affichés dans les résultats de recherche comme "
|
482 |
+
"description de page. C'est une bonne chose de mettre des descriptions "
|
483 |
+
"accrocheuses pour avoir un plus grand nombre de clics."
|
484 |
|
485 |
+
msgid ""
|
486 |
+
"Display image at its natural size, do not use HTML resize. It happens "
|
487 |
+
"usually when you use handles to resize an image. You have a bulk edition "
|
488 |
+
"tool to fix that."
|
489 |
+
msgstr ""
|
490 |
+
"Utilisez des images à leur taille naturelle, pas en les redimensionnant en "
|
491 |
+
"HTML (avec les poignées). Avec WP Meta SEO, vous disposez d'un outil pour "
|
492 |
+
"corriger cela"
|
493 |
|
494 |
msgid ""
|
495 |
+
"We recommend to use both alt text and image title. The main advantage is "
|
496 |
+
"that it helps search engines discover your images and display them in image "
|
497 |
+
"search results. Plus, these tags improve the accessibility of your site and "
|
498 |
+
"give more information about your images. Use our bulk image tool to quickly "
|
499 |
+
"check and fix that."
|
500 |
msgstr ""
|
501 |
+
"Nous vous recommandons de compléter les le textes alternatif et les titres "
|
502 |
+
"d'images. L'avantage c'est que cela permet aux moteur de recherche d'indexer "
|
503 |
+
"vos images et apporte plus de contenu à vos pages. utilisez l'outil "
|
504 |
+
"d'édition par lot pour aller plus vite! "
|
505 |
|
506 |
+
msgid ""
|
507 |
+
"It is highly recommended to update or add new content on your website quite "
|
508 |
+
"frequently. At least 3 updated or new content per month would be great :)"
|
509 |
+
msgstr ""
|
510 |
+
"Il est fortement recommandé de mettre à jour ou d'ajouter du contenu sur "
|
511 |
+
"votre site pour être mieux référencé. Au moins 3 mises à jour ou ajout de "
|
512 |
+
"contenu par mois serait parfait :)"
|
513 |
|
514 |
msgid "Social networks meta"
|
515 |
msgstr "Meta réseaux sociaux"
|
550 |
msgid "The default card type to use"
|
551 |
msgstr "Type de Twitter card"
|
552 |
|
553 |
+
msgid ""
|
554 |
+
"Be careful you installed 2 extensions doing almost the same thing, please "
|
555 |
+
"deactivate AIOSEO or Yoast in order to work more clearly!"
|
556 |
+
msgstr ""
|
557 |
+
"Attention plusieurs plugins sont susceptibles d'effectuer les même tâches, "
|
558 |
+
"essayez de désactiver AIO SEO ou Yoast SEO"
|
559 |
|
560 |
+
msgid ""
|
561 |
+
"We have found that you’re using All In One Pack Plugin, WP Meta SEO can "
|
562 |
+
"import the meta from this plugin, %s"
|
563 |
+
msgstr ""
|
564 |
+
"Vous utilisez actuellement All In One SEO Plugin, WP Meta SEO put importer "
|
565 |
+
"les données de ce plugin pour vous, %s"
|
566 |
|
567 |
msgid "Name is existing"
|
568 |
msgstr "Ce nom existe déjà"
|
569 |
|
570 |
msgid "We found 0 image which needed to add or change meta information"
|
571 |
+
msgstr ""
|
572 |
+
"Nous n'avons pas trouvé d'images qui nécessite l'ajout ou l'édition des meta"
|
573 |
|
574 |
msgid "The post is not existed, please choose one another!"
|
575 |
msgstr "Ce post n'existe pas, merci d'un sélectionner un autre"
|
586 |
msgid "The post has been deleted before, please check again!"
|
587 |
msgstr "Ce contenu a été supprimé, merci de recharger la page"
|
588 |
|
589 |
+
msgid ""
|
590 |
+
" This is a rendering of what this post might look like in Google's search "
|
591 |
+
"results."
|
592 |
msgstr "Prévisualisation des résultats de recherche Google"
|
593 |
|
594 |
msgid "This post is not existed or deleted, please choose one another!"
|
615 |
msgid "Force SEO validation"
|
616 |
msgstr "Forcer validation SEO"
|
617 |
|
618 |
+
msgid ""
|
619 |
+
"Allow user to force on page SEO criteria validation by clicking on the icon"
|
620 |
+
msgstr ""
|
621 |
+
"Autoriser la validation forcée des critères SEO dans l'analyse des pages"
|
622 |
|
623 |
msgid "Meta keywords"
|
624 |
msgstr "Mot clés"
|
635 |
msgid "Link titles"
|
636 |
msgstr "Titres lien"
|
637 |
|
638 |
+
msgid ""
|
639 |
+
"The link title attribute does not have any SEO value for links. BUT links "
|
640 |
+
"titles can influence click behavior for users, which may indirectly affect "
|
641 |
+
"your SEO performance"
|
642 |
+
msgstr ""
|
643 |
+
"Les titres des liens n'ont pas d'impact direct sur le SEO MAIS cela peut "
|
644 |
+
"influencer le comportement des utilisateurs en les incitant a cliquer dessus"
|
645 |
|
646 |
msgid "Links title completed"
|
647 |
msgstr "Titre de lien ajouté"
|
664 |
msgid "Link text"
|
665 |
msgstr "Text lien"
|
666 |
|
667 |
+
msgid "Link editor"
|
668 |
+
msgstr "Link editor"
|
669 |
|
670 |
msgid "Meta title as page title"
|
671 |
msgstr "Meta titre vers titre page"
|
672 |
|
673 |
+
msgid ""
|
674 |
+
"When meta title is filled use it as page title instead of the content title"
|
675 |
+
msgstr ""
|
676 |
+
"Lorsque le meta titre est rempli, l'utiliser plutôt que le titre du contenu"
|
677 |
|
678 |
+
msgid ""
|
679 |
+
"It’s better using a permalink structure that is adding in your URL the "
|
680 |
+
"category name and content title. This parameter can be changed in Settings > "
|
681 |
+
"Permalinks WordPress menu. Tag recommended is %category%/%postname%"
|
682 |
+
msgstr ""
|
683 |
+
"Il est conseillé d'utiliser une structure d'URL qui inclus le nom de la "
|
684 |
+
"catégorie et le titre du contenu. Ce paramètre peut être changé dans "
|
685 |
+
"Paramètres > Permaliens. Le tag recommandé est %category%/%postname%"
|
686 |
|
687 |
+
msgid ""
|
688 |
+
"Meta descriptions are displayed in search engine results as a page "
|
689 |
+
"description. It’s a good thing for SEO to have some custom and attractive "
|
690 |
+
"ones. Be sure to fill at least the meta information on your most popular "
|
691 |
+
"pages."
|
692 |
+
msgstr ""
|
693 |
+
"Les meta descriptions sont affichées dans les résultats de recherche si ils "
|
694 |
+
"sont jugés pertinents. Il est bon pour avoir un taux de clics élevé d'en "
|
695 |
+
"rédiger des attractifs. Assurez vous de les compléter au moins pour vos "
|
696 |
+
"principales pages."
|
697 |
|
698 |
+
msgid ""
|
699 |
+
"Meta titles are displayed in search engine results as a page title. It’s a "
|
700 |
+
"good thing for SEO to have some custom and attractive ones. Be sure to fill "
|
701 |
+
"at least the met information on your most popular pages"
|
702 |
+
msgstr ""
|
703 |
+
"Les meta titres sont affichées dans les résultats de recherche. Il est bon "
|
704 |
+
"pour avoir un taux de clics élevé d'en rédiger des attractifs. Assurez vous "
|
705 |
+
"de les compléter au moins pour vos principales pages."
|
706 |
|
707 |
+
msgid ""
|
708 |
+
"A website with a bunch of 404 errors doesn’t provide a good user experience, "
|
709 |
+
"which is significantly important in content marketing and SEO. We recommend "
|
710 |
+
"to use our internal broken link checker and redirect tool to fix all the 404 "
|
711 |
+
"error you can periodically."
|
712 |
+
msgstr ""
|
713 |
+
"Un site web qui contient beaucoup d'erreur 404 donne une mauvaise expérience "
|
714 |
+
"d'utilisation, ce qui est très dommageable pour le marketing et le SEO. Nous "
|
715 |
+
"vous recommandons de corriger le maximum d'erreur en faisant des "
|
716 |
+
"redirections pertinentes."
|
717 |
|
718 |
msgid "Index internal broken links"
|
719 |
msgstr "Indexer les liens brisés"
|
726 |
|
727 |
msgid "Status"
|
728 |
msgstr "Status"
|
729 |
+
|
730 |
+
msgid ""
|
731 |
+
"Allow search engines robots to index this content, as default your content "
|
732 |
+
"is indexed"
|
733 |
+
msgstr "Autoriser les moteurs de recherche à indexer ce contenu"
|
734 |
+
|
735 |
+
msgid ""
|
736 |
+
"Provides show or do not show this page in search results in search results."
|
737 |
+
msgstr "Afficher ou pas cette page dans les résultats des moteurs de recherche"
|
738 |
+
|
739 |
+
msgid "Index"
|
740 |
+
msgstr "Index"
|
741 |
+
|
742 |
+
msgid "Follow"
|
743 |
+
msgstr "Follow"
|
744 |
+
|
745 |
+
msgid "Re-index content links"
|
746 |
+
msgstr "Re-indexer liens"
|
747 |
+
|
748 |
+
msgid "Apply"
|
749 |
+
msgstr "Appliquer"
|
750 |
+
|
751 |
+
msgid "-- Selection --"
|
752 |
+
msgstr "-- Selection --"
|
753 |
+
|
754 |
+
msgid "Follow selected"
|
755 |
+
msgstr "Follow sélection"
|
756 |
+
|
757 |
+
msgid "Nofollow selected"
|
758 |
+
msgstr "Nofollow sélection"
|
759 |
+
|
760 |
+
msgid "Follow all"
|
761 |
+
msgstr "Follow tous"
|
762 |
+
|
763 |
+
msgid "Nofollow all"
|
764 |
+
msgstr "Nofollow tous"
|
765 |
+
|
766 |
+
msgid "Link source"
|
767 |
+
msgstr "Source lien"
|
768 |
+
|
769 |
+
msgid "Internal"
|
770 |
+
msgstr "Interne"
|
771 |
+
|
772 |
+
msgid "External"
|
773 |
+
msgstr "Externe"
|
774 |
+
|
775 |
+
msgid "Post/Page follow"
|
776 |
+
msgstr "Article/Page follow"
|
777 |
+
|
778 |
+
msgid "Post/Page index"
|
779 |
+
msgstr "Article/Page index"
|
780 |
+
|
781 |
+
msgid "Use ImageRecycle image compression plugin to activate this feature"
|
782 |
+
msgstr ""
|
783 |
+
"Activation : l'installation du plugin de compression d'image ImageRecycle "
|
784 |
+
"est nécessaire"
|
785 |
+
|
786 |
+
msgid ""
|
787 |
+
"Images represent around 60% of a web page weight. An image compression "
|
788 |
+
"reduce the image size by up to 70% while preserving the same visual quality. "
|
789 |
+
"Small loading time is great for SEO!"
|
790 |
+
msgstr ""
|
791 |
+
"Les images représentent en moyenne 60% du poids d'une page web. Une "
|
792 |
+
"compression sans perte de qualité réduit de manière importante le poids de "
|
793 |
+
"votre page, parfait pour le référencement !"
|
languages/wp-meta-seo.pot
CHANGED
@@ -265,7 +265,7 @@ msgstr ""
|
|
265 |
msgid "Content meta"
|
266 |
msgstr ""
|
267 |
|
268 |
-
msgid "Image
|
269 |
msgstr ""
|
270 |
|
271 |
msgid "Settings"
|
@@ -544,7 +544,7 @@ msgstr ""
|
|
544 |
msgid "Link text"
|
545 |
msgstr ""
|
546 |
|
547 |
-
msgid "Link
|
548 |
msgstr ""
|
549 |
|
550 |
msgid "Meta title as page title"
|
@@ -575,4 +575,58 @@ msgid "Hits number"
|
|
575 |
msgstr ""
|
576 |
|
577 |
msgid "Status"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
578 |
msgstr ""
|
265 |
msgid "Content meta"
|
266 |
msgstr ""
|
267 |
|
268 |
+
msgid "Image information"
|
269 |
msgstr ""
|
270 |
|
271 |
msgid "Settings"
|
544 |
msgid "Link text"
|
545 |
msgstr ""
|
546 |
|
547 |
+
msgid "Link editor"
|
548 |
msgstr ""
|
549 |
|
550 |
msgid "Meta title as page title"
|
575 |
msgstr ""
|
576 |
|
577 |
msgid "Status"
|
578 |
+
msgstr ""
|
579 |
+
|
580 |
+
msgid "Allow search engines robots to index this content, as default your content is indexed"
|
581 |
+
msgstr ""
|
582 |
+
|
583 |
+
msgid "Provides show or do not show this page in search results in search results."
|
584 |
+
msgstr ""
|
585 |
+
|
586 |
+
msgid "Index"
|
587 |
+
msgstr ""
|
588 |
+
|
589 |
+
msgid "Follow"
|
590 |
+
msgstr ""
|
591 |
+
|
592 |
+
msgid "Re-index content links"
|
593 |
+
msgstr ""
|
594 |
+
|
595 |
+
msgid "Apply"
|
596 |
+
msgstr ""
|
597 |
+
|
598 |
+
msgid "-- Selection --"
|
599 |
+
msgstr ""
|
600 |
+
|
601 |
+
msgid "Follow selected"
|
602 |
+
msgstr ""
|
603 |
+
|
604 |
+
msgid "Nofollow selected"
|
605 |
+
msgstr ""
|
606 |
+
|
607 |
+
msgid "Follow all"
|
608 |
+
msgstr ""
|
609 |
+
|
610 |
+
msgid "Nofollow all"
|
611 |
+
msgstr ""
|
612 |
+
|
613 |
+
msgid "Link source"
|
614 |
+
msgstr ""
|
615 |
+
|
616 |
+
msgid "Internal"
|
617 |
+
msgstr ""
|
618 |
+
|
619 |
+
msgid "External"
|
620 |
+
msgstr ""
|
621 |
+
|
622 |
+
msgid "Post/Page follow"
|
623 |
+
msgstr ""
|
624 |
+
|
625 |
+
msgid "Post/Page index"
|
626 |
+
msgstr ""
|
627 |
+
|
628 |
+
msgid "Use ImageRecycle image compression plugin to activate this feature"
|
629 |
+
msgstr ""
|
630 |
+
|
631 |
+
msgid "Images represent around 60% of a web page weight. An image compression reduce the image size by up to 70% while preserving the same visual quality. Small loading time is great for SEO!"
|
632 |
msgstr ""
|
readme.txt
CHANGED
@@ -2,8 +2,8 @@
|
|
2 |
Contributors: JoomUnited
|
3 |
Tags: google, webmaster tools, keywords, meta, meta description, meta keywords, meta title, robots meta, search engine optimization, seo, wordpress seo, yahoo, image optimization, image resize, custom post seo, redirect, redirection, 301, broken link
|
4 |
Requires at least: 4.0
|
5 |
-
Tested up to: 4.5.
|
6 |
-
Stable tag: 2.
|
7 |
License: GPLv2 or later
|
8 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
9 |
|
@@ -112,6 +112,8 @@ The redirect manager will help you to fix all types of 404 errors you can encoun
|
|
112 |
* Check for SEO error: is robot.txt blocking search engine
|
113 |
* Bulk edit SEO link title in your content
|
114 |
* Add SEO link title box in editor link manager
|
|
|
|
|
115 |
* Page title display as content title or SEO meta title
|
116 |
|
117 |
= Main plugins from JoomUnited: =
|
@@ -203,6 +205,12 @@ This manual SEO validation on click on the reload analysis button.
|
|
203 |
|
204 |
== Changelog ==
|
205 |
|
|
|
|
|
|
|
|
|
|
|
|
|
206 |
= 2.1.0 =
|
207 |
* Add ImageRecycle images and PDF compression integration (www.imagerecycle.com)
|
208 |
|
2 |
Contributors: JoomUnited
|
3 |
Tags: google, webmaster tools, keywords, meta, meta description, meta keywords, meta title, robots meta, search engine optimization, seo, wordpress seo, yahoo, image optimization, image resize, custom post seo, redirect, redirection, 301, broken link
|
4 |
Requires at least: 4.0
|
5 |
+
Tested up to: 4.5.1
|
6 |
+
Stable tag: 2.2.0
|
7 |
License: GPLv2 or later
|
8 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
9 |
|
112 |
* Check for SEO error: is robot.txt blocking search engine
|
113 |
* Bulk edit SEO link title in your content
|
114 |
* Add SEO link title box in editor link manager
|
115 |
+
* Follow/Nofollow bulk link edition
|
116 |
+
* Follow/Nofollow on Wordpress content
|
117 |
* Page title display as content title or SEO meta title
|
118 |
|
119 |
= Main plugins from JoomUnited: =
|
205 |
|
206 |
== Changelog ==
|
207 |
|
208 |
+
= 2.2.0 =
|
209 |
+
* Follow/Nofollow bulk link edition
|
210 |
+
* Link re-index tool from the bulk link editor
|
211 |
+
* Follow/Nofollow on Wordpress content (onpage SEO)
|
212 |
+
* Index/Noindex on Wordpress content (onpage SEO)
|
213 |
+
|
214 |
= 2.1.0 =
|
215 |
* Add ImageRecycle images and PDF compression integration (www.imagerecycle.com)
|
216 |
|
wp-meta-seo.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
* Plugin Name: WP Meta SEO
|
5 |
* Plugin URI: http://www.joomunited.com/wordpress-products/wp-meta-seo
|
6 |
* Description: WP Meta SEO is a plugin for WordPress to fill meta for content, images and main SEO info in a single view.
|
7 |
-
* Version: 2.
|
8 |
* Text Domain: wp-meta-seo
|
9 |
* Domain Path: /languages
|
10 |
* Author: JoomUnited
|
@@ -47,7 +47,7 @@ if (!defined('URL'))
|
|
47 |
define('URL', get_site_url());
|
48 |
|
49 |
if (!defined('WPMSEO_VERSION')) {
|
50 |
-
define('WPMSEO_VERSION', '2.0
|
51 |
}
|
52 |
|
53 |
if (!defined('WPMSEO_FILE'))
|
@@ -107,6 +107,8 @@ if (is_admin()) {
|
|
107 |
}else{
|
108 |
$meta_keywords_esc = '';
|
109 |
}
|
|
|
|
|
110 |
|
111 |
// get meta description
|
112 |
$meta_description = get_post_meta($wp_query->post->ID, '_metaseo_metadesc', true);
|
@@ -148,14 +150,14 @@ if (is_admin()) {
|
|
148 |
$meta_twitter_site = get_user_meta($wp_query->post->post_author,'mtwitter',true);
|
149 |
$facebook_admin = get_user_meta($wp_query->post->post_author,'mfacebook',true);
|
150 |
|
151 |
-
$
|
152 |
-
if($
|
153 |
-
if($meta_twitter_site == '' && $
|
154 |
-
$meta_twitter_site = $
|
155 |
}
|
156 |
|
157 |
-
if($facebook_admin == '' && $
|
158 |
-
$facebook_admin = $
|
159 |
}
|
160 |
}
|
161 |
|
@@ -188,9 +190,13 @@ if (is_admin()) {
|
|
188 |
if($settings['metaseo_desc_home'] == ''){
|
189 |
$meta_description_esc = $meta_twitter_desc = $meta_facebook_desc = esc_attr(get_bloginfo('description'));
|
190 |
}
|
|
|
|
|
191 |
}elseif($mshow_on_front == 'page'){ // is page posts
|
192 |
$meta_title = $meta_title_esc = $meta_twitter_title = $meta_facebook_title = esc_attr(get_post_meta($mpage_for_posts, '_metaseo_metatitle', true));
|
193 |
$meta_description = $meta_description_esc = $meta_twitter_desc = $meta_facebook_desc = esc_attr(get_post_meta($mpage_for_posts, '_metaseo_metadesc', true));
|
|
|
|
|
194 |
}
|
195 |
}
|
196 |
|
@@ -198,14 +204,20 @@ if (is_admin()) {
|
|
198 |
if(is_front_page()){
|
199 |
$meta_title = $meta_title_esc = $meta_twitter_title = $meta_facebook_title = esc_attr(get_post_meta($mpage_on_front, '_metaseo_metatitle', true));
|
200 |
$meta_description = $meta_description_esc = $meta_twitter_desc = $meta_facebook_desc = esc_attr(get_post_meta($mpage_on_front, '_metaseo_metadesc', true));
|
|
|
|
|
201 |
}
|
202 |
|
203 |
if ( is_category() || is_tag() || is_tax() ) {
|
204 |
$term = $wp_query->get_queried_object();
|
205 |
$meta_title = $meta_title_esc = $meta_facebook_title = $meta_twitter_title = esc_attr($term->name);
|
206 |
$meta_description_esc = $meta_facebook_desc = $meta_twitter_desc = esc_attr($term->description);
|
|
|
207 |
}
|
208 |
-
|
|
|
|
|
|
|
209 |
$patterns = array(
|
210 |
'twitter_image' => array(
|
211 |
'#<meta name="twitter:image" [^<>]+ ?>#i',
|
@@ -268,9 +280,19 @@ if (is_admin()) {
|
|
268 |
'title' => array(
|
269 |
'#<meta name="title" [^<>]+ ?>#i',
|
270 |
'<meta name="title" content="' . $meta_title_esc . '" />',
|
271 |
-
($meta_title_esc != '' ? true : false))
|
272 |
);
|
273 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
274 |
if(get_post_meta($wp_query->post->ID, '_metaseo_metatitle', true) != ''){
|
275 |
$patterns['title'] = array(
|
276 |
'#<meta name="title" [^<>]+ ?>#i',
|
4 |
* Plugin Name: WP Meta SEO
|
5 |
* Plugin URI: http://www.joomunited.com/wordpress-products/wp-meta-seo
|
6 |
* Description: WP Meta SEO is a plugin for WordPress to fill meta for content, images and main SEO info in a single view.
|
7 |
+
* Version: 2.2.0
|
8 |
* Text Domain: wp-meta-seo
|
9 |
* Domain Path: /languages
|
10 |
* Author: JoomUnited
|
47 |
define('URL', get_site_url());
|
48 |
|
49 |
if (!defined('WPMSEO_VERSION')) {
|
50 |
+
define('WPMSEO_VERSION', '2.2.0');
|
51 |
}
|
52 |
|
53 |
if (!defined('WPMSEO_FILE'))
|
107 |
}else{
|
108 |
$meta_keywords_esc = '';
|
109 |
}
|
110 |
+
$page_follow = get_post_meta($wp_query->post->ID,'_metaseo_metafollow',true);
|
111 |
+
$page_index = get_post_meta($wp_query->post->ID,'_metaseo_metaindex',true);
|
112 |
|
113 |
// get meta description
|
114 |
$meta_description = get_post_meta($wp_query->post->ID, '_metaseo_metadesc', true);
|
150 |
$meta_twitter_site = get_user_meta($wp_query->post->post_author,'mtwitter',true);
|
151 |
$facebook_admin = get_user_meta($wp_query->post->post_author,'mfacebook',true);
|
152 |
|
153 |
+
$settings = get_option( '_metaseo_settings' );
|
154 |
+
if($settings){
|
155 |
+
if($meta_twitter_site == '' && $settings['metaseo_showtwitter'] != ''){
|
156 |
+
$meta_twitter_site = $settings['metaseo_showtwitter'];
|
157 |
}
|
158 |
|
159 |
+
if($facebook_admin == '' && $settings['metaseo_showfacebook'] != ''){
|
160 |
+
$facebook_admin = $settings['metaseo_showfacebook'];
|
161 |
}
|
162 |
}
|
163 |
|
190 |
if($settings['metaseo_desc_home'] == ''){
|
191 |
$meta_description_esc = $meta_twitter_desc = $meta_facebook_desc = esc_attr(get_bloginfo('description'));
|
192 |
}
|
193 |
+
$page_follow = 'follow';
|
194 |
+
$page_index = 'index';
|
195 |
}elseif($mshow_on_front == 'page'){ // is page posts
|
196 |
$meta_title = $meta_title_esc = $meta_twitter_title = $meta_facebook_title = esc_attr(get_post_meta($mpage_for_posts, '_metaseo_metatitle', true));
|
197 |
$meta_description = $meta_description_esc = $meta_twitter_desc = $meta_facebook_desc = esc_attr(get_post_meta($mpage_for_posts, '_metaseo_metadesc', true));
|
198 |
+
$page_follow = get_post_meta($mpage_for_posts,'_metaseo_metafollow',true);
|
199 |
+
$page_index = get_post_meta($mpage_for_posts,'_metaseo_metaindex',true);
|
200 |
}
|
201 |
}
|
202 |
|
204 |
if(is_front_page()){
|
205 |
$meta_title = $meta_title_esc = $meta_twitter_title = $meta_facebook_title = esc_attr(get_post_meta($mpage_on_front, '_metaseo_metatitle', true));
|
206 |
$meta_description = $meta_description_esc = $meta_twitter_desc = $meta_facebook_desc = esc_attr(get_post_meta($mpage_on_front, '_metaseo_metadesc', true));
|
207 |
+
$page_follow = get_post_meta($mpage_on_front,'_metaseo_metafollow',true);
|
208 |
+
$page_index = get_post_meta($mpage_on_front,'_metaseo_metaindex',true);
|
209 |
}
|
210 |
|
211 |
if ( is_category() || is_tag() || is_tax() ) {
|
212 |
$term = $wp_query->get_queried_object();
|
213 |
$meta_title = $meta_title_esc = $meta_facebook_title = $meta_twitter_title = esc_attr($term->name);
|
214 |
$meta_description_esc = $meta_facebook_desc = $meta_twitter_desc = esc_attr($term->description);
|
215 |
+
$page_follow = 'follow';
|
216 |
}
|
217 |
+
|
218 |
+
$current_url = 'http' . (isset($_SERVER['HTTPS']) && !empty($_SERVER['HTTPS']) ? 's' : '') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
|
219 |
+
$current_url = esc_url($current_url);
|
220 |
+
|
221 |
$patterns = array(
|
222 |
'twitter_image' => array(
|
223 |
'#<meta name="twitter:image" [^<>]+ ?>#i',
|
280 |
'title' => array(
|
281 |
'#<meta name="title" [^<>]+ ?>#i',
|
282 |
'<meta name="title" content="' . $meta_title_esc . '" />',
|
283 |
+
($meta_title_esc != '' ? true : false))
|
284 |
);
|
285 |
|
286 |
+
if(empty($page_index)) $page_index = 'index';
|
287 |
+
if(empty($page_follow)) $page_follow = 'follow';
|
288 |
+
|
289 |
+
if(!empty($settings['metaseo_follow'])){
|
290 |
+
$patterns['follow'] = array(
|
291 |
+
'#<meta name="robots" [^<>]+ ?>#i',
|
292 |
+
'<meta name="robots" content="'.$page_index.','.$page_follow.'" />'
|
293 |
+
);
|
294 |
+
}
|
295 |
+
|
296 |
if(get_post_meta($wp_query->post->ID, '_metaseo_metatitle', true) != ''){
|
297 |
$patterns['title'] = array(
|
298 |
'#<meta name="title" [^<>]+ ?>#i',
|