Version Description
Download this release
Release Info
Developer | freediver |
Plugin | SEO Smart Links |
Version | 1.4 |
Comparing to | |
See all releases |
Code changes from version 1.3 to 1.4
- i/rate.png +0 -0
- readme.txt +13 -6
- seo-links.php +99 -50
i/rate.png
ADDED
Binary file
|
readme.txt
CHANGED
@@ -19,13 +19,12 @@ It also give your visitors an opportunity to visit other sections of your site t
|
|
19 |
Everything happens completely transparent, and you can edit the options from the administration settings panel.
|
20 |
|
21 |
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
set in your wp-config.php
|
27 |
|
28 |
-
|
|
|
29 |
|
30 |
v1.2:
|
31 |
- Added limits options
|
@@ -74,6 +73,14 @@ You should have received a copy of the GNU General Public License along with SEO
|
|
74 |
|
75 |
Just install activate it on your blog. Default options are enough to get you going. If you want to tweak it, you can always edit the options. Be sure to check "ignore" options where you can state what keywords and phrases not to link.
|
76 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
77 |
|
78 |
= Can I suggest an feature for the plugin? =
|
79 |
|
19 |
Everything happens completely transparent, and you can edit the options from the administration settings panel.
|
20 |
|
21 |
|
22 |
+
Change log
|
23 |
+
v1.4
|
24 |
+
- Added option for custom keywrods. No you can specify unlimited numbers of your keywords and url's to link to
|
|
|
|
|
25 |
|
26 |
+
v1.3:
|
27 |
+
- Enabled caching for speeding queries up.
|
28 |
|
29 |
v1.2:
|
30 |
- Added limits options
|
73 |
|
74 |
Just install activate it on your blog. Default options are enough to get you going. If you want to tweak it, you can always edit the options. Be sure to check "ignore" options where you can state what keywords and phrases not to link.
|
75 |
|
76 |
+
= How do I enable SEO Smart Links cache?
|
77 |
+
|
78 |
+
Make sure you have enabled WordPress cache by adding this line to your wp-config.php
|
79 |
+
|
80 |
+
define(ENABLE_CACHE, true);
|
81 |
+
|
82 |
+
Please be careful when editing this file and always make a backup!
|
83 |
+
|
84 |
|
85 |
= Can I suggest an feature for the plugin? =
|
86 |
|
seo-links.php
CHANGED
@@ -2,7 +2,7 @@
|
|
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
|
@@ -79,6 +79,41 @@ $arrignore=$this->explode_trim(",", strtolower($options['ignore'].$add));
|
|
79 |
|
80 |
$text = " $text ";
|
81 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
82 |
if ($options['lposts'] || $options['lpages'])
|
83 |
{
|
84 |
if ( !$posts = wp_cache_get( 'seo-links-posts', 'seo-smart-links' ) ) {
|
@@ -197,22 +232,7 @@ function SEOLinks_comment_text_filter($text) {
|
|
197 |
return $this->SEOLinks_process_text($text, 1);
|
198 |
}
|
199 |
|
200 |
-
|
201 |
-
function get_options() {
|
202 |
-
|
203 |
-
|
204 |
-
$existing_options = get_option($this->SEOLinks_DB_option);
|
205 |
-
|
206 |
-
if (!empty($existing_options)) {
|
207 |
-
foreach ($existing_options as $key => $option)
|
208 |
-
$options[$key] = $option;
|
209 |
-
}
|
210 |
-
else
|
211 |
-
return 0;
|
212 |
-
return $options;
|
213 |
-
}
|
214 |
-
|
215 |
-
function explode_trim($separator, $text)
|
216 |
{
|
217 |
$arr = explode($separator, $text);
|
218 |
|
@@ -223,40 +243,56 @@ function explode_trim($separator, $text)
|
|
223 |
}
|
224 |
return $ret;
|
225 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
226 |
|
227 |
// Set up everything
|
228 |
function install() {
|
229 |
$SEOLinks_options = $this->get_options();
|
230 |
-
if (!$SEOLinks_options)
|
231 |
-
{
|
232 |
-
$options = array();
|
233 |
-
|
234 |
-
$options['post']='on';
|
235 |
-
$options['postself']='';
|
236 |
-
$options['page']='on';
|
237 |
-
$options['pageself']='';
|
238 |
-
$options['comment']='';
|
239 |
-
$options['lposts']='on';
|
240 |
-
$options['lpages']='on';
|
241 |
-
$options['lcats']='';
|
242 |
-
$options['ltags']='';
|
243 |
-
$options['ignore']='about,';
|
244 |
-
$options['maxlinks']=3;
|
245 |
-
$options['maxsingle']=1;
|
246 |
-
|
247 |
|
248 |
-
update_option($this->SEOLinks_DB_option, $options);
|
249 |
-
}
|
250 |
|
251 |
}
|
252 |
|
253 |
function handle_options()
|
254 |
{
|
255 |
|
256 |
-
|
257 |
if ( isset($_POST['submitted']) ) {
|
258 |
-
|
259 |
-
//print_r($_POST);
|
260 |
|
261 |
$options['post']=$_POST['post'];
|
262 |
$options['postself']=$_POST['postself'];
|
@@ -268,8 +304,9 @@ function explode_trim($separator, $text)
|
|
268 |
$options['lcats']=$_POST['lcats'];
|
269 |
$options['ltags']=$_POST['ltags'];
|
270 |
$options['ignore']=$_POST['ignore'];
|
271 |
-
$options['maxlinks']
|
272 |
-
$options['maxsingle']
|
|
|
273 |
|
274 |
|
275 |
|
@@ -279,7 +316,7 @@ function explode_trim($separator, $text)
|
|
279 |
}
|
280 |
|
281 |
|
282 |
-
|
283 |
|
284 |
$action_url = $_SERVER['REQUEST_URI'];
|
285 |
|
@@ -295,6 +332,7 @@ function explode_trim($separator, $text)
|
|
295 |
$ignore=$options['ignore'];
|
296 |
$maxlinks=$options['maxlinks'];
|
297 |
$maxsingle=$options['maxsingle'];
|
|
|
298 |
|
299 |
$imgpath=trailingslashit(get_option('siteurl')). 'wp-content/plugins/seo-automatic-links/i';
|
300 |
echo <<<END
|
@@ -307,15 +345,16 @@ function explode_trim($separator, $text)
|
|
307 |
<div id="sideblock" style="float:right;width:220px;margin-left:10px;">
|
308 |
<h3>Information</h3>
|
309 |
<div id="dbx-content" style="text-decoration:none;">
|
310 |
-
<img src="$imgpath/home.png"><a href="http://www.prelovac.com/vladimir/wordpress-plugins/seo-smart-links"> SEO Smart Links Home</a><br /><br />
|
311 |
-
<img src="$imgpath/
|
312 |
-
|
|
|
313 |
<br />
|
314 |
|
315 |
<p align="center">
|
316 |
<img src="$imgpath/p1.png"></p>
|
317 |
|
318 |
-
<p> <img src="$imgpath/
|
319 |
</div>
|
320 |
</div>
|
321 |
|
@@ -337,16 +376,26 @@ function explode_trim($separator, $text)
|
|
337 |
<input type="checkbox" name="comment" $comment /><label for="comment"> Comments</label> <br>
|
338 |
|
339 |
<h4>Links</h4>
|
340 |
-
<p>
|
341 |
<input type="checkbox" name="lposts" $lposts /><label for="lposts"> Posts</label> <br>
|
342 |
<input type="checkbox" name="lpages" $lpages /><label for="lpages"> Pages</label> <br>
|
343 |
-
<input type="checkbox" name="lcats" $lcats /><label for="lcats"> Categories
|
344 |
-
<input type="checkbox" name="ltags" $ltags /><label for="ltags"> Tags
|
345 |
|
346 |
<h4>Ignore</h4>
|
347 |
-
<p>You may wish to ignore certain words or phrases. Seperate them by comma.</p>
|
348 |
<input type="text" name="ignore" size="90" value="$ignore"/>
|
349 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
350 |
<h4>Limits</h4>
|
351 |
<p>You can limit the maximum number of links you want to generate in a post. Set to 0 or empty for no limit. </p>
|
352 |
Max Links: <input type="text" name="maxlinks" size="2" value="$maxlinks"/>
|
2 |
|
3 |
/*
|
4 |
Plugin Name: SEO Smart Links
|
5 |
+
Version: 1.4
|
6 |
Plugin URI: http://www.prelovac.com/vladimir/wordpress-plugins/seo-smart-links
|
7 |
Author: Vladimir Prelovac
|
8 |
Author URI: http://www.prelovac.com
|
79 |
|
80 |
$text = " $text ";
|
81 |
|
82 |
+
|
83 |
+
if (!empty($options['customkey']))
|
84 |
+
{
|
85 |
+
|
86 |
+
$kw_array = array();
|
87 |
+
foreach (explode("\n", $options['customkey']) as $line) {
|
88 |
+
list($keyword, $url) = array_map('trim', explode(",", $line, 2));
|
89 |
+
if (!empty($keyword)) $kw_array[$keyword] = $url;
|
90 |
+
}
|
91 |
+
|
92 |
+
foreach ($kw_array as $name=>$url)
|
93 |
+
{
|
94 |
+
$name= preg_quote($name, '/');
|
95 |
+
if (!in_array( strtolower($name), $arrignore))
|
96 |
+
{
|
97 |
+
|
98 |
+
$regexp="/(?!(?:[^<]+>|[^>]+<\/a>))\b($name)\b/imsU";
|
99 |
+
$replace="<a title=\"$1\" href=\"$url\">$1</a>";
|
100 |
+
|
101 |
+
|
102 |
+
if (!$maxlinks || ($links < $maxlinks))
|
103 |
+
{
|
104 |
+
|
105 |
+
$newtext = preg_replace($regexp, $replace, $text, $maxsingle);
|
106 |
+
if ($newtext!=$text) {
|
107 |
+
$links++;
|
108 |
+
$text=$newtext;
|
109 |
+
}
|
110 |
+
}
|
111 |
+
}
|
112 |
+
}
|
113 |
+
|
114 |
+
|
115 |
+
}
|
116 |
+
|
117 |
if ($options['lposts'] || $options['lpages'])
|
118 |
{
|
119 |
if ( !$posts = wp_cache_get( 'seo-links-posts', 'seo-smart-links' ) ) {
|
232 |
return $this->SEOLinks_process_text($text, 1);
|
233 |
}
|
234 |
|
235 |
+
function explode_trim($separator, $text)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
236 |
{
|
237 |
$arr = explode($separator, $text);
|
238 |
|
243 |
}
|
244 |
return $ret;
|
245 |
}
|
246 |
+
|
247 |
+
// Handle our options
|
248 |
+
function get_options() {
|
249 |
+
|
250 |
+
$options = array(
|
251 |
+
'post' => 'o',
|
252 |
+
'postself' => '',
|
253 |
+
'page' => 'on',
|
254 |
+
'pageself' => '',
|
255 |
+
'comment' => '',
|
256 |
+
'lposts' => 'on',
|
257 |
+
'lpages' => 'on',
|
258 |
+
'lcats' => '',
|
259 |
+
'ltags' => '',
|
260 |
+
'ignore' => 'about,',
|
261 |
+
'maxlinks' => 3,
|
262 |
+
'maxsingle' => 1,
|
263 |
+
'customkey' => '',
|
264 |
+
);
|
265 |
+
|
266 |
+
$saved = get_option($this->SEOLinks_DB_option);
|
267 |
+
|
268 |
+
|
269 |
+
if (!empty($saved)) {
|
270 |
+
foreach ($saved as $key => $option)
|
271 |
+
$options[$key] = $option;
|
272 |
+
}
|
273 |
+
|
274 |
+
if ($saved != $options)
|
275 |
+
update_option($this->SEOLinks_DB_option, $options);
|
276 |
+
|
277 |
+
return $options;
|
278 |
+
|
279 |
+
}
|
280 |
+
|
281 |
+
|
282 |
|
283 |
// Set up everything
|
284 |
function install() {
|
285 |
$SEOLinks_options = $this->get_options();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
286 |
|
|
|
|
|
287 |
|
288 |
}
|
289 |
|
290 |
function handle_options()
|
291 |
{
|
292 |
|
293 |
+
$options = $this->get_options();
|
294 |
if ( isset($_POST['submitted']) ) {
|
295 |
+
|
|
|
296 |
|
297 |
$options['post']=$_POST['post'];
|
298 |
$options['postself']=$_POST['postself'];
|
304 |
$options['lcats']=$_POST['lcats'];
|
305 |
$options['ltags']=$_POST['ltags'];
|
306 |
$options['ignore']=$_POST['ignore'];
|
307 |
+
$options['maxlinks']=(int) $_POST['maxlinks'];
|
308 |
+
$options['maxsingle']=(int) $_POST['maxsingle'];
|
309 |
+
$options['customkey']=$_POST['customkey'];
|
310 |
|
311 |
|
312 |
|
316 |
}
|
317 |
|
318 |
|
319 |
+
|
320 |
|
321 |
$action_url = $_SERVER['REQUEST_URI'];
|
322 |
|
332 |
$ignore=$options['ignore'];
|
333 |
$maxlinks=$options['maxlinks'];
|
334 |
$maxsingle=$options['maxsingle'];
|
335 |
+
$customkey=$options['customkey'];
|
336 |
|
337 |
$imgpath=trailingslashit(get_option('siteurl')). 'wp-content/plugins/seo-automatic-links/i';
|
338 |
echo <<<END
|
345 |
<div id="sideblock" style="float:right;width:220px;margin-left:10px;">
|
346 |
<h3>Information</h3>
|
347 |
<div id="dbx-content" style="text-decoration:none;">
|
348 |
+
<img src="$imgpath/home.png"><a style="text-decoration:none;" href="http://www.prelovac.com/vladimir/wordpress-plugins/seo-smart-links"> SEO Smart Links Home</a><br /><br />
|
349 |
+
<img src="$imgpath/help.png"><a style="text-decoration:none;" href="http://www.prelovac.com/vladimir/wordpress-plugins/seo-smart-links#comments"> Suggest a Feature</a><br /><br />
|
350 |
+
<img src="$imgpath/rate.png"><a style="text-decoration:none;" href="http://wordpress.org/extend/plugins/seo-automatic-links/"> Rate SEO Smart Links</a><br /><br />
|
351 |
+
<img src="$imgpath/more.png"><a style="text-decoration:none;" href="http://www.prelovac.com/vladimir/wordpress-plugins"> My WordPress Plugins</a><br /><br />
|
352 |
<br />
|
353 |
|
354 |
<p align="center">
|
355 |
<img src="$imgpath/p1.png"></p>
|
356 |
|
357 |
+
<p> <img src="$imgpath/idea.png"><a style="text-decoration:none;" href="http://www.prelovac.com/vladimir/services"> Need a WordPress Expert?</a></p>
|
358 |
</div>
|
359 |
</div>
|
360 |
|
376 |
<input type="checkbox" name="comment" $comment /><label for="comment"> Comments</label> <br>
|
377 |
|
378 |
<h4>Links</h4>
|
379 |
+
<p>Links set where SEO Smart links should try and find appropriate link targets. The match will be based on post/page title or category/tag name, case insensitive.</p>
|
380 |
<input type="checkbox" name="lposts" $lposts /><label for="lposts"> Posts</label> <br>
|
381 |
<input type="checkbox" name="lpages" $lpages /><label for="lpages"> Pages</label> <br>
|
382 |
+
<input type="checkbox" name="lcats" $lcats /><label for="lcats"> Categories</label> <br>
|
383 |
+
<input type="checkbox" name="ltags" $ltags /><label for="ltags"> Tags</label> <br>
|
384 |
|
385 |
<h4>Ignore</h4>
|
386 |
+
<p>You may wish to ignore certain words or phrases from automatic linking. Seperate them by comma.</p>
|
387 |
<input type="text" name="ignore" size="90" value="$ignore"/>
|
388 |
|
389 |
+
<h4>Custom Keywords</h4>
|
390 |
+
<p>Here you can enter manually the extra keywords you want to automaticaly link. Use comma to seperate keyword and url, next one in next line and so on. You can have these keywords link to any url, not only your site.</p>
|
391 |
+
<p>Example:<br />
|
392 |
+
google, http://www.google.com<br />
|
393 |
+
vladimir prelovac, http://www.prelovac.com/vladimir
|
394 |
+
</p>
|
395 |
+
|
396 |
+
<textarea name="customkey" id="customkey" rows="15" cols="80" >$customkey</textarea>
|
397 |
+
|
398 |
+
|
399 |
<h4>Limits</h4>
|
400 |
<p>You can limit the maximum number of links you want to generate in a post. Set to 0 or empty for no limit. </p>
|
401 |
Max Links: <input type="text" name="maxlinks" size="2" value="$maxlinks"/>
|