Version Description
Download this release
Release Info
Developer | freediver |
Plugin | SEO Smart Links |
Version | 1.8.0 |
Comparing to | |
See all releases |
Code changes from version 1.7.5 to 1.8.0
- readme.txt +5 -19
- seo-links.php +40 -14
readme.txt
CHANGED
@@ -13,14 +13,15 @@ SEO Smart Links can automatically link keywords and phrases in your posts and co
|
|
13 |
|
14 |
SEO Smart Links can automatically link keywords and phrases in your posts and comments with corresponding posts, pages, categories and tags on your blog.
|
15 |
|
16 |
-
Further SEO Smart links allows you to set up your own keywords and set of matching URLs.
|
17 |
-
|
18 |
-
Finally SEO Smart links allows you to set nofollow attribute and open links in new window.
|
19 |
|
20 |
Everything happens completely transparent, and you can edit the options from the administration settings panel.
|
21 |
|
|
|
22 |
|
23 |
-
|
|
|
|
|
24 |
|
25 |
v1.7.1
|
26 |
- More performance optimizations
|
@@ -29,21 +30,6 @@ v1.7.1
|
|
29 |
v1.7
|
30 |
- Performance optimization of the plugin. SEO Smart Links causes much lesser strain on the server.
|
31 |
|
32 |
-
v1.6.4
|
33 |
-
- Fix in semantics
|
34 |
-
|
35 |
-
v1.6.3
|
36 |
-
- Fixed issue with too short titles (now titles shorter then 4 characters are ignored)
|
37 |
-
- Targets are sorted by length and longer titles are linked to first
|
38 |
-
|
39 |
-
v1.6.2
|
40 |
-
- Fixed small issue with database leading to compability issues with some WP isntallations
|
41 |
-
|
42 |
-
v1.6
|
43 |
-
- Added option to process only single posts and pages
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
Plugin by Vladimir Prelovac. Need help with <a href="http://www.prelovac.com/vladimir/services">WordPress SEO</a>?
|
48 |
|
49 |
== Credits ==
|
13 |
|
14 |
SEO Smart Links can automatically link keywords and phrases in your posts and comments with corresponding posts, pages, categories and tags on your blog.
|
15 |
|
16 |
+
Further SEO Smart links allows you to set up your own keywords and set of matching URLs. Finally SEO Smart links allows you to set nofollow attribute and open links in new window.
|
|
|
|
|
17 |
|
18 |
Everything happens completely transparent, and you can edit the options from the administration settings panel.
|
19 |
|
20 |
+
Change log:
|
21 |
|
22 |
+
v1.8.0
|
23 |
+
- Added support for non-english characters (Unicode)
|
24 |
+
- Added support for keyword synonyms (in keywords section of the settings screen)
|
25 |
|
26 |
v1.7.1
|
27 |
- More performance optimizations
|
30 |
v1.7
|
31 |
- Performance optimization of the plugin. SEO Smart Links causes much lesser strain on the server.
|
32 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
Plugin by Vladimir Prelovac. Need help with <a href="http://www.prelovac.com/vladimir/services">WordPress SEO</a>?
|
34 |
|
35 |
== Credits ==
|
seo-links.php
CHANGED
@@ -2,16 +2,14 @@
|
|
2 |
|
3 |
/*
|
4 |
Plugin Name: SEO Smart Links
|
5 |
-
Version: 1.
|
6 |
Plugin URI: http://www.prelovac.com/vladimir/wordpress-plugins/seo-smart-links
|
7 |
Author: Vladimir Prelovac
|
8 |
Author URI: http://www.prelovac.com/vladimir
|
9 |
-
Description: SEO Smart Links provides
|
10 |
-
|
11 |
*/
|
12 |
|
13 |
|
14 |
-
|
15 |
// Avoid name collisions.
|
16 |
if ( !class_exists('SEOLinks') ) :
|
17 |
|
@@ -49,6 +47,8 @@ function SEOLinks_process_text($text, $mode)
|
|
49 |
$options = $this->get_options();
|
50 |
|
51 |
$links=0;
|
|
|
|
|
52 |
|
53 |
|
54 |
|
@@ -86,10 +86,28 @@ function SEOLinks_process_text($text, $mode)
|
|
86 |
{
|
87 |
|
88 |
$kw_array = array();
|
|
|
|
|
89 |
foreach (explode("\n", $options['customkey']) as $line) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
90 |
list($keyword, $url) = array_map('trim', explode(",", $line, 2));
|
91 |
if (!empty($keyword)) $kw_array[$keyword] = $url;
|
92 |
-
}
|
93 |
|
94 |
foreach ($kw_array as $name=>$url)
|
95 |
{
|
@@ -97,9 +115,10 @@ function SEOLinks_process_text($text, $mode)
|
|
97 |
if (!$maxlinks || ($links < $maxlinks) && !in_array( strtolower($name), $arrignore) && strstr($text, $name))
|
98 |
{
|
99 |
$name= preg_quote($name, '/');
|
100 |
-
$regexp="/(?!(?:[^<]+>|[^>]+<\/a>))\b($name)\b/imsU";
|
101 |
-
$replace="<a title=\"$1\" href=\"$url\">$1</a>";
|
102 |
|
|
|
|
|
|
|
103 |
$newtext = preg_replace($regexp, $replace, $text, $maxsingle);
|
104 |
if ($newtext!=$text) {
|
105 |
$links++;
|
@@ -130,7 +149,9 @@ function SEOLinks_process_text($text, $mode)
|
|
130 |
(!$maxlinks || ($links < $maxlinks)) && (!in_array( strtolower($postitem->post_title), $arrignore)) && strstr($text, $postitem->post_title) )
|
131 |
{
|
132 |
$name = preg_quote($postitem->post_title, '/');
|
133 |
-
|
|
|
|
|
134 |
$replace='<a title="$1" href="$$$url$$$">$1</a>';
|
135 |
|
136 |
$newtext = preg_replace($regexp, $replace, $text, $maxsingle);
|
@@ -159,7 +180,7 @@ function SEOLinks_process_text($text, $mode)
|
|
159 |
if ((!$maxlinks || ($links < $maxlinks)) && !in_array( strtolower($cat->name), $arrignore) && strstr($text, $cat->name) )
|
160 |
{
|
161 |
$name= preg_quote($cat->name, '/');
|
162 |
-
$regexp="/(?!(?:[^<]+>|[^>]+<\/a>))
|
163 |
$replace='<a title="$1" href="$$$url$$$">$1</a>';
|
164 |
|
165 |
$newtext = preg_replace($regexp, $replace, $text, $maxsingle);
|
@@ -190,7 +211,7 @@ function SEOLinks_process_text($text, $mode)
|
|
190 |
if ((!$maxlinks || ($links < $maxlinks)) && !in_array( strtolower($name), $arrignore) && strstr($text, $tag->name))
|
191 |
{
|
192 |
$name = preg_quote($tag->name, '/');
|
193 |
-
$regexp="/(?!(?:[^<]+>|[^>]+<\/a>))
|
194 |
$replace='<a title="$1" href="$$$url$$$">$1</a>';
|
195 |
|
196 |
$newtext = preg_replace($regexp, $replace, $text, $maxsingle);
|
@@ -305,6 +326,7 @@ function SEOLinks_comment_text_filter($text) {
|
|
305 |
$options = $this->get_options();
|
306 |
if ( isset($_POST['submitted']) ) {
|
307 |
|
|
|
308 |
|
309 |
$options['post']=$_POST['post'];
|
310 |
$options['postself']=$_POST['postself'];
|
@@ -355,6 +377,9 @@ function SEOLinks_comment_text_filter($text) {
|
|
355 |
$blanko=$options['blanko']=='on'?'checked':'';
|
356 |
$onlysingle=$options['onlysingle']=='on'?'checked':'';
|
357 |
|
|
|
|
|
|
|
358 |
|
359 |
$imgpath=trailingslashit(get_option('siteurl')). 'wp-content/plugins/seo-automatic-links/i';
|
360 |
echo <<<END
|
@@ -384,6 +409,7 @@ function SEOLinks_comment_text_filter($text) {
|
|
384 |
|
385 |
<div class="dbx-content">
|
386 |
<form name="SEOLinks" action="$action_url" method="post">
|
|
|
387 |
<input type="hidden" name="submitted" value="1" />
|
388 |
<h3>Overview</h3>
|
389 |
|
@@ -415,10 +441,10 @@ function SEOLinks_comment_text_filter($text) {
|
|
415 |
<input type="text" name="ignore" size="90" value="$ignore"/>
|
416 |
<br><br>
|
417 |
<h3>Custom Keywords</h3>
|
418 |
-
<p>Here you can enter manually the extra keywords you want to automaticaly link. Use comma to seperate
|
419 |
<p>Example:<br />
|
420 |
-
|
421 |
-
|
422 |
</p>
|
423 |
|
424 |
<textarea name="customkey" id="customkey" rows="15" cols="80" >$customkey</textarea>
|
@@ -440,7 +466,7 @@ function SEOLinks_comment_text_filter($text) {
|
|
440 |
<input type="checkbox" name="blanko" $blanko /><label for="blanko"> Open in new window</label> <br>
|
441 |
|
442 |
|
443 |
-
<div class="submit"><input type="submit" name="Submit" value="Update" /></div>
|
444 |
</form>
|
445 |
</div>
|
446 |
|
2 |
|
3 |
/*
|
4 |
Plugin Name: SEO Smart Links
|
5 |
+
Version: 1.8.0
|
6 |
Plugin URI: http://www.prelovac.com/vladimir/wordpress-plugins/seo-smart-links
|
7 |
Author: Vladimir Prelovac
|
8 |
Author URI: http://www.prelovac.com/vladimir
|
9 |
+
Description: SEO Smart Links provides automatic inter-linking of your articles, custom keyword lists and much more.
|
|
|
10 |
*/
|
11 |
|
12 |
|
|
|
13 |
// Avoid name collisions.
|
14 |
if ( !class_exists('SEOLinks') ) :
|
15 |
|
47 |
$options = $this->get_options();
|
48 |
|
49 |
$links=0;
|
50 |
+
|
51 |
+
|
52 |
|
53 |
|
54 |
|
86 |
{
|
87 |
|
88 |
$kw_array = array();
|
89 |
+
|
90 |
+
// thanks PK for the suggestion
|
91 |
foreach (explode("\n", $options['customkey']) as $line) {
|
92 |
+
$chunks = array_map('trim', explode(",", $line));
|
93 |
+
$total_chuncks = count($chunks);
|
94 |
+
if($total_chuncks > 2) {
|
95 |
+
$i = 0;
|
96 |
+
$url = $chunks[$total_chuncks-1];
|
97 |
+
while($i < $total_chuncks-1) {
|
98 |
+
if (!empty($chunks[$i])) $kw_array[$chunks[$i]] = $url;
|
99 |
+
$i++;
|
100 |
+
}
|
101 |
+
} else {
|
102 |
+
list($keyword, $url) = array_map('trim', explode(",", $line, 2));
|
103 |
+
if (!empty($keyword)) $kw_array[$keyword] = $url;
|
104 |
+
}
|
105 |
+
}
|
106 |
+
|
107 |
+
/*foreach (explode("\n", $options['customkey']) as $line) {
|
108 |
list($keyword, $url) = array_map('trim', explode(",", $line, 2));
|
109 |
if (!empty($keyword)) $kw_array[$keyword] = $url;
|
110 |
+
}*/
|
111 |
|
112 |
foreach ($kw_array as $name=>$url)
|
113 |
{
|
115 |
if (!$maxlinks || ($links < $maxlinks) && !in_array( strtolower($name), $arrignore) && strstr($text, $name))
|
116 |
{
|
117 |
$name= preg_quote($name, '/');
|
|
|
|
|
118 |
|
119 |
+
$replace="<a title=\"$1\" href=\"$url\">$1</a>";
|
120 |
+
//$regexp="/(?!(?:[^<]+>|[^>]+<\/a>))\b($name)\b/imsU"; // this didnt work with unicode
|
121 |
+
$regexp="/(?!(?:[^<]+>|[^>]+<\/a>))(?<!\p{L})($name)(?!\p{L})/imsU";
|
122 |
$newtext = preg_replace($regexp, $replace, $text, $maxsingle);
|
123 |
if ($newtext!=$text) {
|
124 |
$links++;
|
149 |
(!$maxlinks || ($links < $maxlinks)) && (!in_array( strtolower($postitem->post_title), $arrignore)) && strstr($text, $postitem->post_title) )
|
150 |
{
|
151 |
$name = preg_quote($postitem->post_title, '/');
|
152 |
+
|
153 |
+
$regexp="/(?!(?:[^<]+>|[^>]+<\/a>))(?<!\p{L})($name)(?!\p{L})/imsU";
|
154 |
+
|
155 |
$replace='<a title="$1" href="$$$url$$$">$1</a>';
|
156 |
|
157 |
$newtext = preg_replace($regexp, $replace, $text, $maxsingle);
|
180 |
if ((!$maxlinks || ($links < $maxlinks)) && !in_array( strtolower($cat->name), $arrignore) && strstr($text, $cat->name) )
|
181 |
{
|
182 |
$name= preg_quote($cat->name, '/');
|
183 |
+
$regexp="/(?!(?:[^<]+>|[^>]+<\/a>))(?<!\p{L})($name)(?!\p{L})/imsU";
|
184 |
$replace='<a title="$1" href="$$$url$$$">$1</a>';
|
185 |
|
186 |
$newtext = preg_replace($regexp, $replace, $text, $maxsingle);
|
211 |
if ((!$maxlinks || ($links < $maxlinks)) && !in_array( strtolower($name), $arrignore) && strstr($text, $tag->name))
|
212 |
{
|
213 |
$name = preg_quote($tag->name, '/');
|
214 |
+
$regexp="/(?!(?:[^<]+>|[^>]+<\/a>))(?<!\p{L})($name)(?!\p{L})/imsU";
|
215 |
$replace='<a title="$1" href="$$$url$$$">$1</a>';
|
216 |
|
217 |
$newtext = preg_replace($regexp, $replace, $text, $maxsingle);
|
326 |
$options = $this->get_options();
|
327 |
if ( isset($_POST['submitted']) ) {
|
328 |
|
329 |
+
check_admin_referer('seo-smart-links');
|
330 |
|
331 |
$options['post']=$_POST['post'];
|
332 |
$options['postself']=$_POST['postself'];
|
377 |
$blanko=$options['blanko']=='on'?'checked':'';
|
378 |
$onlysingle=$options['onlysingle']=='on'?'checked':'';
|
379 |
|
380 |
+
$nonce=wp_create_nonce( 'seo-smart-links');
|
381 |
+
|
382 |
+
|
383 |
|
384 |
$imgpath=trailingslashit(get_option('siteurl')). 'wp-content/plugins/seo-automatic-links/i';
|
385 |
echo <<<END
|
409 |
|
410 |
<div class="dbx-content">
|
411 |
<form name="SEOLinks" action="$action_url" method="post">
|
412 |
+
<input type="hidden" id="_wpnonce" name="_wpnonce" value="$nonce" />
|
413 |
<input type="hidden" name="submitted" value="1" />
|
414 |
<h3>Overview</h3>
|
415 |
|
441 |
<input type="text" name="ignore" size="90" value="$ignore"/>
|
442 |
<br><br>
|
443 |
<h3>Custom Keywords</h3>
|
444 |
+
<p>Here you can enter manually the extra keywords you want to automaticaly link. Use comma to seperate keywords and add target url at the end. Use a new line for new url and set of keywords. You can have these keywords link to any url, not only your site.</p>
|
445 |
<p>Example:<br />
|
446 |
+
vladimir prelovac, http://www.prelovac.com/vladimir<br />
|
447 |
+
cars, car, autos, auto, http://mycarblog.com/<br />
|
448 |
</p>
|
449 |
|
450 |
<textarea name="customkey" id="customkey" rows="15" cols="80" >$customkey</textarea>
|
466 |
<input type="checkbox" name="blanko" $blanko /><label for="blanko"> Open in new window</label> <br>
|
467 |
|
468 |
|
469 |
+
<div class="submit"><input type="submit" name="Submit" value="Update" class="button-primary" /></div>
|
470 |
</form>
|
471 |
</div>
|
472 |
|