Version Description
Download this release
Release Info
Developer | JohnLamansky |
Plugin | SEO Ultimate |
Version | 6.0 |
Comparing to | |
See all releases |
Code changes from version 5.9 to 6.0
- includes/jlfunctions/md.php +4 -0
- includes/jlsuggest/jlsuggest.css +88 -0
- includes/jlsuggest/jlsuggest.js +365 -0
- modules/autolinks/autolinks.css +7 -8
- modules/autolinks/autolinks.php +11 -0
- modules/autolinks/content-autolinks.php +71 -46
- modules/class.su-module.php +143 -0
- modules/meta/meta-descriptions.php +1 -1
- modules/meta/meta-robots.css +8 -0
- modules/modules.css +0 -1
- modules/rich-snippets/rich-snippets.php +5 -3
- modules/settings/settings-data.php +3 -1
- plugin/class.seo-ultimate.php +89 -0
- readme.txt +26 -15
- seo-ultimate.php +4 -4
- seo-ultimate.pot +138 -121
includes/jlfunctions/md.php
CHANGED
@@ -80,6 +80,10 @@ class sumd {
|
|
80 |
|
81 |
return $sections;
|
82 |
}
|
|
|
|
|
|
|
|
|
83 |
}
|
84 |
|
85 |
?>
|
80 |
|
81 |
return $sections;
|
82 |
}
|
83 |
+
|
84 |
+
function convert_headers($md, $h) {
|
85 |
+
return trim(preg_replace('|\r\n=+ ([^=]+) =+\r\n|', "<$h>\\1</$h>", "\r\n$md\r\n"));
|
86 |
+
}
|
87 |
}
|
88 |
|
89 |
?>
|
includes/jlsuggest/jlsuggest.css
ADDED
@@ -0,0 +1,88 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
input.jlsuggest,
|
3 |
+
.jls_text_dest {
|
4 |
+
width: 100%;
|
5 |
+
}
|
6 |
+
|
7 |
+
.jls_text_dest {
|
8 |
+
border: 1px solid #C0CDFF;
|
9 |
+
border-radius: 4px;
|
10 |
+
background-color: #E0E7FF;
|
11 |
+
position: relative;
|
12 |
+
padding: 1px 0;
|
13 |
+
}
|
14 |
+
|
15 |
+
.jls_text_dest_text {
|
16 |
+
cursor: default;
|
17 |
+
padding: 0 5px;
|
18 |
+
}
|
19 |
+
|
20 |
+
.jls_text_dest_text .type {
|
21 |
+
color: #666;
|
22 |
+
font-variant: small-caps;
|
23 |
+
font-size: smaller;
|
24 |
+
}
|
25 |
+
|
26 |
+
.jls_text_dest_close {
|
27 |
+
position: absolute;
|
28 |
+
top: 0;
|
29 |
+
right: 0;
|
30 |
+
cursor: pointer;
|
31 |
+
padding: 1px 10px;
|
32 |
+
color: black;
|
33 |
+
text-decoration: none;
|
34 |
+
}
|
35 |
+
|
36 |
+
.jls_text_dest_close:hover,
|
37 |
+
.jls_text_dest_close:focus {
|
38 |
+
color: red;
|
39 |
+
}
|
40 |
+
|
41 |
+
.jls_results {
|
42 |
+
padding: 0;
|
43 |
+
margin: 0;
|
44 |
+
list-style: none;
|
45 |
+
position: absolute;
|
46 |
+
z-index: 10000;
|
47 |
+
display: none;
|
48 |
+
border: 1px solid #DFDFDF;
|
49 |
+
background-color: white;
|
50 |
+
border-radius: 4px;
|
51 |
+
}
|
52 |
+
|
53 |
+
.jls_results li {
|
54 |
+
margin: 0;
|
55 |
+
padding: 2px 5px;
|
56 |
+
min-width: 100px;
|
57 |
+
white-space: nowrap;
|
58 |
+
text-align: left;
|
59 |
+
}
|
60 |
+
|
61 |
+
.jls_results li.jls_header {
|
62 |
+
margin-top: 10px;
|
63 |
+
background-color: #C0CDFF;
|
64 |
+
text-align: center;
|
65 |
+
font-weight: bold;
|
66 |
+
cursor: default;
|
67 |
+
}
|
68 |
+
|
69 |
+
.jls_results li.jls_header:first-child {
|
70 |
+
margin-top: 0;
|
71 |
+
}
|
72 |
+
|
73 |
+
.jls_over {
|
74 |
+
cursor: pointer;
|
75 |
+
}
|
76 |
+
|
77 |
+
.jls_match {
|
78 |
+
background-color: yellow;
|
79 |
+
color: black;
|
80 |
+
}
|
81 |
+
|
82 |
+
.jls_over {
|
83 |
+
background-color: #E0E7FF;
|
84 |
+
}
|
85 |
+
|
86 |
+
.jls_results li {
|
87 |
+
color:#101010;
|
88 |
+
}
|
includes/jlsuggest/jlsuggest.js
ADDED
@@ -0,0 +1,365 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery(document).ready( function($) {
|
2 |
+
$('input.jlsuggest', '.su-module').jlsuggest(ajaxurl + '?action=su-jlsuggest-autocomplete',
|
3 |
+
{ delay: 500, minchars: 2, multiple: false, textDest: true, noUrls: true } );
|
4 |
+
} );
|
5 |
+
|
6 |
+
|
7 |
+
/*
|
8 |
+
* jquery.jlsuggest
|
9 |
+
* Based on WordPress's jquery.suggest 1.1b (2007-08-06)
|
10 |
+
* Modified by John Lamansky (2011-05-16)
|
11 |
+
*/
|
12 |
+
|
13 |
+
(function($) {
|
14 |
+
|
15 |
+
$.jlsuggest = function(input, options) {
|
16 |
+
var $input, $results, timeout, prevLength, cache, cacheSize;
|
17 |
+
|
18 |
+
$input = $(input).attr("autocomplete", "off");
|
19 |
+
$results = $(document.createElement("ul"));
|
20 |
+
|
21 |
+
timeout = false; // hold timeout ID for suggestion results to appear
|
22 |
+
prevLength = 0; // last recorded length of $input.val()
|
23 |
+
cache = []; // cache MRU list
|
24 |
+
cacheSize = 0; // size of cache in chars (bytes?)
|
25 |
+
|
26 |
+
$results.addClass(options.resultsClass).appendTo('body');
|
27 |
+
|
28 |
+
|
29 |
+
resetPosition();
|
30 |
+
$(window)
|
31 |
+
.load(resetPosition) // just in case user is changing size of page while loading
|
32 |
+
.resize(resetPosition);
|
33 |
+
|
34 |
+
$input.blur(function() {
|
35 |
+
setTimeout(function() { $results.hide() }, 200);
|
36 |
+
});
|
37 |
+
|
38 |
+
|
39 |
+
// help IE users if possible
|
40 |
+
if ( $.browser.msie ) {
|
41 |
+
try {
|
42 |
+
$results.bgiframe();
|
43 |
+
} catch(e) { }
|
44 |
+
}
|
45 |
+
|
46 |
+
// I really hate browser detection, but I don't see any other way
|
47 |
+
if ($.browser.mozilla)
|
48 |
+
$input.keypress(processKey); // onkeypress repeats arrow keys in Mozilla/Opera
|
49 |
+
else
|
50 |
+
$input.keydown(processKey); // onkeydown repeats arrow keys in IE/Safari
|
51 |
+
|
52 |
+
$('.' + options.textDestCloseClass).click(function() {
|
53 |
+
$(this).siblings('.' + options.textDestTextClass + ':first').text('').parent().hide().siblings('input:first').val('').show().focus()
|
54 |
+
});
|
55 |
+
|
56 |
+
|
57 |
+
function resetPosition() {
|
58 |
+
// requires jquery.dimension plugin
|
59 |
+
var offset = $input.offset();
|
60 |
+
$results.css({
|
61 |
+
top: (offset.top + input.offsetHeight) + 'px',
|
62 |
+
left: offset.left + 'px'
|
63 |
+
});
|
64 |
+
}
|
65 |
+
|
66 |
+
|
67 |
+
function processKey(e) {
|
68 |
+
|
69 |
+
// handling up/down/escape requires results to be visible
|
70 |
+
// handling enter/tab requires that AND a result to be selected
|
71 |
+
if ((/27$|38$|40$/.test(e.keyCode) && $results.is(':visible')) ||
|
72 |
+
(/^13$|^9$/.test(e.keyCode) && getCurrentResult())) {
|
73 |
+
|
74 |
+
if (e.preventDefault)
|
75 |
+
e.preventDefault();
|
76 |
+
if (e.stopPropagation)
|
77 |
+
e.stopPropagation();
|
78 |
+
|
79 |
+
e.cancelBubble = true;
|
80 |
+
e.returnValue = false;
|
81 |
+
|
82 |
+
switch(e.keyCode) {
|
83 |
+
|
84 |
+
case 38: // up
|
85 |
+
prevResult();
|
86 |
+
break;
|
87 |
+
|
88 |
+
case 40: // down
|
89 |
+
nextResult();
|
90 |
+
break;
|
91 |
+
|
92 |
+
case 9: // tab
|
93 |
+
case 13: // return
|
94 |
+
selectCurrentResult();
|
95 |
+
break;
|
96 |
+
|
97 |
+
case 27: // escape
|
98 |
+
$results.hide();
|
99 |
+
break;
|
100 |
+
|
101 |
+
}
|
102 |
+
|
103 |
+
} else if ($input.val().length != prevLength) {
|
104 |
+
|
105 |
+
if (timeout)
|
106 |
+
clearTimeout(timeout);
|
107 |
+
timeout = setTimeout(suggest, options.delay);
|
108 |
+
prevLength = $input.val().length;
|
109 |
+
|
110 |
+
}
|
111 |
+
|
112 |
+
|
113 |
+
}
|
114 |
+
|
115 |
+
|
116 |
+
function suggest() {
|
117 |
+
|
118 |
+
var q = $.trim($input.val()), multipleSepPos, items;
|
119 |
+
|
120 |
+
if (options.noUrls && (q.substring(0, 7) == 'http://' || q.substring(0, 8) == 'https://')) {
|
121 |
+
$results.hide();
|
122 |
+
return;
|
123 |
+
}
|
124 |
+
|
125 |
+
if ( options.multiple ) {
|
126 |
+
multipleSepPos = q.lastIndexOf(options.multipleSep);
|
127 |
+
if ( multipleSepPos != -1 ) {
|
128 |
+
q = $.trim(q.substr(multipleSepPos + options.multipleSep.length));
|
129 |
+
}
|
130 |
+
}
|
131 |
+
if (q.length >= options.minchars) {
|
132 |
+
|
133 |
+
cached = checkCache(q);
|
134 |
+
|
135 |
+
if (cached) {
|
136 |
+
|
137 |
+
displayItems(cached['items']);
|
138 |
+
|
139 |
+
} else {
|
140 |
+
|
141 |
+
$.get(options.source, {q: q}, function(txt) {
|
142 |
+
|
143 |
+
$results.hide();
|
144 |
+
|
145 |
+
items = parseTxt(txt, q);
|
146 |
+
|
147 |
+
displayItems(items);
|
148 |
+
addToCache(q, items, txt.length);
|
149 |
+
|
150 |
+
});
|
151 |
+
|
152 |
+
}
|
153 |
+
|
154 |
+
} else {
|
155 |
+
|
156 |
+
$results.hide();
|
157 |
+
|
158 |
+
}
|
159 |
+
|
160 |
+
}
|
161 |
+
|
162 |
+
|
163 |
+
function checkCache(q) {
|
164 |
+
var i;
|
165 |
+
for (i = 0; i < cache.length; i++)
|
166 |
+
if (cache[i]['q'] == q) {
|
167 |
+
cache.unshift(cache.splice(i, 1)[0]);
|
168 |
+
return cache[0];
|
169 |
+
}
|
170 |
+
|
171 |
+
return false;
|
172 |
+
|
173 |
+
}
|
174 |
+
|
175 |
+
function addToCache(q, items, size) {
|
176 |
+
var cached;
|
177 |
+
while (cache.length && (cacheSize + size > options.maxCacheSize)) {
|
178 |
+
cached = cache.pop();
|
179 |
+
cacheSize -= cached['size'];
|
180 |
+
}
|
181 |
+
|
182 |
+
cache.push({
|
183 |
+
q: q,
|
184 |
+
size: size,
|
185 |
+
items: items
|
186 |
+
});
|
187 |
+
|
188 |
+
cacheSize += size;
|
189 |
+
|
190 |
+
}
|
191 |
+
|
192 |
+
function displayItems(items) {
|
193 |
+
var i;
|
194 |
+
if (!items)
|
195 |
+
return;
|
196 |
+
|
197 |
+
if (!items.length) {
|
198 |
+
$results.hide();
|
199 |
+
return;
|
200 |
+
}
|
201 |
+
|
202 |
+
resetPosition(); // when the form moves after the page has loaded
|
203 |
+
|
204 |
+
$results.html(items.join('')).show();
|
205 |
+
|
206 |
+
$results
|
207 |
+
.children('li.' + options.itemClass)
|
208 |
+
.mouseover(function() {
|
209 |
+
$results.children('li.' + options.itemClass).removeClass(options.selectClass);
|
210 |
+
$(this).addClass(options.selectClass);
|
211 |
+
})
|
212 |
+
.click(function(e) {
|
213 |
+
e.preventDefault();
|
214 |
+
e.stopPropagation();
|
215 |
+
selectCurrentResult();
|
216 |
+
});
|
217 |
+
|
218 |
+
}
|
219 |
+
|
220 |
+
function parseTxt(txt, q) {
|
221 |
+
|
222 |
+
var lis = [], items = $.parseJSON(txt), i, item;
|
223 |
+
|
224 |
+
// parse returned data for non-empty items
|
225 |
+
for (i = 0; i < items.length; i++) {
|
226 |
+
|
227 |
+
item = items[i];
|
228 |
+
if (item) {
|
229 |
+
|
230 |
+
if (item.isheader)
|
231 |
+
html = '<li class="' + options.headerClass + '">' + item.text + '</li>';
|
232 |
+
else {
|
233 |
+
html = item.text.replace(
|
234 |
+
new RegExp(q, 'ig'),
|
235 |
+
function(q) { return '<span class="' + options.matchClass + '">' + q + '</span>' }
|
236 |
+
);
|
237 |
+
html = '<li'
|
238 |
+
+ ' class="' + document.createTextNode(options.itemClass).data + '"'
|
239 |
+
+ ' su:value="' + document.createTextNode(item.value || '').data + '"'
|
240 |
+
+ ' su:selectedtext="' + document.createTextNode(item.selectedtext || '').data.replace(/"/g, """) + '"'
|
241 |
+
+ '>' + html + '</li>';
|
242 |
+
}
|
243 |
+
lis[lis.length] = html;
|
244 |
+
}
|
245 |
+
|
246 |
+
}
|
247 |
+
|
248 |
+
return lis;
|
249 |
+
}
|
250 |
+
|
251 |
+
function getCurrentResult() {
|
252 |
+
var $currentResult;
|
253 |
+
if (!$results.is(':visible'))
|
254 |
+
return false;
|
255 |
+
|
256 |
+
$currentResult = $results.children('li.' + options.selectClass);
|
257 |
+
|
258 |
+
if (!$currentResult.length)
|
259 |
+
$currentResult = false;
|
260 |
+
|
261 |
+
return $currentResult;
|
262 |
+
|
263 |
+
}
|
264 |
+
|
265 |
+
function selectCurrentResult() {
|
266 |
+
|
267 |
+
$currentResult = getCurrentResult();
|
268 |
+
|
269 |
+
if ($currentResult) {
|
270 |
+
if ( options.multiple ) {
|
271 |
+
if ( $input.val().indexOf(options.multipleSep) != -1 ) {
|
272 |
+
$currentVal = $input.val().substr( 0, ( $input.val().lastIndexOf(options.multipleSep) + options.multipleSep.length ) );
|
273 |
+
} else {
|
274 |
+
$currentVal = "";
|
275 |
+
}
|
276 |
+
$input.val( $currentVal + $currentResult.text() + options.multipleSep);
|
277 |
+
$input.focus();
|
278 |
+
} else {
|
279 |
+
if (options.textDest) {
|
280 |
+
$input
|
281 |
+
.hide()
|
282 |
+
.siblings('.' + options.textDestClass + ':first')
|
283 |
+
.show()
|
284 |
+
.children('.' + options.textDestTextClass)
|
285 |
+
.html($currentResult.attr('su:selectedtext') || $currentResult.text())
|
286 |
+
.parentsUntil('tr')
|
287 |
+
.next('td')
|
288 |
+
.children('input')
|
289 |
+
.focus();
|
290 |
+
|
291 |
+
$input.val($currentResult.attr('su:value'));
|
292 |
+
} else
|
293 |
+
$input.val($currentResult.text());
|
294 |
+
}
|
295 |
+
$results.hide();
|
296 |
+
|
297 |
+
if (options.onSelect)
|
298 |
+
options.onSelect.apply($input[0]);
|
299 |
+
|
300 |
+
}
|
301 |
+
|
302 |
+
}
|
303 |
+
|
304 |
+
function nextResult() {
|
305 |
+
|
306 |
+
$currentResult = getCurrentResult();
|
307 |
+
|
308 |
+
if ($currentResult)
|
309 |
+
$currentResult
|
310 |
+
.removeClass(options.selectClass)
|
311 |
+
.nextAll('.' + options.itemClass + ':first')
|
312 |
+
.addClass(options.selectClass);
|
313 |
+
else
|
314 |
+
$results.children('li.' + options.itemClass + ':first').addClass(options.selectClass);
|
315 |
+
|
316 |
+
}
|
317 |
+
|
318 |
+
function prevResult() {
|
319 |
+
var $currentResult = getCurrentResult();
|
320 |
+
|
321 |
+
if ($currentResult)
|
322 |
+
$currentResult
|
323 |
+
.removeClass(options.selectClass)
|
324 |
+
.prevAll('.' + options.itemClass + ':first')
|
325 |
+
.addClass(options.selectClass);
|
326 |
+
else
|
327 |
+
$results.children('li.' + options.itemClass + ':last').addClass(options.selectClass);
|
328 |
+
|
329 |
+
}
|
330 |
+
}
|
331 |
+
|
332 |
+
$.fn.jlsuggest = function(source, options) {
|
333 |
+
|
334 |
+
if (!source)
|
335 |
+
return;
|
336 |
+
|
337 |
+
options = options || {};
|
338 |
+
options.multiple = options.multiple || false;
|
339 |
+
options.multipleSep = options.multipleSep || ", ";
|
340 |
+
options.source = source;
|
341 |
+
options.delay = options.delay || 100;
|
342 |
+
options.resultsClass = options.resultsClass || 'jls_results';
|
343 |
+
options.selectClass = options.selectClass || 'jls_over';
|
344 |
+
options.matchClass = options.matchClass || 'jls_match';
|
345 |
+
options.headerClass = options.headerClass || 'jls_header';
|
346 |
+
options.itemClass = options.itemClass || 'jls_item';
|
347 |
+
options.minchars = options.minchars || 2;
|
348 |
+
options.delimiter = options.delimiter || '\n';
|
349 |
+
options.onSelect = options.onSelect || false;
|
350 |
+
options.maxCacheSize = options.maxCacheSize || 65536;
|
351 |
+
options.noUrls = options.noUrls || false;
|
352 |
+
options.textDest = options.textDest || false;
|
353 |
+
options.textDestClass = options.textDestClass || 'jls_text_dest';
|
354 |
+
options.textDestTextClass = options.textDestTextClass || 'jls_text_dest_text';
|
355 |
+
options.textDestCloseClass = options.textDestCloseClass || 'jls_text_dest_close';
|
356 |
+
|
357 |
+
this.each(function() {
|
358 |
+
new $.jlsuggest(this, options);
|
359 |
+
});
|
360 |
+
|
361 |
+
return this;
|
362 |
+
|
363 |
+
};
|
364 |
+
|
365 |
+
})(jQuery);
|
modules/autolinks/autolinks.css
CHANGED
@@ -1,19 +1,18 @@
|
|
1 |
#su-autolinks table.widefat,
|
2 |
-
#su-autolinks table.widefat input.textbox
|
3 |
-
#su-autolinks table.widefat td.su-link-to_id select {
|
4 |
width: 100%;
|
5 |
}
|
6 |
|
7 |
-
#su-autolinks table.widefat td
|
8 |
-
|
9 |
}
|
10 |
|
11 |
-
#su-autolinks table.widefat td.su-link-
|
12 |
-
|
13 |
}
|
14 |
|
15 |
-
#su-autolinks table.widefat td.su-link-
|
16 |
-
width:
|
17 |
}
|
18 |
|
19 |
#su-autolinks table.widefat td.su-link-options {
|
1 |
#su-autolinks table.widefat,
|
2 |
+
#su-autolinks table.widefat input.textbox {
|
|
|
3 |
width: 100%;
|
4 |
}
|
5 |
|
6 |
+
#su-autolinks table.widefat td {
|
7 |
+
vertical-align: middle;
|
8 |
}
|
9 |
|
10 |
+
#su-autolinks table.widefat td.su-link-options label {
|
11 |
+
margin-right: 1em;
|
12 |
}
|
13 |
|
14 |
+
#su-autolinks table.widefat td.su-link-to {
|
15 |
+
width: 25em;
|
16 |
}
|
17 |
|
18 |
#su-autolinks table.widefat td.su-link-options {
|
modules/autolinks/autolinks.php
CHANGED
@@ -9,6 +9,17 @@ if (class_exists('SU_Module')) {
|
|
9 |
|
10 |
class SU_Autolinks extends SU_Module {
|
11 |
function get_module_title() { return __('Deeplink Juggernaut', 'seo-ultimate'); }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
}
|
13 |
|
14 |
}
|
9 |
|
10 |
class SU_Autolinks extends SU_Module {
|
11 |
function get_module_title() { return __('Deeplink Juggernaut', 'seo-ultimate'); }
|
12 |
+
|
13 |
+
function admin_page_contents() {
|
14 |
+
|
15 |
+
if (function_exists('json_encode')) {
|
16 |
+
$this->children_admin_page_tabs_form();
|
17 |
+
} else {
|
18 |
+
$this->print_message('error', sprintf(__('Deeplink Juggernaut requires PHP 5.2 or above in SEO Ultimate 6.0 and later. (Note that WordPress itself will soon require PHP 5.2 as well, starting with WordPress 3.2.) If you aren’t sure how to upgrade PHP, please ask your webhost. In the meantime, you can return to an older version of Deeplink Juggernaut that supports your version of PHP by <a href="%s">downgrading</a> to SEO Ultimate 5.9.', 'seo-ultimate'), $this->get_admin_url('settings').'#su-downgrade'));
|
19 |
+
return;
|
20 |
+
}
|
21 |
+
|
22 |
+
}
|
23 |
}
|
24 |
|
25 |
}
|
modules/autolinks/content-autolinks.php
CHANGED
@@ -54,6 +54,17 @@ class SU_ContentAutolinks extends SU_Module {
|
|
54 |
$lpa_limit_enabled = $this->get_setting('limit_lpa', false);
|
55 |
$lpa_limit = $lpa_limit_enabled ? $this->get_setting('limit_lpa_value', 5) : -1;
|
56 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
57 |
foreach ($links as $data) {
|
58 |
$anchor = $data['anchor'];
|
59 |
$to_id = su_esc_attr($data['to_id']);
|
@@ -62,12 +73,39 @@ class SU_ContentAutolinks extends SU_Module {
|
|
62 |
|
63 |
$type = $data['to_type'];
|
64 |
|
65 |
-
if ($type == 'url')
|
66 |
$url = $to_id;
|
67 |
-
elseif (
|
68 |
$to_id = (int)$to_id;
|
|
|
|
|
69 |
if (get_post_status($to_id) != 'publish') continue;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
$url = get_permalink($to_id);
|
|
|
|
|
|
|
|
|
71 |
} else
|
72 |
continue;
|
73 |
|
@@ -95,7 +133,12 @@ class SU_ContentAutolinks extends SU_Module {
|
|
95 |
return $content;
|
96 |
}
|
97 |
|
|
|
|
|
|
|
|
|
98 |
function admin_page_contents() {
|
|
|
99 |
echo "\n<p>";
|
100 |
_e('The Content Links section of Deeplink Juggernaut lets you automatically link a certain word or phrase in your post/page content to a URL you specify.', 'seo-ultimate');
|
101 |
echo "</p>\n";
|
@@ -112,15 +155,27 @@ class SU_ContentAutolinks extends SU_Module {
|
|
112 |
for ($i=0; $i <= $num_links; $i++) {
|
113 |
|
114 |
$anchor = stripslashes($_POST["link_{$i}_anchor"]);
|
115 |
-
|
116 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
117 |
$title = stripslashes($_POST["link_{$i}_title"]);
|
118 |
|
119 |
-
$target =
|
120 |
-
$target = $target ? 'blank' : 'self';
|
121 |
|
122 |
-
$nofollow = intval($_POST["link_{$i}_nofollow"]) == 1;
|
123 |
-
$delete = intval($_POST["link_{$i}_delete"]) == 1;
|
124 |
|
125 |
if (!$delete && (strlen($anchor) || $to_id))
|
126 |
$links[] = compact('anchor', 'to_type', 'to_id', 'title', 'nofollow', 'target');
|
@@ -146,8 +201,7 @@ class SU_ContentAutolinks extends SU_Module {
|
|
146 |
//Set headers
|
147 |
$headers = array(
|
148 |
'link-anchor' => __('Anchor Text', 'seo-ultimate')
|
149 |
-
, 'link-
|
150 |
-
, 'link-to_id' => __('Destination', 'seo-ultimate')
|
151 |
, 'link-title' => __('Title Attribute', 'seo-ultimate')
|
152 |
, 'link-options' => __('Options', 'seo-ultimate')
|
153 |
);
|
@@ -156,49 +210,20 @@ class SU_ContentAutolinks extends SU_Module {
|
|
156 |
//Begin table; output headers
|
157 |
$this->admin_wftable_start($headers);
|
158 |
|
159 |
-
//Get post options
|
160 |
-
$posttypeobjs = suwp::get_post_type_objects();
|
161 |
-
$posttypes = $posts = $postoptions = array();
|
162 |
-
foreach ($posttypeobjs as $posttypeobj) {
|
163 |
-
|
164 |
-
$stati = get_available_post_statuses($posttypeobj->name);
|
165 |
-
suarr::remove_value($stati, 'auto-draft');
|
166 |
-
$stati = implode(',', $stati);
|
167 |
-
|
168 |
-
$typeposts = get_posts("orderby=title&order=ASC&post_status=$stati&numberposts=-1&post_type=".$posttypeobj->name);
|
169 |
-
if (count($typeposts)) {
|
170 |
-
$posttypes['posttype_'.$posttypeobj->name] = $posttypeobj->labels->singular_name;
|
171 |
-
$posts['posttype_'.$posttypeobj->name] = $typeposts_array = array_slice(suarr::simplify($typeposts, 'ID', 'post_title'), 0, 1000, true); //Let's not go too crazy with post dropdowns; cut it off at 1000
|
172 |
-
//$postoptions['posttype_'.$posttypeobj->name] = suhtml::option_tags(array(0 => '') + $typeposts_array, null); //Maintains numeric array keys, unlike array_unshift or array_merge
|
173 |
-
}
|
174 |
-
}
|
175 |
-
|
176 |
//Cycle through links
|
177 |
$i = $start_id;
|
178 |
foreach ($links as $link) {
|
179 |
|
180 |
-
$
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
//$typeposts = array(0 => '') + $typeposts;
|
187 |
-
$postdropdowns[$posttype] = $this->get_input_element('dropdown', "link_{$i}_to_id_{$posttype}__$guid", $link['to_id'],
|
188 |
-
str_replace("<option value='{$link['to_id']}'>", "<option value='{$link['to_id']}' selected='selected'>", $postoptions[$posttype])
|
189 |
-
);
|
190 |
-
*/
|
191 |
-
}
|
192 |
|
193 |
$cells = array(
|
194 |
'link-anchor' => $this->get_input_element('textbox', "link_{$i}_anchor", $link['anchor'])
|
195 |
-
, 'link-
|
196 |
-
__('Custom', 'seo-ultimate') => array('url' => __('URL', 'seo-ultimate'))
|
197 |
-
, __('Content Items', 'seo-ultimate') => $posttypes
|
198 |
-
))
|
199 |
-
, 'link-to_id' => $this->get_admin_form_subsections("link_{$i}_to_type__$guid", $link['to_type'] ? $link['to_type'] : 'url', array_merge(array(
|
200 |
-
'url' => $this->get_input_element('textbox', "link_{$i}_to_id_url__$guid", ($link['to_type'] == 'url') ? $link['to_id'] : '')
|
201 |
-
), $postdropdowns))
|
202 |
, 'link-title' => $this->get_input_element('textbox', "link_{$i}_title", $link['title'])
|
203 |
, 'link-options' =>
|
204 |
$this->get_input_element('checkbox', "link_{$i}_nofollow", $link['nofollow'], __('Nofollow', 'seo-ultimate'))
|
54 |
$lpa_limit_enabled = $this->get_setting('limit_lpa', false);
|
55 |
$lpa_limit = $lpa_limit_enabled ? $this->get_setting('limit_lpa_value', 5) : -1;
|
56 |
|
57 |
+
$from_post_type = get_post_type();
|
58 |
+
$dest_limit = $from_post_type ? (bool)$this->get_setting('dest_limit_' . $from_post_type, false) : false;
|
59 |
+
$dest_limit_taxonomies = array();
|
60 |
+
if ($dest_limit) {
|
61 |
+
$from_post_type_taxonomies = suwp::get_object_taxonomy_names($from_post_type);
|
62 |
+
foreach ($from_post_type_taxonomies as $from_post_type_taxonomy) {
|
63 |
+
if ($this->get_setting('dest_limit_' . $from_post_type . '_within_' . $from_post_type_taxonomy, false))
|
64 |
+
$dest_limit_taxonomies[] = $from_post_type_taxonomy;
|
65 |
+
}
|
66 |
+
}
|
67 |
+
|
68 |
foreach ($links as $data) {
|
69 |
$anchor = $data['anchor'];
|
70 |
$to_id = su_esc_attr($data['to_id']);
|
73 |
|
74 |
$type = $data['to_type'];
|
75 |
|
76 |
+
if ($type == 'url') {
|
77 |
$url = $to_id;
|
78 |
+
} elseif (sustr::startswith($type, 'posttype_')) {
|
79 |
$to_id = (int)$to_id;
|
80 |
+
$to_post = get_post($to_id);
|
81 |
+
|
82 |
if (get_post_status($to_id) != 'publish') continue;
|
83 |
+
|
84 |
+
if (count($dest_limit_taxonomies)) {
|
85 |
+
$shares_term = false;
|
86 |
+
foreach ($dest_limit_taxonomies as $dest_limit_taxonomy) {
|
87 |
+
$from_terms = suarr::flatten_values(get_the_terms(null, $dest_limit_taxonomy), 'term_id');
|
88 |
+
|
89 |
+
if (is_object_in_taxonomy($to_post, $dest_limit_taxonomy))
|
90 |
+
$to_terms = suarr::flatten_values(get_the_terms($to_id, $dest_limit_taxonomy), 'term_id');
|
91 |
+
else
|
92 |
+
$to_terms = array();
|
93 |
+
|
94 |
+
if (count(array_intersect($from_terms, $to_terms))) {
|
95 |
+
$shares_term = true;
|
96 |
+
break;
|
97 |
+
}
|
98 |
+
}
|
99 |
+
|
100 |
+
if (!$shares_term)
|
101 |
+
continue;
|
102 |
+
}
|
103 |
+
|
104 |
$url = get_permalink($to_id);
|
105 |
+
} elseif (sustr::startswith($type, 'taxonomy_')) {
|
106 |
+
$taxonomy = sustr::ltrim_str($type, 'taxonomy_');
|
107 |
+
$to_id = (int)$to_id;
|
108 |
+
$url = get_term_link($to_id, $taxonomy);
|
109 |
} else
|
110 |
continue;
|
111 |
|
133 |
return $content;
|
134 |
}
|
135 |
|
136 |
+
function admin_page_init() {
|
137 |
+
$this->jlsuggest_init();
|
138 |
+
}
|
139 |
+
|
140 |
function admin_page_contents() {
|
141 |
+
|
142 |
echo "\n<p>";
|
143 |
_e('The Content Links section of Deeplink Juggernaut lets you automatically link a certain word or phrase in your post/page content to a URL you specify.', 'seo-ultimate');
|
144 |
echo "</p>\n";
|
155 |
for ($i=0; $i <= $num_links; $i++) {
|
156 |
|
157 |
$anchor = stripslashes($_POST["link_{$i}_anchor"]);
|
158 |
+
|
159 |
+
$to = stripslashes($_POST["link_{$i}_to"]);
|
160 |
+
if (sustr::startswith($to, 'obj_')) {
|
161 |
+
$to = sustr::ltrim_str($to, 'obj_');
|
162 |
+
$to = explode('/', $to);
|
163 |
+
if (count($to) == 2) {
|
164 |
+
$to_type = $to[0];
|
165 |
+
$to_id = $to[1];
|
166 |
+
} else
|
167 |
+
continue;
|
168 |
+
} else {
|
169 |
+
$to_type = 'url';
|
170 |
+
$to_id = $to;
|
171 |
+
}
|
172 |
+
|
173 |
$title = stripslashes($_POST["link_{$i}_title"]);
|
174 |
|
175 |
+
$target = empty($_POST["link_{$i}_target"]) ? 'self' : 'blank';
|
|
|
176 |
|
177 |
+
$nofollow = isset($_POST["link_{$i}_nofollow"]) ? (intval($_POST["link_{$i}_nofollow"]) == 1) : false;
|
178 |
+
$delete = isset($_POST["link_{$i}_delete"]) ? (intval($_POST["link_{$i}_delete"]) == 1) : false;
|
179 |
|
180 |
if (!$delete && (strlen($anchor) || $to_id))
|
181 |
$links[] = compact('anchor', 'to_type', 'to_id', 'title', 'nofollow', 'target');
|
201 |
//Set headers
|
202 |
$headers = array(
|
203 |
'link-anchor' => __('Anchor Text', 'seo-ultimate')
|
204 |
+
, 'link-to' => __('Destination', 'seo-ultimate')
|
|
|
205 |
, 'link-title' => __('Title Attribute', 'seo-ultimate')
|
206 |
, 'link-options' => __('Options', 'seo-ultimate')
|
207 |
);
|
210 |
//Begin table; output headers
|
211 |
$this->admin_wftable_start($headers);
|
212 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
213 |
//Cycle through links
|
214 |
$i = $start_id;
|
215 |
foreach ($links as $link) {
|
216 |
|
217 |
+
if (!isset($link['anchor'])) $link['anchor'] = '';
|
218 |
+
if (!isset($link['to_id'])) $link['to_id'] = '';
|
219 |
+
if (!isset($link['to_type'])) $link['to_type'] = 'url';
|
220 |
+
if (!isset($link['title'])) $link['title'] = '';
|
221 |
+
if (!isset($link['nofollow'])) $link['nofollow'] = false;
|
222 |
+
if (!isset($link['target'])) $link['target'] = '';
|
|
|
|
|
|
|
|
|
|
|
|
|
223 |
|
224 |
$cells = array(
|
225 |
'link-anchor' => $this->get_input_element('textbox', "link_{$i}_anchor", $link['anchor'])
|
226 |
+
, 'link-to' => $this->get_jlsuggest_box("link_{$i}_to", array($link['to_type'], $link['to_id']))
|
|
|
|
|
|
|
|
|
|
|
|
|
227 |
, 'link-title' => $this->get_input_element('textbox', "link_{$i}_title", $link['title'])
|
228 |
, 'link-options' =>
|
229 |
$this->get_input_element('checkbox', "link_{$i}_nofollow", $link['nofollow'], __('Nofollow', 'seo-ultimate'))
|
modules/class.su-module.php
CHANGED
@@ -320,6 +320,13 @@ class SU_Module {
|
|
320 |
*/
|
321 |
function get_default_settings() { return array(); }
|
322 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
323 |
/**
|
324 |
* The contents of the administration page.
|
325 |
*
|
@@ -2459,5 +2466,141 @@ class SU_Module {
|
|
2459 |
|
2460 |
add_action($hook, array(&$this, $function));
|
2461 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2462 |
}
|
2463 |
?>
|
320 |
*/
|
321 |
function get_default_settings() { return array(); }
|
322 |
|
323 |
+
/**
|
324 |
+
* Is called at WordPress' admin_init hook when this module's admin page is showing.
|
325 |
+
*
|
326 |
+
* @since 6.0
|
327 |
+
*/
|
328 |
+
function admin_page_init() { }
|
329 |
+
|
330 |
/**
|
331 |
* The contents of the administration page.
|
332 |
*
|
2466 |
|
2467 |
add_action($hook, array(&$this, $function));
|
2468 |
}
|
2469 |
+
|
2470 |
+
/********** JLSUGGEST **********/
|
2471 |
+
|
2472 |
+
/**
|
2473 |
+
* Initializes JLSuggest.
|
2474 |
+
* Must be called in the admin_page_init() function of the module that wants to use JLSuggest.
|
2475 |
+
*
|
2476 |
+
* @since 6.0
|
2477 |
+
* @uses jlsuggest_xml_ns()
|
2478 |
+
* @uses SEO_Ultimate::queue_js()
|
2479 |
+
* @uses SEO_Ultimate::queue_css()
|
2480 |
+
*/
|
2481 |
+
function jlsuggest_init() {
|
2482 |
+
add_action('admin_xml_ns', array(&$this, 'jlsuggest_xml_ns'));
|
2483 |
+
$this->plugin->queue_js ('includes/jlsuggest', 'jlsuggest');
|
2484 |
+
$this->plugin->queue_css('includes/jlsuggest', 'jlsuggest');
|
2485 |
+
}
|
2486 |
+
|
2487 |
+
/**
|
2488 |
+
* Outputs the SEO Ultimate XMLNS used by JLSuggest.
|
2489 |
+
*
|
2490 |
+
* @since 6.0
|
2491 |
+
*/
|
2492 |
+
function jlsuggest_xml_ns() {
|
2493 |
+
echo ' xmlns:su="http://johnlamansky.com/xmlns/seo-ultimate" ';
|
2494 |
+
}
|
2495 |
+
|
2496 |
+
/**
|
2497 |
+
* Explodes a JLSuggest database string into an array with the destination type and the destination ID.
|
2498 |
+
*
|
2499 |
+
* @since 6.0
|
2500 |
+
*
|
2501 |
+
* @param $valstr The database string, e.g. http://example.com or obj_posttype_post_1
|
2502 |
+
* @return array
|
2503 |
+
*/
|
2504 |
+
function jlsuggest_value_explode($valstr) {
|
2505 |
+
|
2506 |
+
if (is_array($valstr)) {
|
2507 |
+
return $valstr;
|
2508 |
+
|
2509 |
+
} elseif (is_string($valstr)) {
|
2510 |
+
|
2511 |
+
if (sustr::startswith($valstr, 'obj_')) {
|
2512 |
+
$valstr = sustr::ltrim_str($valstr, 'obj_');
|
2513 |
+
$valstr = explode('/', $valstr);
|
2514 |
+
if (count($valstr) == 2)
|
2515 |
+
return $valstr;
|
2516 |
+
} else {
|
2517 |
+
return array('url', $valstr);
|
2518 |
+
}
|
2519 |
+
}
|
2520 |
+
|
2521 |
+
return array('url', '');
|
2522 |
+
}
|
2523 |
+
|
2524 |
+
/**
|
2525 |
+
* Returns the HTML code for a JLSuggest textbox
|
2526 |
+
*
|
2527 |
+
* @since 6.0
|
2528 |
+
*
|
2529 |
+
* @param string $name The value of the textbox's name/ID attributes
|
2530 |
+
* @param string $value The current database string associated with this textbox
|
2531 |
+
*/
|
2532 |
+
function get_jlsuggest_box($name, $value) {
|
2533 |
+
|
2534 |
+
list($to_type, $to_id) = $this->jlsuggest_value_explode($value);
|
2535 |
+
|
2536 |
+
$text_dest = '';
|
2537 |
+
if (!empty($to_type)) {
|
2538 |
+
if (sustr::startswith($to_type, 'posttype_')) {
|
2539 |
+
$selected_post = get_post($to_id);
|
2540 |
+
$selected_post_type = get_post_type_object($selected_post->post_type);
|
2541 |
+
$text_dest = $selected_post->post_title . '<span class="type"> — '.$selected_post_type->labels->singular_name.'</span>';
|
2542 |
+
|
2543 |
+
} elseif (sustr::startswith($to_type, 'taxonomy_')) {
|
2544 |
+
$selected_taxonomy = get_taxonomy(sustr::ltrim_str($to_type, 'taxonomy_'));
|
2545 |
+
$selected_term = get_term($to_id, $selected_taxonomy->name);
|
2546 |
+
$text_dest = $selected_term->name . '<span class="type"> — '.$selected_taxonomy->labels->singular_name.'</span>';
|
2547 |
+
}
|
2548 |
+
}
|
2549 |
+
|
2550 |
+
$is_url = (('url' == $to_type) && !$text_dest);
|
2551 |
+
|
2552 |
+
//URL textbox
|
2553 |
+
//(hide if object is selected)
|
2554 |
+
$html = "<input name='$name' id='$name' value='";
|
2555 |
+
$html .= su_esc_editable_html($is_url ? $to_id : 'obj_' . $to_type . '/' . $to_id);
|
2556 |
+
$html .= "' type='text' class='textbox regular-text jlsuggest'";
|
2557 |
+
$html .= ' title="' . __('Type a URL or start typing the name of the item you want to link to', 'seo-ultimate') . '"';
|
2558 |
+
$html .= $is_url ? '' : ' style="display:none;" ';
|
2559 |
+
$html .= ' />';
|
2560 |
+
|
2561 |
+
//Object box
|
2562 |
+
//(hide if URL is entered)
|
2563 |
+
$html .= '<div class="jls_text_dest"';
|
2564 |
+
$html .= $is_url ? ' style="display:none;" ' : '';
|
2565 |
+
$html .= '>';
|
2566 |
+
$html .= '<span class="jls_text_dest_text">';
|
2567 |
+
$html .= $text_dest;
|
2568 |
+
$html .= '</span>';
|
2569 |
+
$html .= '<a href="#" onclick="javascript:return false;" class="jls_text_dest_close" title="'.__('Remove this destination', 'seo-ultimate').'">'.__('X', 'seo-ultimate').'</a>';
|
2570 |
+
$html .= '</div>';
|
2571 |
+
|
2572 |
+
return $html;
|
2573 |
+
}
|
2574 |
+
|
2575 |
+
/**
|
2576 |
+
* Converts a JLSuggest database string into a URL.
|
2577 |
+
*
|
2578 |
+
* @since 6.0
|
2579 |
+
*
|
2580 |
+
* @param string $value The JLSuggest database string to convert.
|
2581 |
+
* @return string The URL of the referenced destination
|
2582 |
+
*/
|
2583 |
+
function jlsuggest_value_to_url($value) {
|
2584 |
+
|
2585 |
+
list($to_type, $to_id) = $this->jlsuggest_value_explode($value);
|
2586 |
+
|
2587 |
+
if ($to_type == 'url') {
|
2588 |
+
return $to_id;
|
2589 |
+
|
2590 |
+
} elseif (sustr::startswith($to_type, 'posttype_')) {
|
2591 |
+
$to_id = (int)$to_id;
|
2592 |
+
$to_post = get_post($to_id);
|
2593 |
+
if (get_post_status($to_id) != 'publish') continue;
|
2594 |
+
return get_permalink($to_id);
|
2595 |
+
|
2596 |
+
} elseif (sustr::startswith($to_type, 'taxonomy_')) {
|
2597 |
+
$taxonomy = sustr::ltrim_str($to_type, 'taxonomy_');
|
2598 |
+
$to_id = (int)$to_id;
|
2599 |
+
return get_term_link($to_id, $taxonomy);
|
2600 |
+
|
2601 |
+
}
|
2602 |
+
|
2603 |
+
return false;
|
2604 |
+
}
|
2605 |
}
|
2606 |
?>
|
modules/meta/meta-descriptions.php
CHANGED
@@ -122,7 +122,7 @@ class SU_MetaDescriptions extends SU_Module {
|
|
122 |
"<tr class='textarea' valign='top'>\n<th scope='row'><label for='$id'>".__('Meta Description:', 'seo-ultimate')."</label></th>\n"
|
123 |
. "<td><textarea name='$id' id='$id' class='regular-text' cols='60' rows='3' tabindex='2'"
|
124 |
. " onkeyup=\"javascript:document.getElementById('su_meta_description_charcount').innerHTML = document.getElementById('_su_description').value.length\">$value</textarea>"
|
125 |
-
. "<br />".sprintf(__('You’ve entered %s characters. Most search engines use up to
|
126 |
. "</td>\n</tr>\n"
|
127 |
;
|
128 |
|
122 |
"<tr class='textarea' valign='top'>\n<th scope='row'><label for='$id'>".__('Meta Description:', 'seo-ultimate')."</label></th>\n"
|
123 |
. "<td><textarea name='$id' id='$id' class='regular-text' cols='60' rows='3' tabindex='2'"
|
124 |
. " onkeyup=\"javascript:document.getElementById('su_meta_description_charcount').innerHTML = document.getElementById('_su_description').value.length\">$value</textarea>"
|
125 |
+
. "<br />".sprintf(__('You’ve entered %s characters. Most search engines use up to 140.', 'seo-ultimate'), "<strong id='su_meta_description_charcount'>".strlen($value)."</strong>")
|
126 |
. "</td>\n</tr>\n"
|
127 |
;
|
128 |
|
modules/meta/meta-robots.css
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#su-meta-robots table.widefat {
|
2 |
+
width: auto;
|
3 |
+
}
|
4 |
+
|
5 |
+
#su-meta-robots table.widefat td.su-meta_robots_noindex,
|
6 |
+
#su-meta-robots table.widefat td.su-meta_robots_nofollow {
|
7 |
+
text-align: center;
|
8 |
+
}
|
modules/modules.css
CHANGED
@@ -17,7 +17,6 @@ div.su-module h4.su-subheader {
|
|
17 |
|
18 |
div.su-module table.widefat {
|
19 |
width: auto;
|
20 |
-
/*margin: 2em 0;*/
|
21 |
}
|
22 |
|
23 |
div.su-module table.fullwidth,
|
17 |
|
18 |
div.su-module table.widefat {
|
19 |
width: auto;
|
|
|
20 |
}
|
21 |
|
22 |
div.su-module table.fullwidth,
|
modules/rich-snippets/rich-snippets.php
CHANGED
@@ -157,8 +157,10 @@ class SU_RichSnippets extends SU_Module {
|
|
157 |
if (!strlen($value)) {
|
158 |
if (isset($property_data['value_function'])) {
|
159 |
$valfunc = (array)$property_data['value_function'];
|
160 |
-
if (is_callable($valfunc[0]))
|
161 |
-
$
|
|
|
|
|
162 |
}
|
163 |
}
|
164 |
|
@@ -192,7 +194,7 @@ class SU_RichSnippets extends SU_Module {
|
|
192 |
|
193 |
//Is the value in the content, and are we allowed to search/replace the content for this value?
|
194 |
$count = 0;
|
195 |
-
if (
|
196 |
for ($i=0; $i<count($values); $i++) {
|
197 |
$content = sustr::htmlsafe_str_replace($values[$i], $markedup_values[$i], $content, 1, $count);
|
198 |
if ($count > 0) break;
|
157 |
if (!strlen($value)) {
|
158 |
if (isset($property_data['value_function'])) {
|
159 |
$valfunc = (array)$property_data['value_function'];
|
160 |
+
if (is_callable($valfunc[0])) {
|
161 |
+
$valfunc_args = isset($valfunc[1]) ? (array)$valfunc[1] : array();
|
162 |
+
$value = call_user_func_array($valfunc[0], $valfunc_args);
|
163 |
+
}
|
164 |
}
|
165 |
}
|
166 |
|
194 |
|
195 |
//Is the value in the content, and are we allowed to search/replace the content for this value?
|
196 |
$count = 0;
|
197 |
+
if (empty($property_data['always_hidden'])) {
|
198 |
for ($i=0; $i<count($values); $i++) {
|
199 |
$content = sustr::htmlsafe_str_replace($values[$i], $markedup_values[$i], $content, 1, $count);
|
200 |
if ($count > 0) break;
|
modules/settings/settings-data.php
CHANGED
@@ -152,7 +152,9 @@ class SU_SettingsData extends SU_Module {
|
|
152 |
foreach ($import as $link) {
|
153 |
|
154 |
//Validate destination type
|
155 |
-
if ($link['to_type'] != 'url'
|
|
|
|
|
156 |
$link['to_type'] = 'url';
|
157 |
|
158 |
//Validate nofollow
|
152 |
foreach ($import as $link) {
|
153 |
|
154 |
//Validate destination type
|
155 |
+
if ($link['to_type'] != 'url'
|
156 |
+
&& !sustr::startswith($link['to_type'], 'posttype_')
|
157 |
+
&& !sustr::startswith($link['to_type'], 'taxonomy_'))
|
158 |
$link['to_type'] = 'url';
|
159 |
|
160 |
//Validate nofollow
|
plugin/class.seo-ultimate.php
CHANGED
@@ -212,6 +212,8 @@ class SEO_Ultimate {
|
|
212 |
suwp::remove_instance_action('admin_footer', 'RobotsMeta_Admin', 'blog_public_warning');
|
213 |
}
|
214 |
|
|
|
|
|
215 |
//When loading the admin menu, call on our menu constructor function.
|
216 |
//For future-proofing purposes, we specifically state the default priority of 10,
|
217 |
//since some modules set a priority of 9 with the specific intention of running
|
@@ -234,6 +236,9 @@ class SEO_Ultimate {
|
|
234 |
|
235 |
//Add module links to plugin listing
|
236 |
add_filter('plugin_row_meta', array(&$this, 'plugin_row_meta_filter'), 10, 2);
|
|
|
|
|
|
|
237 |
}
|
238 |
}
|
239 |
|
@@ -604,6 +609,22 @@ class SEO_Ultimate {
|
|
604 |
}
|
605 |
}
|
606 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
607 |
/**
|
608 |
* Gets the value of a module setting.
|
609 |
*
|
@@ -1626,5 +1647,73 @@ class SEO_Ultimate {
|
|
1626 |
|
1627 |
return $this->plugin_dir_path.'modules/documentation.txt';
|
1628 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1629 |
}
|
1630 |
?>
|
212 |
suwp::remove_instance_action('admin_footer', 'RobotsMeta_Admin', 'blog_public_warning');
|
213 |
}
|
214 |
|
215 |
+
add_action('admin_init', array(&$this, 'admin_init'));
|
216 |
+
|
217 |
//When loading the admin menu, call on our menu constructor function.
|
218 |
//For future-proofing purposes, we specifically state the default priority of 10,
|
219 |
//since some modules set a priority of 9 with the specific intention of running
|
236 |
|
237 |
//Add module links to plugin listing
|
238 |
add_filter('plugin_row_meta', array(&$this, 'plugin_row_meta_filter'), 10, 2);
|
239 |
+
|
240 |
+
//JLSuggest AJAX
|
241 |
+
add_action('wp_ajax_su-jlsuggest-autocomplete', array(&$this, 'jlsuggest_autocomplete'));
|
242 |
}
|
243 |
}
|
244 |
|
609 |
}
|
610 |
}
|
611 |
|
612 |
+
/**
|
613 |
+
* Attached to WordPress' admin_init hook.
|
614 |
+
* Calls the admin_page_init() function of the current module(s).
|
615 |
+
*
|
616 |
+
* @since 6.0
|
617 |
+
* @uses $modules
|
618 |
+
* @uses SU_Module::is_module_admin_page()
|
619 |
+
* @uses SU_Module::admin_page_init()
|
620 |
+
*/
|
621 |
+
function admin_init() {
|
622 |
+
foreach ($this->modules as $key => $x_module) {
|
623 |
+
if ($this->modules[$key]->is_module_admin_page())
|
624 |
+
$this->modules[$key]->admin_page_init();
|
625 |
+
}
|
626 |
+
}
|
627 |
+
|
628 |
/**
|
629 |
* Gets the value of a module setting.
|
630 |
*
|
1647 |
|
1648 |
return $this->plugin_dir_path.'modules/documentation.txt';
|
1649 |
}
|
1650 |
+
|
1651 |
+
/********** JLSUGGEST **********/
|
1652 |
+
|
1653 |
+
/**
|
1654 |
+
* Outputs a JSON-encoded list of posts and terms on the blog.
|
1655 |
+
*
|
1656 |
+
* @since 6.0
|
1657 |
+
*/
|
1658 |
+
function jlsuggest_autocomplete() {
|
1659 |
+
|
1660 |
+
if ( !function_exists('json_encode') ) die();
|
1661 |
+
if ( !current_user_can( 'manage_options' ) ) die();
|
1662 |
+
|
1663 |
+
$items = array();
|
1664 |
+
|
1665 |
+
$posttypeobjs = suwp::get_post_type_objects();
|
1666 |
+
foreach ($posttypeobjs as $posttypeobj) {
|
1667 |
+
|
1668 |
+
$stati = get_available_post_statuses($posttypeobj->name);
|
1669 |
+
suarr::remove_value($stati, 'auto-draft');
|
1670 |
+
$stati = implode(',', $stati);
|
1671 |
+
|
1672 |
+
$posts = get_posts(array(
|
1673 |
+
'orderby' => 'title'
|
1674 |
+
, 'order' => 'ASC'
|
1675 |
+
, 'post_status' => $stati
|
1676 |
+
, 'numberposts' => -1
|
1677 |
+
, 'post_type' => $posttypeobj->name
|
1678 |
+
, 'sentence' => 1
|
1679 |
+
, 's' => $_GET['q']
|
1680 |
+
));
|
1681 |
+
|
1682 |
+
if (count($posts)) {
|
1683 |
+
|
1684 |
+
$items[] = array('text' => $posttypeobj->labels->name, 'isheader' => true);
|
1685 |
+
|
1686 |
+
foreach ($posts as $post)
|
1687 |
+
$items[] = array(
|
1688 |
+
'text' => $post->post_title
|
1689 |
+
, 'value' => 'obj_posttype_' . $posttypeobj->name . '/' . $post->ID
|
1690 |
+
, 'selectedtext' => $post->post_title . '<span class="type"> — '.$posttypeobj->labels->singular_name.'</span>'
|
1691 |
+
);
|
1692 |
+
}
|
1693 |
+
}
|
1694 |
+
|
1695 |
+
$taxonomyobjs = suwp::get_taxonomies();
|
1696 |
+
foreach ($taxonomyobjs as $taxonomyobj) {
|
1697 |
+
|
1698 |
+
$terms = get_terms($taxonomyobj->name, array(
|
1699 |
+
'search' => esc_sql($_GET['q']) //The esc_sql() is very important: get_terms does NOT sanitize the "search" variable for SQL queries prior to 3.1.3
|
1700 |
+
));
|
1701 |
+
|
1702 |
+
if (count($terms)) {
|
1703 |
+
|
1704 |
+
$items[] = array('text' => $taxonomyobj->labels->name, 'isheader' => true);
|
1705 |
+
|
1706 |
+
foreach ($terms as $term)
|
1707 |
+
$items[] = array(
|
1708 |
+
'text' => $term->name
|
1709 |
+
, 'value' => 'obj_taxonomy_' . $taxonomyobj->name . '/' . $term->term_id
|
1710 |
+
, 'selectedtext' => $term->name . '<span class="type"> — '.$taxonomyobj->labels->singular_name.'</span>'
|
1711 |
+
);
|
1712 |
+
}
|
1713 |
+
}
|
1714 |
+
|
1715 |
+
echo json_encode($items);
|
1716 |
+
die();
|
1717 |
+
}
|
1718 |
}
|
1719 |
?>
|
readme.txt
CHANGED
@@ -3,19 +3,19 @@ Contributors: SEO Design Solutions, JohnLamansky
|
|
3 |
Tags: seo, SEO Ultimate, suite, google, yahoo, bing, search engines, admin, post, page, custom post types, categories, tags, terms, custom taxonomies, base, title, meta, robots, noindex, nofollow, canonical, 404, robots.txt, htaccess, slugs, url, anchor, more, link, excerpt, permalink, links, autolinks, code, footer, modules, uninstallable, reinstallable, downgradable, import, export, CSV, affiliate
|
4 |
Requires at least: 3.0
|
5 |
Tested up to: 3.1
|
6 |
-
Stable tag:
|
7 |
|
8 |
This all-in-one SEO plugin gives you control over title tags, noindex, meta tags, slugs, canonical, autolinks, 404 errors, rich snippets, and more.
|
9 |
|
10 |
== Description ==
|
11 |
-
|
12 |
= Recent Releases =
|
13 |
|
|
|
14 |
* Version 5.9 adds default category/tag meta description formats
|
15 |
* Version 5.8 adds the Permalink Tweaker module
|
16 |
* Version 5.7 adds mass-editing for post format archives
|
17 |
* Version 5.6 adds the Nofollow Manager module
|
18 |
-
* Version 5.5 adds noindex/nofollow mass-editing for categories/tags/terms
|
19 |
|
20 |
= Features =
|
21 |
|
@@ -34,7 +34,7 @@ SEO Ultimate is an all-in-one [SEO](http://www.seodesignsolutions.com/) plugin w
|
|
34 |
* Use the `{excerpt::autogen}` variable to auto-generate meta descriptions if desired.
|
35 |
|
36 |
* **Meta Keywords Editor**
|
37 |
-
* Edit the `<meta>` keyword tags for posts, pages, and the homepage.
|
38 |
* Easily specify global keywords that are applied across the entire site.
|
39 |
* Go back and edit old posts' and pages' keywords with the mass-editor.
|
40 |
* Automatically generate meta keywords based on categories, tags, custom taxonomy terms, and frequently-used words.
|
@@ -44,7 +44,19 @@ SEO Ultimate is an all-in-one [SEO](http://www.seodesignsolutions.com/) plugin w
|
|
44 |
* Set meta robots tags (index/noindex and follow/nofollow) for each individual post, page, category, tag, and post type archive on your blog. Also supports custom post types and custom taxonomies.
|
45 |
* Avoid duplicate content SEO issues with the recommended noindex settings (see built-in module documentation for details).
|
46 |
* Give instructions to search engine spiders if desired (`noodp`, `noydir`, and `noarchive`).
|
47 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
* **Canonicalizer**
|
49 |
* Point search engines to preferred content access points with `<link rel="canonical" />` SEO tags.
|
50 |
* Go beyond the basic canonical tag functionality of WordPress 2.9+ with SEO Ultimate's support for category/tag/date/author archives.
|
@@ -84,16 +96,6 @@ SEO Ultimate is an all-in-one [SEO](http://www.seodesignsolutions.com/) plugin w
|
|
84 |
* Determine which of your webpages Google most strongly associates with the keywords you specify.
|
85 |
* Use the information to determine ideal targets for incoming links or ideal sources of outgoing links.
|
86 |
|
87 |
-
* **Deeplink Juggernaut**
|
88 |
-
* Automatically link phrases in your posts/pages to other posts/pages or to custom URLs.
|
89 |
-
* Exclude specific posts/pages from having links added to them, if desired (e.g. contact pages, the homepage, etc.).
|
90 |
-
* Use the power of anchor text to boost your internal ranking SEO paradigm.
|
91 |
-
* Control the maximum number of autolinks added to each post/page as well as the number of times an anchor is linked per page.
|
92 |
-
* Apply the nofollow attribute on a per-link basis. (Perfect for automatic affiliate links.)
|
93 |
-
* Import/export your links as CSV files.
|
94 |
-
* Create links pointing to draft posts that will auto-enable when the post is published!
|
95 |
-
* Build internal links to your posts from within the WordPress post editor! Use "Instant Post Propulsion" technology to automatically link your old posts to new ones.
|
96 |
-
|
97 |
* **Code Inserter**
|
98 |
* Easily insert custom HTML into your site's `<head>` tag, footer, or item content.
|
99 |
* Use to add Google Analytics, Feedburner FeedFlare, Google AdSense section targeting, and other SEO/SEM-enhancing code snippets.
|
@@ -232,6 +234,15 @@ Frequently asked questions, settings help, and troubleshooting tips for SEO Ulti
|
|
232 |
|
233 |
== Changelog ==
|
234 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
235 |
= Version 5.9 (June 17, 2011) =
|
236 |
* Feature: Meta Description Editor now supports default formats for category/tag archives, starting with support for the `{description}` variable.
|
237 |
* Feature: Meta Keywords Editor now has mass-editors for categories, tags, post format archives, and custom taxonomy term archives
|
3 |
Tags: seo, SEO Ultimate, suite, google, yahoo, bing, search engines, admin, post, page, custom post types, categories, tags, terms, custom taxonomies, base, title, meta, robots, noindex, nofollow, canonical, 404, robots.txt, htaccess, slugs, url, anchor, more, link, excerpt, permalink, links, autolinks, code, footer, modules, uninstallable, reinstallable, downgradable, import, export, CSV, affiliate
|
4 |
Requires at least: 3.0
|
5 |
Tested up to: 3.1
|
6 |
+
Stable tag: 6.0
|
7 |
|
8 |
This all-in-one SEO plugin gives you control over title tags, noindex, meta tags, slugs, canonical, autolinks, 404 errors, rich snippets, and more.
|
9 |
|
10 |
== Description ==
|
11 |
+
|
12 |
= Recent Releases =
|
13 |
|
14 |
+
* Version 6.0 features Deeplink Juggernaut 2.0
|
15 |
* Version 5.9 adds default category/tag meta description formats
|
16 |
* Version 5.8 adds the Permalink Tweaker module
|
17 |
* Version 5.7 adds mass-editing for post format archives
|
18 |
* Version 5.6 adds the Nofollow Manager module
|
|
|
19 |
|
20 |
= Features =
|
21 |
|
34 |
* Use the `{excerpt::autogen}` variable to auto-generate meta descriptions if desired.
|
35 |
|
36 |
* **Meta Keywords Editor**
|
37 |
+
* Edit the `<meta>` keyword tags for posts, pages, categories, terms, and the homepage.
|
38 |
* Easily specify global keywords that are applied across the entire site.
|
39 |
* Go back and edit old posts' and pages' keywords with the mass-editor.
|
40 |
* Automatically generate meta keywords based on categories, tags, custom taxonomy terms, and frequently-used words.
|
44 |
* Set meta robots tags (index/noindex and follow/nofollow) for each individual post, page, category, tag, and post type archive on your blog. Also supports custom post types and custom taxonomies.
|
45 |
* Avoid duplicate content SEO issues with the recommended noindex settings (see built-in module documentation for details).
|
46 |
* Give instructions to search engine spiders if desired (`noodp`, `noydir`, and `noarchive`).
|
47 |
+
|
48 |
+
* **Deeplink Juggernaut** -- REVAMPED in Version 6.0
|
49 |
+
* Use the power of anchor text to boost your internal ranking SEO paradigm.
|
50 |
+
* Searches your site's content for anchor texts you specify and automatically links them to a destination of your choosing. Lets you easily build internal links to URLs, posts, pages, attachments, custom post type items, categories, terms, post format archives, and custom taxonomy term archives.
|
51 |
+
* Easily select autolink destinations using autocomplete textboxes that scour your site's content and taxonomy terms to find the link destination you're looking for.
|
52 |
+
* Autolinks point to the objects themselves, not to their URLs, so if you change the URL of a post or category on your site, the autolinks automatically adjust.
|
53 |
+
* Control the maximum number of autolinks added to each post/page as well as the number of times an anchor is linked per page.
|
54 |
+
* Apply the nofollow attribute on a per-link basis. (Perfect for automatic affiliate links.)
|
55 |
+
* Exclude specific posts/pages from having links added to them, if desired (e.g. contact pages, the homepage, etc.).
|
56 |
+
* Import/export your links as CSV files.
|
57 |
+
* Create links pointing to draft posts that will auto-enable when the post is published!
|
58 |
+
* Build internal links to your posts from within the WordPress post editor! Use "Instant Post Propulsion" technology to automatically link your old posts to new ones.
|
59 |
+
|
60 |
* **Canonicalizer**
|
61 |
* Point search engines to preferred content access points with `<link rel="canonical" />` SEO tags.
|
62 |
* Go beyond the basic canonical tag functionality of WordPress 2.9+ with SEO Ultimate's support for category/tag/date/author archives.
|
96 |
* Determine which of your webpages Google most strongly associates with the keywords you specify.
|
97 |
* Use the information to determine ideal targets for incoming links or ideal sources of outgoing links.
|
98 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
99 |
* **Code Inserter**
|
100 |
* Easily insert custom HTML into your site's `<head>` tag, footer, or item content.
|
101 |
* Use to add Google Analytics, Feedburner FeedFlare, Google AdSense section targeting, and other SEO/SEM-enhancing code snippets.
|
234 |
|
235 |
== Changelog ==
|
236 |
|
237 |
+
= Version 6.0 (June 21, 2011) =
|
238 |
+
* Feature: Deeplink Juggernaut's "Destination Type" dropdowns have been replaced with snazzy autocomplete textboxes that let you link to a content item on your blog by typing the first few letters of its title
|
239 |
+
* Feature: Deeplink Juggernaut now lets you autolink to categories, tags, post format archives, and custom taxonomy term archives
|
240 |
+
* Improvement: The meta description field of the "SEO Settings" post box now indicates search engines use around 140 characters instead of 160, to better reflect current search engine trends
|
241 |
+
* Improvement: Improved layout of Meta Robot Tags mass-editors
|
242 |
+
* Bugfix: Deeplink Juggernaut's admin page no longer overruns memory limits on sites with lots of content
|
243 |
+
* Bugfix: Fixed errors that appeared on Deeplink Juggernaut's admin page when WP_DEBUG mode was enabled
|
244 |
+
* Bugfix: Fixed errors generated by Rich Snippet Creator when WP_DEBUG mode was enabled
|
245 |
+
|
246 |
= Version 5.9 (June 17, 2011) =
|
247 |
* Feature: Meta Description Editor now supports default formats for category/tag archives, starting with support for the `{description}` variable.
|
248 |
* Feature: Meta Keywords Editor now has mass-editors for categories, tags, post format archives, and custom taxonomy term archives
|
seo-ultimate.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: SEO Ultimate
|
4 |
Plugin URI: http://www.seodesignsolutions.com/wordpress-seo/
|
5 |
Description: This all-in-one SEO plugin gives you control over title tags, noindex/nofollow, meta tags, rich snippets, slugs, canonical tags, autolinks, 404 errors, rich snippets, and more.
|
6 |
-
Version:
|
7 |
Author: SEO Design Solutions
|
8 |
Author URI: http://www.seodesignsolutions.com/
|
9 |
Text Domain: seo-ultimate
|
@@ -12,7 +12,7 @@ Text Domain: seo-ultimate
|
|
12 |
/**
|
13 |
* The main SEO Ultimate plugin file.
|
14 |
* @package SeoUltimate
|
15 |
-
* @version
|
16 |
* @link http://www.seodesignsolutions.com/wordpress-seo/ SEO Ultimate Homepage
|
17 |
*/
|
18 |
|
@@ -47,10 +47,10 @@ define('SU_MINIMUM_WP_VER', '3.0');
|
|
47 |
//Reading plugin info from constants is faster than trying to parse it from the header above.
|
48 |
define('SU_PLUGIN_NAME', 'SEO Ultimate');
|
49 |
define('SU_PLUGIN_URI', 'http://www.seodesignsolutions.com/wordpress-seo/');
|
50 |
-
define('SU_VERSION', '
|
51 |
define('SU_AUTHOR', 'SEO Design Solutions');
|
52 |
define('SU_AUTHOR_URI', 'http://www.seodesignsolutions.com/');
|
53 |
-
define('SU_USER_AGENT', 'SeoUltimate/
|
54 |
|
55 |
/********** INCLUDES **********/
|
56 |
|
3 |
Plugin Name: SEO Ultimate
|
4 |
Plugin URI: http://www.seodesignsolutions.com/wordpress-seo/
|
5 |
Description: This all-in-one SEO plugin gives you control over title tags, noindex/nofollow, meta tags, rich snippets, slugs, canonical tags, autolinks, 404 errors, rich snippets, and more.
|
6 |
+
Version: 6.0
|
7 |
Author: SEO Design Solutions
|
8 |
Author URI: http://www.seodesignsolutions.com/
|
9 |
Text Domain: seo-ultimate
|
12 |
/**
|
13 |
* The main SEO Ultimate plugin file.
|
14 |
* @package SeoUltimate
|
15 |
+
* @version 6.0
|
16 |
* @link http://www.seodesignsolutions.com/wordpress-seo/ SEO Ultimate Homepage
|
17 |
*/
|
18 |
|
47 |
//Reading plugin info from constants is faster than trying to parse it from the header above.
|
48 |
define('SU_PLUGIN_NAME', 'SEO Ultimate');
|
49 |
define('SU_PLUGIN_URI', 'http://www.seodesignsolutions.com/wordpress-seo/');
|
50 |
+
define('SU_VERSION', '6.0');
|
51 |
define('SU_AUTHOR', 'SEO Design Solutions');
|
52 |
define('SU_AUTHOR_URI', 'http://www.seodesignsolutions.com/');
|
53 |
+
define('SU_USER_AGENT', 'SeoUltimate/6.0');
|
54 |
|
55 |
/********** INCLUDES **********/
|
56 |
|
seo-ultimate.pot
CHANGED
@@ -2,9 +2,9 @@
|
|
2 |
# This file is distributed under the same license as the SEO Ultimate package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: SEO Ultimate
|
6 |
"Report-Msgid-Bugs-To: http://wordpress.org/tag/seo-ultimate\n"
|
7 |
-
"POT-Creation-Date: 2011-06-
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -19,93 +19,93 @@ msgid ""
|
|
19 |
"Ultimate to remove this notice."
|
20 |
msgstr ""
|
21 |
|
22 |
-
#. #-#-#-#-# plugin.pot (SEO Ultimate
|
23 |
#. Plugin Name of the plugin/theme
|
24 |
-
#: plugin/class.seo-ultimate.php:
|
25 |
msgid "SEO Ultimate"
|
26 |
msgstr ""
|
27 |
|
28 |
-
#: plugin/class.seo-ultimate.php:
|
29 |
msgid "SEO"
|
30 |
msgstr ""
|
31 |
|
32 |
-
#: plugin/class.seo-ultimate.php:
|
33 |
msgid ""
|
34 |
"It looks like you made changes to the settings of this SEO Ultimate module. "
|
35 |
"If you leave before saving, those changes will be lost."
|
36 |
msgstr ""
|
37 |
|
38 |
-
#: plugin/class.seo-ultimate.php:
|
39 |
msgid "SEO Settings Help"
|
40 |
msgstr ""
|
41 |
|
42 |
-
#: plugin/class.seo-ultimate.php:
|
43 |
msgid "The SEO Settings box lets you customize these settings:"
|
44 |
msgstr ""
|
45 |
|
46 |
-
#: plugin/class.seo-ultimate.php:
|
47 |
msgid "(The SEO Settings box is part of the SEO Ultimate plugin.)"
|
48 |
msgstr ""
|
49 |
|
50 |
-
#: plugin/class.seo-ultimate.php:
|
51 |
msgid ""
|
52 |
"SEO Ultimate includes the functionality of %1$s. You may want to deactivate %"
|
53 |
"1$s to avoid plugin conflicts."
|
54 |
msgstr ""
|
55 |
|
56 |
-
#: plugin/class.seo-ultimate.php:
|
57 |
msgid "new feature"
|
58 |
msgstr ""
|
59 |
|
60 |
-
#: plugin/class.seo-ultimate.php:
|
61 |
msgid "new features"
|
62 |
msgstr ""
|
63 |
|
64 |
-
#: plugin/class.seo-ultimate.php:
|
65 |
msgid "bugfix"
|
66 |
msgstr ""
|
67 |
|
68 |
-
#: plugin/class.seo-ultimate.php:
|
69 |
msgid "bugfixes"
|
70 |
msgstr ""
|
71 |
|
72 |
-
#: plugin/class.seo-ultimate.php:
|
73 |
msgid "improvement"
|
74 |
msgstr ""
|
75 |
|
76 |
-
#: plugin/class.seo-ultimate.php:
|
77 |
msgid "improvements"
|
78 |
msgstr ""
|
79 |
|
80 |
-
#: plugin/class.seo-ultimate.php:
|
81 |
msgid "security fix"
|
82 |
msgstr ""
|
83 |
|
84 |
-
#: plugin/class.seo-ultimate.php:
|
85 |
msgid "security fixes"
|
86 |
msgstr ""
|
87 |
|
88 |
-
#: plugin/class.seo-ultimate.php:
|
89 |
msgid "%d %s"
|
90 |
msgstr ""
|
91 |
|
92 |
-
#: plugin/class.seo-ultimate.php:
|
93 |
msgid "Upgrade now to get %s. %s."
|
94 |
msgstr ""
|
95 |
|
96 |
-
#: plugin/class.seo-ultimate.php:
|
97 |
msgid "View changelog"
|
98 |
msgstr ""
|
99 |
|
100 |
-
#: plugin/class.seo-ultimate.php:
|
101 |
msgid "Uninstall"
|
102 |
msgstr ""
|
103 |
|
104 |
-
#: plugin/class.seo-ultimate.php:
|
105 |
msgid "Active Modules: "
|
106 |
msgstr ""
|
107 |
|
108 |
-
#: plugin/class.seo-ultimate.php:
|
109 |
msgid ""
|
110 |
"<strong>SEO Ultimate Notice:</strong> Your blog is configured to block "
|
111 |
"search engine spiders. To resolve this, <a href=\"options-privacy.php\" "
|
@@ -113,7 +113,7 @@ msgid ""
|
|
113 |
"to everyone."
|
114 |
msgstr ""
|
115 |
|
116 |
-
#: plugin/class.seo-ultimate.php:
|
117 |
msgid "SEO Settings"
|
118 |
msgstr ""
|
119 |
|
@@ -234,7 +234,7 @@ msgstr ""
|
|
234 |
msgid "Post Format Archives"
|
235 |
msgstr ""
|
236 |
|
237 |
-
#: includes/jlwp/functions.php:
|
238 |
msgid "backup your database"
|
239 |
msgstr ""
|
240 |
|
@@ -246,7 +246,7 @@ msgstr ""
|
|
246 |
msgid "Log"
|
247 |
msgstr ""
|
248 |
|
249 |
-
#: modules/404s/fofs-log.php:116 modules/class.su-module.php:
|
250 |
msgid "Actions"
|
251 |
msgstr ""
|
252 |
|
@@ -404,7 +404,7 @@ msgstr ""
|
|
404 |
msgid "Export"
|
405 |
msgstr ""
|
406 |
|
407 |
-
#: modules/settings/settings-data.php:23 modules/class.su-module.php:
|
408 |
msgid "Reset"
|
409 |
msgstr ""
|
410 |
|
@@ -433,25 +433,25 @@ msgid ""
|
|
433 |
"The uploaded file is not in the proper format. Links could not be imported."
|
434 |
msgstr ""
|
435 |
|
436 |
-
#: modules/settings/settings-data.php:
|
437 |
msgid "Links successfully imported."
|
438 |
msgstr ""
|
439 |
|
440 |
-
#: modules/settings/settings-data.php:
|
441 |
msgid "The CSV file could not be uploaded successfully."
|
442 |
msgstr ""
|
443 |
|
444 |
-
#: modules/settings/settings-data.php:
|
445 |
msgid ""
|
446 |
"Links could not be imported because no CSV file was selected. Please click "
|
447 |
"the “Browse” button and select a file to import."
|
448 |
msgstr ""
|
449 |
|
450 |
-
#: modules/settings/settings-data.php:
|
451 |
msgid "Import SEO Ultimate Settings File"
|
452 |
msgstr ""
|
453 |
|
454 |
-
#: modules/settings/settings-data.php:
|
455 |
msgid ""
|
456 |
"You can use this form to upload and import an SEO Ultimate settings file "
|
457 |
"stored on your computer. (These files can be created using the Export tool.) "
|
@@ -459,21 +459,21 @@ msgid ""
|
|
459 |
"in the file."
|
460 |
msgstr ""
|
461 |
|
462 |
-
#: modules/settings/settings-data.php:
|
463 |
msgid ""
|
464 |
"Are you sure you want to import this settings file? This will overwrite your "
|
465 |
"current settings and cannot be undone."
|
466 |
msgstr ""
|
467 |
|
468 |
-
#: modules/settings/settings-data.php:
|
469 |
msgid "Import Settings File"
|
470 |
msgstr ""
|
471 |
|
472 |
-
#: modules/settings/settings-data.php:
|
473 |
msgid "Import Deeplink Juggernaut CSV File"
|
474 |
msgstr ""
|
475 |
|
476 |
-
#: modules/settings/settings-data.php:
|
477 |
msgid ""
|
478 |
"You can use this form to upload and import a Deeplink Juggernaut CSV file "
|
479 |
"stored on your computer. (These files can be created using the Export tool.) "
|
@@ -481,38 +481,38 @@ msgid ""
|
|
481 |
"the file."
|
482 |
msgstr ""
|
483 |
|
484 |
-
#: modules/settings/settings-data.php:
|
485 |
msgid ""
|
486 |
"Are you sure you want to import this CSV file? This will overwrite your "
|
487 |
"current Deeplink Juggernaut links and cannot be undone."
|
488 |
msgstr ""
|
489 |
|
490 |
-
#: modules/settings/settings-data.php:
|
491 |
msgid "Import CSV File"
|
492 |
msgstr ""
|
493 |
|
494 |
-
#: modules/settings/settings-data.php:
|
495 |
msgid "Import from Other Plugins"
|
496 |
msgstr ""
|
497 |
|
498 |
-
#: modules/settings/settings-data.php:
|
499 |
msgid ""
|
500 |
"You can import settings and data from these plugins. Clicking a plugin’"
|
501 |
"s name will take you to the importer page, where you can customize "
|
502 |
"parameters and start the import."
|
503 |
msgstr ""
|
504 |
|
505 |
-
#: modules/settings/settings-data.php:
|
506 |
msgid "Export SEO Ultimate Settings File"
|
507 |
msgstr ""
|
508 |
|
509 |
-
#: modules/settings/settings-data.php:
|
510 |
msgid ""
|
511 |
"You can use this export tool to download an SEO Ultimate settings file to "
|
512 |
"your computer."
|
513 |
msgstr ""
|
514 |
|
515 |
-
#: modules/settings/settings-data.php:
|
516 |
msgid ""
|
517 |
"A settings file includes the data of every checkbox and textbox of every "
|
518 |
"installed module. It does NOT include site-specific data like logged 404s or "
|
@@ -520,15 +520,15 @@ msgid ""
|
|
520 |
"database backup, however)."
|
521 |
msgstr ""
|
522 |
|
523 |
-
#: modules/settings/settings-data.php:
|
524 |
msgid "Download Settings File"
|
525 |
msgstr ""
|
526 |
|
527 |
-
#: modules/settings/settings-data.php:
|
528 |
msgid "Export Deeplink Juggernaut CSV File"
|
529 |
msgstr ""
|
530 |
|
531 |
-
#: modules/settings/settings-data.php:
|
532 |
msgid ""
|
533 |
"You can use this export tool to download a CSV file (comma-separated values "
|
534 |
"file) that contains your Deeplink Juggernaut links. Once you download this "
|
@@ -537,26 +537,26 @@ msgid ""
|
|
537 |
"the Import tool."
|
538 |
msgstr ""
|
539 |
|
540 |
-
#: modules/settings/settings-data.php:
|
541 |
msgid "Download CSV File"
|
542 |
msgstr ""
|
543 |
|
544 |
-
#: modules/settings/settings-data.php:
|
545 |
msgid "All settings have been erased and defaults have been restored."
|
546 |
msgstr ""
|
547 |
|
548 |
-
#: modules/settings/settings-data.php:
|
549 |
msgid ""
|
550 |
"You can erase all your SEO Ultimate settings and restore them to “"
|
551 |
"factory defaults” by clicking the button below."
|
552 |
msgstr ""
|
553 |
|
554 |
-
#: modules/settings/settings-data.php:
|
555 |
msgid ""
|
556 |
"Are you sure you want to erase all module settings? This cannot be undone."
|
557 |
msgstr ""
|
558 |
|
559 |
-
#: modules/settings/settings-data.php:
|
560 |
msgid "Restore Default Settings"
|
561 |
msgstr ""
|
562 |
|
@@ -922,79 +922,62 @@ msgstr ""
|
|
922 |
msgid "Content Links"
|
923 |
msgstr ""
|
924 |
|
925 |
-
#: modules/autolinks/content-autolinks.php:
|
926 |
msgid ""
|
927 |
"The Content Links section of Deeplink Juggernaut lets you automatically link "
|
928 |
"a certain word or phrase in your post/page content to a URL you specify."
|
929 |
msgstr ""
|
930 |
|
931 |
-
#: modules/autolinks/content-autolinks.php:
|
932 |
msgid "Edit Existing Links"
|
933 |
msgstr ""
|
934 |
|
935 |
-
#: modules/autolinks/content-autolinks.php:
|
936 |
msgid "Add a New Link"
|
937 |
msgstr ""
|
938 |
|
939 |
-
#: modules/autolinks/content-autolinks.php:
|
940 |
msgid "Anchor Text"
|
941 |
msgstr ""
|
942 |
|
943 |
-
#: modules/autolinks/content-autolinks.php:
|
944 |
-
msgid "Destination Type"
|
945 |
-
msgstr ""
|
946 |
-
|
947 |
-
#: modules/autolinks/content-autolinks.php:150
|
948 |
msgid "Destination"
|
949 |
msgstr ""
|
950 |
|
951 |
-
#: modules/autolinks/content-autolinks.php:
|
952 |
msgid "Title Attribute"
|
953 |
msgstr ""
|
954 |
|
955 |
-
#: modules/autolinks/content-autolinks.php:
|
956 |
msgid "Options"
|
957 |
msgstr ""
|
958 |
|
959 |
-
#: modules/autolinks/content-autolinks.php:
|
960 |
msgid "Delete"
|
961 |
msgstr ""
|
962 |
|
963 |
-
#: modules/autolinks/content-autolinks.php:
|
964 |
-
msgid "Custom"
|
965 |
-
msgstr ""
|
966 |
-
|
967 |
-
#: modules/autolinks/content-autolinks.php:196
|
968 |
-
#: modules/internal-link-aliases/internal-link-aliases.php:49
|
969 |
-
msgid "URL"
|
970 |
-
msgstr ""
|
971 |
-
|
972 |
-
#: modules/autolinks/content-autolinks.php:197
|
973 |
-
msgid "Content Items"
|
974 |
-
msgstr ""
|
975 |
-
|
976 |
-
#: modules/autolinks/content-autolinks.php:204 modules/noindex/noindex.php:54
|
977 |
#: modules/noindex/noindex.php:78
|
978 |
msgid "Nofollow"
|
979 |
msgstr ""
|
980 |
|
981 |
-
#: modules/autolinks/content-autolinks.php:
|
982 |
msgid "New window"
|
983 |
msgstr ""
|
984 |
|
985 |
-
#: modules/autolinks/content-autolinks.php:
|
986 |
msgid "Incoming Autolink Anchors:<br /><em>(one per line)</em>"
|
987 |
msgstr ""
|
988 |
|
989 |
-
#: modules/autolinks/content-autolinks.php:
|
990 |
msgid "Don’t add autolinks to anchor texts found in this post."
|
991 |
msgstr ""
|
992 |
|
993 |
-
#: modules/autolinks/content-autolinks.php:
|
994 |
msgid "Autolink Exclusion:"
|
995 |
msgstr ""
|
996 |
|
997 |
-
#: modules/autolinks/content-autolinks.php:
|
998 |
msgid ""
|
999 |
"<strong>Incoming Autolink Anchors</strong> — When you enter anchors "
|
1000 |
"into this box, Deeplink Juggernaut will search for that anchor in all your "
|
@@ -1009,6 +992,16 @@ msgstr ""
|
|
1009 |
msgid "Deeplink Juggernaut"
|
1010 |
msgstr ""
|
1011 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1012 |
#: modules/autolinks/content-autolinks-settings.php:16
|
1013 |
msgid "Content Deeplink Juggernaut Settings"
|
1014 |
msgstr ""
|
@@ -1126,69 +1119,81 @@ msgstr ""
|
|
1126 |
msgid "Meta Robots Tag:"
|
1127 |
msgstr ""
|
1128 |
|
1129 |
-
#: modules/class.su-module.php:
|
1130 |
msgid ""
|
1131 |
"(Note: This translated documentation was designed for an older version of "
|
1132 |
"SEO Ultimate and may be outdated.)"
|
1133 |
msgstr ""
|
1134 |
|
1135 |
-
#: modules/class.su-module.php:
|
1136 |
msgid ""
|
1137 |
"All the modules on this page have been disabled. You can re-enable them "
|
1138 |
"using the <a href=\"%s\">Module Manager</a>."
|
1139 |
msgstr ""
|
1140 |
|
1141 |
-
#: modules/class.su-module.php:
|
1142 |
msgctxt "Dropdown Title"
|
1143 |
msgid "%s — %s"
|
1144 |
msgstr ""
|
1145 |
|
1146 |
-
#: modules/class.su-module.php:
|
1147 |
msgid "%1$s | %2$s %3$s by %4$s"
|
1148 |
msgstr ""
|
1149 |
|
1150 |
-
#: modules/class.su-module.php:
|
1151 |
msgid "Your site currently doesn’t have any public items of this type."
|
1152 |
msgstr ""
|
1153 |
|
1154 |
-
#: modules/class.su-module.php:
|
1155 |
msgid "«"
|
1156 |
msgstr ""
|
1157 |
|
1158 |
-
#: modules/class.su-module.php:
|
1159 |
msgid "»"
|
1160 |
msgstr ""
|
1161 |
|
1162 |
-
#: modules/class.su-module.php:
|
1163 |
msgid "Displaying %s–%s of %s"
|
1164 |
msgstr ""
|
1165 |
|
1166 |
-
#: modules/class.su-module.php:
|
1167 |
msgid "ID"
|
1168 |
msgstr ""
|
1169 |
|
1170 |
-
#: modules/class.su-module.php:
|
1171 |
msgid "View"
|
1172 |
msgstr ""
|
1173 |
|
1174 |
-
#: modules/class.su-module.php:
|
1175 |
msgid "Edit"
|
1176 |
msgstr ""
|
1177 |
|
1178 |
-
#: modules/class.su-module.php:
|
1179 |
msgid "Settings updated."
|
1180 |
msgstr ""
|
1181 |
|
1182 |
-
#: modules/class.su-module.php:
|
1183 |
msgid "Save Changes"
|
1184 |
msgstr ""
|
1185 |
|
1186 |
-
#: modules/class.su-module.php:
|
1187 |
msgid ""
|
1188 |
"Are you sure you want to replace the textbox contents with this default "
|
1189 |
"value?"
|
1190 |
msgstr ""
|
1191 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1192 |
#: modules/meta/webmaster-verify.php:12
|
1193 |
msgid "Webmaster Verification Assistant"
|
1194 |
msgstr ""
|
@@ -1260,31 +1265,39 @@ msgstr ""
|
|
1260 |
msgid "Meta Description"
|
1261 |
msgstr ""
|
1262 |
|
1263 |
-
#: modules/meta/meta-descriptions.php:
|
1264 |
msgid "Post Description Format"
|
1265 |
msgstr ""
|
1266 |
|
1267 |
-
#: modules/meta/meta-descriptions.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1268 |
msgid "Blog Homepage Meta Description"
|
1269 |
msgstr ""
|
1270 |
|
1271 |
-
#: modules/meta/meta-descriptions.php:
|
1272 |
msgid "Use this blog’s tagline as the default homepage description."
|
1273 |
msgstr ""
|
1274 |
|
1275 |
-
#: modules/meta/meta-descriptions.php:
|
1276 |
msgid "Default Value"
|
1277 |
msgstr ""
|
1278 |
|
1279 |
-
#: modules/meta/meta-descriptions.php:
|
1280 |
msgid "Meta Description:"
|
1281 |
msgstr ""
|
1282 |
|
1283 |
-
#: modules/meta/meta-descriptions.php:
|
1284 |
-
msgid "You’ve entered %s characters. Most search engines use up to
|
1285 |
msgstr ""
|
1286 |
|
1287 |
-
#: modules/meta/meta-descriptions.php:
|
1288 |
msgid ""
|
1289 |
"<strong>Description</strong> — The value of the meta description tag. "
|
1290 |
"The description will often appear underneath the title in search engine "
|
@@ -1448,7 +1461,7 @@ msgstr ""
|
|
1448 |
msgid "SEO Design Solutions Whitepapers"
|
1449 |
msgstr ""
|
1450 |
|
1451 |
-
#. #-#-#-#-# plugin.pot (SEO Ultimate
|
1452 |
#. Author of the plugin/theme
|
1453 |
#: modules/sds-blog/sds-blog.php:49
|
1454 |
msgid "SEO Design Solutions"
|
@@ -1473,6 +1486,10 @@ msgstr ""
|
|
1473 |
msgid "Link Masks"
|
1474 |
msgstr ""
|
1475 |
|
|
|
|
|
|
|
|
|
1476 |
#: modules/internal-link-aliases/internal-link-aliases.php:49
|
1477 |
msgid "Mask URL"
|
1478 |
msgstr ""
|
@@ -1834,7 +1851,7 @@ msgid "RDFa"
|
|
1834 |
msgstr ""
|
1835 |
|
1836 |
#: modules/rich-snippets/rich-snippets.php:62
|
1837 |
-
#: modules/rich-snippets/rich-snippets.php:
|
1838 |
msgid "Review"
|
1839 |
msgstr ""
|
1840 |
|
@@ -1850,56 +1867,56 @@ msgstr ""
|
|
1850 |
msgid "Date Reviewed"
|
1851 |
msgstr ""
|
1852 |
|
1853 |
-
#: modules/rich-snippets/rich-snippets.php:
|
1854 |
-
#: modules/rich-snippets/rich-snippets.php:
|
1855 |
msgid "None"
|
1856 |
msgstr ""
|
1857 |
|
1858 |
-
#: modules/rich-snippets/rich-snippets.php:
|
1859 |
msgid "Rich Snippet Type:"
|
1860 |
msgstr ""
|
1861 |
|
1862 |
-
#: modules/rich-snippets/rich-snippets.php:
|
1863 |
msgid "0.5 stars"
|
1864 |
msgstr ""
|
1865 |
|
1866 |
-
#: modules/rich-snippets/rich-snippets.php:
|
1867 |
msgid "1 star"
|
1868 |
msgstr ""
|
1869 |
|
1870 |
-
#: modules/rich-snippets/rich-snippets.php:
|
1871 |
msgid "1.5 stars"
|
1872 |
msgstr ""
|
1873 |
|
1874 |
-
#: modules/rich-snippets/rich-snippets.php:
|
1875 |
msgid "2 stars"
|
1876 |
msgstr ""
|
1877 |
|
1878 |
-
#: modules/rich-snippets/rich-snippets.php:
|
1879 |
msgid "2.5 stars"
|
1880 |
msgstr ""
|
1881 |
|
1882 |
-
#: modules/rich-snippets/rich-snippets.php:
|
1883 |
msgid "3 stars"
|
1884 |
msgstr ""
|
1885 |
|
1886 |
-
#: modules/rich-snippets/rich-snippets.php:
|
1887 |
msgid "3.5 stars"
|
1888 |
msgstr ""
|
1889 |
|
1890 |
-
#: modules/rich-snippets/rich-snippets.php:
|
1891 |
msgid "4 stars"
|
1892 |
msgstr ""
|
1893 |
|
1894 |
-
#: modules/rich-snippets/rich-snippets.php:
|
1895 |
msgid "4.5 stars"
|
1896 |
msgstr ""
|
1897 |
|
1898 |
-
#: modules/rich-snippets/rich-snippets.php:
|
1899 |
msgid "5 stars"
|
1900 |
msgstr ""
|
1901 |
|
1902 |
-
#: modules/rich-snippets/rich-snippets.php:
|
1903 |
msgid "Star Rating for Reviewed Item:"
|
1904 |
msgstr ""
|
1905 |
|
2 |
# This file is distributed under the same license as the SEO Ultimate package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: SEO Ultimate 6.0\n"
|
6 |
"Report-Msgid-Bugs-To: http://wordpress.org/tag/seo-ultimate\n"
|
7 |
+
"POT-Creation-Date: 2011-06-22 01:41:48+00:00\n"
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
19 |
"Ultimate to remove this notice."
|
20 |
msgstr ""
|
21 |
|
22 |
+
#. #-#-#-#-# plugin.pot (SEO Ultimate 6.0) #-#-#-#-#
|
23 |
#. Plugin Name of the plugin/theme
|
24 |
+
#: plugin/class.seo-ultimate.php:767 modules/settings/settings.php:14
|
25 |
msgid "SEO Ultimate"
|
26 |
msgstr ""
|
27 |
|
28 |
+
#: plugin/class.seo-ultimate.php:767
|
29 |
msgid "SEO"
|
30 |
msgstr ""
|
31 |
|
32 |
+
#: plugin/class.seo-ultimate.php:956
|
33 |
msgid ""
|
34 |
"It looks like you made changes to the settings of this SEO Ultimate module. "
|
35 |
"If you leave before saving, those changes will be lost."
|
36 |
msgstr ""
|
37 |
|
38 |
+
#: plugin/class.seo-ultimate.php:1050
|
39 |
msgid "SEO Settings Help"
|
40 |
msgstr ""
|
41 |
|
42 |
+
#: plugin/class.seo-ultimate.php:1052
|
43 |
msgid "The SEO Settings box lets you customize these settings:"
|
44 |
msgstr ""
|
45 |
|
46 |
+
#: plugin/class.seo-ultimate.php:1054
|
47 |
msgid "(The SEO Settings box is part of the SEO Ultimate plugin.)"
|
48 |
msgstr ""
|
49 |
|
50 |
+
#: plugin/class.seo-ultimate.php:1109
|
51 |
msgid ""
|
52 |
"SEO Ultimate includes the functionality of %1$s. You may want to deactivate %"
|
53 |
"1$s to avoid plugin conflicts."
|
54 |
msgstr ""
|
55 |
|
56 |
+
#: plugin/class.seo-ultimate.php:1150
|
57 |
msgid "new feature"
|
58 |
msgstr ""
|
59 |
|
60 |
+
#: plugin/class.seo-ultimate.php:1150
|
61 |
msgid "new features"
|
62 |
msgstr ""
|
63 |
|
64 |
+
#: plugin/class.seo-ultimate.php:1151
|
65 |
msgid "bugfix"
|
66 |
msgstr ""
|
67 |
|
68 |
+
#: plugin/class.seo-ultimate.php:1151
|
69 |
msgid "bugfixes"
|
70 |
msgstr ""
|
71 |
|
72 |
+
#: plugin/class.seo-ultimate.php:1152
|
73 |
msgid "improvement"
|
74 |
msgstr ""
|
75 |
|
76 |
+
#: plugin/class.seo-ultimate.php:1152
|
77 |
msgid "improvements"
|
78 |
msgstr ""
|
79 |
|
80 |
+
#: plugin/class.seo-ultimate.php:1153
|
81 |
msgid "security fix"
|
82 |
msgstr ""
|
83 |
|
84 |
+
#: plugin/class.seo-ultimate.php:1153
|
85 |
msgid "security fixes"
|
86 |
msgstr ""
|
87 |
|
88 |
+
#: plugin/class.seo-ultimate.php:1184
|
89 |
msgid "%d %s"
|
90 |
msgstr ""
|
91 |
|
92 |
+
#: plugin/class.seo-ultimate.php:1190
|
93 |
msgid "Upgrade now to get %s. %s."
|
94 |
msgstr ""
|
95 |
|
96 |
+
#: plugin/class.seo-ultimate.php:1192
|
97 |
msgid "View changelog"
|
98 |
msgstr ""
|
99 |
|
100 |
+
#: plugin/class.seo-ultimate.php:1259 modules/settings/uninstall.php:18
|
101 |
msgid "Uninstall"
|
102 |
msgstr ""
|
103 |
|
104 |
+
#: plugin/class.seo-ultimate.php:1279
|
105 |
msgid "Active Modules: "
|
106 |
msgstr ""
|
107 |
|
108 |
+
#: plugin/class.seo-ultimate.php:1340
|
109 |
msgid ""
|
110 |
"<strong>SEO Ultimate Notice:</strong> Your blog is configured to block "
|
111 |
"search engine spiders. To resolve this, <a href=\"options-privacy.php\" "
|
113 |
"to everyone."
|
114 |
msgstr ""
|
115 |
|
116 |
+
#: plugin/class.seo-ultimate.php:1450
|
117 |
msgid "SEO Settings"
|
118 |
msgstr ""
|
119 |
|
234 |
msgid "Post Format Archives"
|
235 |
msgstr ""
|
236 |
|
237 |
+
#: includes/jlwp/functions.php:148
|
238 |
msgid "backup your database"
|
239 |
msgstr ""
|
240 |
|
246 |
msgid "Log"
|
247 |
msgstr ""
|
248 |
|
249 |
+
#: modules/404s/fofs-log.php:116 modules/class.su-module.php:1204
|
250 |
msgid "Actions"
|
251 |
msgstr ""
|
252 |
|
404 |
msgid "Export"
|
405 |
msgstr ""
|
406 |
|
407 |
+
#: modules/settings/settings-data.php:23 modules/class.su-module.php:1951
|
408 |
msgid "Reset"
|
409 |
msgstr ""
|
410 |
|
433 |
"The uploaded file is not in the proper format. Links could not be imported."
|
434 |
msgstr ""
|
435 |
|
436 |
+
#: modules/settings/settings-data.php:175
|
437 |
msgid "Links successfully imported."
|
438 |
msgstr ""
|
439 |
|
440 |
+
#: modules/settings/settings-data.php:178
|
441 |
msgid "The CSV file could not be uploaded successfully."
|
442 |
msgstr ""
|
443 |
|
444 |
+
#: modules/settings/settings-data.php:181
|
445 |
msgid ""
|
446 |
"Links could not be imported because no CSV file was selected. Please click "
|
447 |
"the “Browse” button and select a file to import."
|
448 |
msgstr ""
|
449 |
|
450 |
+
#: modules/settings/settings-data.php:191
|
451 |
msgid "Import SEO Ultimate Settings File"
|
452 |
msgstr ""
|
453 |
|
454 |
+
#: modules/settings/settings-data.php:193
|
455 |
msgid ""
|
456 |
"You can use this form to upload and import an SEO Ultimate settings file "
|
457 |
"stored on your computer. (These files can be created using the Export tool.) "
|
459 |
"in the file."
|
460 |
msgstr ""
|
461 |
|
462 |
+
#: modules/settings/settings-data.php:197
|
463 |
msgid ""
|
464 |
"Are you sure you want to import this settings file? This will overwrite your "
|
465 |
"current settings and cannot be undone."
|
466 |
msgstr ""
|
467 |
|
468 |
+
#: modules/settings/settings-data.php:198
|
469 |
msgid "Import Settings File"
|
470 |
msgstr ""
|
471 |
|
472 |
+
#: modules/settings/settings-data.php:204
|
473 |
msgid "Import Deeplink Juggernaut CSV File"
|
474 |
msgstr ""
|
475 |
|
476 |
+
#: modules/settings/settings-data.php:206
|
477 |
msgid ""
|
478 |
"You can use this form to upload and import a Deeplink Juggernaut CSV file "
|
479 |
"stored on your computer. (These files can be created using the Export tool.) "
|
481 |
"the file."
|
482 |
msgstr ""
|
483 |
|
484 |
+
#: modules/settings/settings-data.php:210
|
485 |
msgid ""
|
486 |
"Are you sure you want to import this CSV file? This will overwrite your "
|
487 |
"current Deeplink Juggernaut links and cannot be undone."
|
488 |
msgstr ""
|
489 |
|
490 |
+
#: modules/settings/settings-data.php:211
|
491 |
msgid "Import CSV File"
|
492 |
msgstr ""
|
493 |
|
494 |
+
#: modules/settings/settings-data.php:226
|
495 |
msgid "Import from Other Plugins"
|
496 |
msgstr ""
|
497 |
|
498 |
+
#: modules/settings/settings-data.php:228
|
499 |
msgid ""
|
500 |
"You can import settings and data from these plugins. Clicking a plugin’"
|
501 |
"s name will take you to the importer page, where you can customize "
|
502 |
"parameters and start the import."
|
503 |
msgstr ""
|
504 |
|
505 |
+
#: modules/settings/settings-data.php:248
|
506 |
msgid "Export SEO Ultimate Settings File"
|
507 |
msgstr ""
|
508 |
|
509 |
+
#: modules/settings/settings-data.php:250
|
510 |
msgid ""
|
511 |
"You can use this export tool to download an SEO Ultimate settings file to "
|
512 |
"your computer."
|
513 |
msgstr ""
|
514 |
|
515 |
+
#: modules/settings/settings-data.php:252
|
516 |
msgid ""
|
517 |
"A settings file includes the data of every checkbox and textbox of every "
|
518 |
"installed module. It does NOT include site-specific data like logged 404s or "
|
520 |
"database backup, however)."
|
521 |
msgstr ""
|
522 |
|
523 |
+
#: modules/settings/settings-data.php:255
|
524 |
msgid "Download Settings File"
|
525 |
msgstr ""
|
526 |
|
527 |
+
#: modules/settings/settings-data.php:260
|
528 |
msgid "Export Deeplink Juggernaut CSV File"
|
529 |
msgstr ""
|
530 |
|
531 |
+
#: modules/settings/settings-data.php:262
|
532 |
msgid ""
|
533 |
"You can use this export tool to download a CSV file (comma-separated values "
|
534 |
"file) that contains your Deeplink Juggernaut links. Once you download this "
|
537 |
"the Import tool."
|
538 |
msgstr ""
|
539 |
|
540 |
+
#: modules/settings/settings-data.php:265
|
541 |
msgid "Download CSV File"
|
542 |
msgstr ""
|
543 |
|
544 |
+
#: modules/settings/settings-data.php:272
|
545 |
msgid "All settings have been erased and defaults have been restored."
|
546 |
msgstr ""
|
547 |
|
548 |
+
#: modules/settings/settings-data.php:274
|
549 |
msgid ""
|
550 |
"You can erase all your SEO Ultimate settings and restore them to “"
|
551 |
"factory defaults” by clicking the button below."
|
552 |
msgstr ""
|
553 |
|
554 |
+
#: modules/settings/settings-data.php:277
|
555 |
msgid ""
|
556 |
"Are you sure you want to erase all module settings? This cannot be undone."
|
557 |
msgstr ""
|
558 |
|
559 |
+
#: modules/settings/settings-data.php:278
|
560 |
msgid "Restore Default Settings"
|
561 |
msgstr ""
|
562 |
|
922 |
msgid "Content Links"
|
923 |
msgstr ""
|
924 |
|
925 |
+
#: modules/autolinks/content-autolinks.php:143
|
926 |
msgid ""
|
927 |
"The Content Links section of Deeplink Juggernaut lets you automatically link "
|
928 |
"a certain word or phrase in your post/page content to a URL you specify."
|
929 |
msgstr ""
|
930 |
|
931 |
+
#: modules/autolinks/content-autolinks.php:191
|
932 |
msgid "Edit Existing Links"
|
933 |
msgstr ""
|
934 |
|
935 |
+
#: modules/autolinks/content-autolinks.php:195
|
936 |
msgid "Add a New Link"
|
937 |
msgstr ""
|
938 |
|
939 |
+
#: modules/autolinks/content-autolinks.php:203
|
940 |
msgid "Anchor Text"
|
941 |
msgstr ""
|
942 |
|
943 |
+
#: modules/autolinks/content-autolinks.php:204
|
|
|
|
|
|
|
|
|
944 |
msgid "Destination"
|
945 |
msgstr ""
|
946 |
|
947 |
+
#: modules/autolinks/content-autolinks.php:205
|
948 |
msgid "Title Attribute"
|
949 |
msgstr ""
|
950 |
|
951 |
+
#: modules/autolinks/content-autolinks.php:206
|
952 |
msgid "Options"
|
953 |
msgstr ""
|
954 |
|
955 |
+
#: modules/autolinks/content-autolinks.php:208
|
956 |
msgid "Delete"
|
957 |
msgstr ""
|
958 |
|
959 |
+
#: modules/autolinks/content-autolinks.php:229 modules/noindex/noindex.php:54
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
960 |
#: modules/noindex/noindex.php:78
|
961 |
msgid "Nofollow"
|
962 |
msgstr ""
|
963 |
|
964 |
+
#: modules/autolinks/content-autolinks.php:230
|
965 |
msgid "New window"
|
966 |
msgstr ""
|
967 |
|
968 |
+
#: modules/autolinks/content-autolinks.php:294
|
969 |
msgid "Incoming Autolink Anchors:<br /><em>(one per line)</em>"
|
970 |
msgstr ""
|
971 |
|
972 |
+
#: modules/autolinks/content-autolinks.php:295
|
973 |
msgid "Don’t add autolinks to anchor texts found in this post."
|
974 |
msgstr ""
|
975 |
|
976 |
+
#: modules/autolinks/content-autolinks.php:295
|
977 |
msgid "Autolink Exclusion:"
|
978 |
msgstr ""
|
979 |
|
980 |
+
#: modules/autolinks/content-autolinks.php:300
|
981 |
msgid ""
|
982 |
"<strong>Incoming Autolink Anchors</strong> — When you enter anchors "
|
983 |
"into this box, Deeplink Juggernaut will search for that anchor in all your "
|
992 |
msgid "Deeplink Juggernaut"
|
993 |
msgstr ""
|
994 |
|
995 |
+
#: modules/autolinks/autolinks.php:18
|
996 |
+
msgid ""
|
997 |
+
"Deeplink Juggernaut requires PHP 5.2 or above in SEO Ultimate 6.0 and later. "
|
998 |
+
"(Note that WordPress itself will soon require PHP 5.2 as well, starting with "
|
999 |
+
"WordPress 3.2.) If you aren’t sure how to upgrade PHP, please ask your "
|
1000 |
+
"webhost. In the meantime, you can return to an older version of Deeplink "
|
1001 |
+
"Juggernaut that supports your version of PHP by <a href=\"%s\">downgrading</"
|
1002 |
+
"a> to SEO Ultimate 5.9."
|
1003 |
+
msgstr ""
|
1004 |
+
|
1005 |
#: modules/autolinks/content-autolinks-settings.php:16
|
1006 |
msgid "Content Deeplink Juggernaut Settings"
|
1007 |
msgstr ""
|
1119 |
msgid "Meta Robots Tag:"
|
1120 |
msgstr ""
|
1121 |
|
1122 |
+
#: modules/class.su-module.php:375
|
1123 |
msgid ""
|
1124 |
"(Note: This translated documentation was designed for an older version of "
|
1125 |
"SEO Ultimate and may be outdated.)"
|
1126 |
msgstr ""
|
1127 |
|
1128 |
+
#: modules/class.su-module.php:648
|
1129 |
msgid ""
|
1130 |
"All the modules on this page have been disabled. You can re-enable them "
|
1131 |
"using the <a href=\"%s\">Module Manager</a>."
|
1132 |
msgstr ""
|
1133 |
|
1134 |
+
#: modules/class.su-module.php:1000
|
1135 |
msgctxt "Dropdown Title"
|
1136 |
msgid "%s — %s"
|
1137 |
msgstr ""
|
1138 |
|
1139 |
+
#: modules/class.su-module.php:1028
|
1140 |
msgid "%1$s | %2$s %3$s by %4$s"
|
1141 |
msgstr ""
|
1142 |
|
1143 |
+
#: modules/class.su-module.php:1099
|
1144 |
msgid "Your site currently doesn’t have any public items of this type."
|
1145 |
msgstr ""
|
1146 |
|
1147 |
+
#: modules/class.su-module.php:1183
|
1148 |
msgid "«"
|
1149 |
msgstr ""
|
1150 |
|
1151 |
+
#: modules/class.su-module.php:1184
|
1152 |
msgid "»"
|
1153 |
msgstr ""
|
1154 |
|
1155 |
+
#: modules/class.su-module.php:1191
|
1156 |
msgid "Displaying %s–%s of %s"
|
1157 |
msgstr ""
|
1158 |
|
1159 |
+
#: modules/class.su-module.php:1205
|
1160 |
msgid "ID"
|
1161 |
msgstr ""
|
1162 |
|
1163 |
+
#: modules/class.su-module.php:1239
|
1164 |
msgid "View"
|
1165 |
msgstr ""
|
1166 |
|
1167 |
+
#: modules/class.su-module.php:1241
|
1168 |
msgid "Edit"
|
1169 |
msgstr ""
|
1170 |
|
1171 |
+
#: modules/class.su-module.php:1404
|
1172 |
msgid "Settings updated."
|
1173 |
msgstr ""
|
1174 |
|
1175 |
+
#: modules/class.su-module.php:1425
|
1176 |
msgid "Save Changes"
|
1177 |
msgstr ""
|
1178 |
|
1179 |
+
#: modules/class.su-module.php:1935
|
1180 |
msgid ""
|
1181 |
"Are you sure you want to replace the textbox contents with this default "
|
1182 |
"value?"
|
1183 |
msgstr ""
|
1184 |
|
1185 |
+
#: modules/class.su-module.php:2557
|
1186 |
+
msgid "Type a URL or start typing the name of the item you want to link to"
|
1187 |
+
msgstr ""
|
1188 |
+
|
1189 |
+
#: modules/class.su-module.php:2569
|
1190 |
+
msgid "Remove this destination"
|
1191 |
+
msgstr ""
|
1192 |
+
|
1193 |
+
#: modules/class.su-module.php:2569
|
1194 |
+
msgid "X"
|
1195 |
+
msgstr ""
|
1196 |
+
|
1197 |
#: modules/meta/webmaster-verify.php:12
|
1198 |
msgid "Webmaster Verification Assistant"
|
1199 |
msgstr ""
|
1265 |
msgid "Meta Description"
|
1266 |
msgstr ""
|
1267 |
|
1268 |
+
#: modules/meta/meta-descriptions.php:48
|
1269 |
msgid "Post Description Format"
|
1270 |
msgstr ""
|
1271 |
|
1272 |
+
#: modules/meta/meta-descriptions.php:49
|
1273 |
+
msgid "Category Description Format"
|
1274 |
+
msgstr ""
|
1275 |
+
|
1276 |
+
#: modules/meta/meta-descriptions.php:50
|
1277 |
+
msgid "Post Tag Description Format"
|
1278 |
+
msgstr ""
|
1279 |
+
|
1280 |
+
#: modules/meta/meta-descriptions.php:57
|
1281 |
msgid "Blog Homepage Meta Description"
|
1282 |
msgstr ""
|
1283 |
|
1284 |
+
#: modules/meta/meta-descriptions.php:59
|
1285 |
msgid "Use this blog’s tagline as the default homepage description."
|
1286 |
msgstr ""
|
1287 |
|
1288 |
+
#: modules/meta/meta-descriptions.php:60
|
1289 |
msgid "Default Value"
|
1290 |
msgstr ""
|
1291 |
|
1292 |
+
#: modules/meta/meta-descriptions.php:122
|
1293 |
msgid "Meta Description:"
|
1294 |
msgstr ""
|
1295 |
|
1296 |
+
#: modules/meta/meta-descriptions.php:125
|
1297 |
+
msgid "You’ve entered %s characters. Most search engines use up to 140."
|
1298 |
msgstr ""
|
1299 |
|
1300 |
+
#: modules/meta/meta-descriptions.php:133
|
1301 |
msgid ""
|
1302 |
"<strong>Description</strong> — The value of the meta description tag. "
|
1303 |
"The description will often appear underneath the title in search engine "
|
1461 |
msgid "SEO Design Solutions Whitepapers"
|
1462 |
msgstr ""
|
1463 |
|
1464 |
+
#. #-#-#-#-# plugin.pot (SEO Ultimate 6.0) #-#-#-#-#
|
1465 |
#. Author of the plugin/theme
|
1466 |
#: modules/sds-blog/sds-blog.php:49
|
1467 |
msgid "SEO Design Solutions"
|
1486 |
msgid "Link Masks"
|
1487 |
msgstr ""
|
1488 |
|
1489 |
+
#: modules/internal-link-aliases/internal-link-aliases.php:49
|
1490 |
+
msgid "URL"
|
1491 |
+
msgstr ""
|
1492 |
+
|
1493 |
#: modules/internal-link-aliases/internal-link-aliases.php:49
|
1494 |
msgid "Mask URL"
|
1495 |
msgstr ""
|
1851 |
msgstr ""
|
1852 |
|
1853 |
#: modules/rich-snippets/rich-snippets.php:62
|
1854 |
+
#: modules/rich-snippets/rich-snippets.php:220
|
1855 |
msgid "Review"
|
1856 |
msgstr ""
|
1857 |
|
1867 |
msgid "Date Reviewed"
|
1868 |
msgstr ""
|
1869 |
|
1870 |
+
#: modules/rich-snippets/rich-snippets.php:219
|
1871 |
+
#: modules/rich-snippets/rich-snippets.php:225
|
1872 |
msgid "None"
|
1873 |
msgstr ""
|
1874 |
|
1875 |
+
#: modules/rich-snippets/rich-snippets.php:221
|
1876 |
msgid "Rich Snippet Type:"
|
1877 |
msgstr ""
|
1878 |
|
1879 |
+
#: modules/rich-snippets/rich-snippets.php:226
|
1880 |
msgid "0.5 stars"
|
1881 |
msgstr ""
|
1882 |
|
1883 |
+
#: modules/rich-snippets/rich-snippets.php:227
|
1884 |
msgid "1 star"
|
1885 |
msgstr ""
|
1886 |
|
1887 |
+
#: modules/rich-snippets/rich-snippets.php:228
|
1888 |
msgid "1.5 stars"
|
1889 |
msgstr ""
|
1890 |
|
1891 |
+
#: modules/rich-snippets/rich-snippets.php:229
|
1892 |
msgid "2 stars"
|
1893 |
msgstr ""
|
1894 |
|
1895 |
+
#: modules/rich-snippets/rich-snippets.php:230
|
1896 |
msgid "2.5 stars"
|
1897 |
msgstr ""
|
1898 |
|
1899 |
+
#: modules/rich-snippets/rich-snippets.php:231
|
1900 |
msgid "3 stars"
|
1901 |
msgstr ""
|
1902 |
|
1903 |
+
#: modules/rich-snippets/rich-snippets.php:232
|
1904 |
msgid "3.5 stars"
|
1905 |
msgstr ""
|
1906 |
|
1907 |
+
#: modules/rich-snippets/rich-snippets.php:233
|
1908 |
msgid "4 stars"
|
1909 |
msgstr ""
|
1910 |
|
1911 |
+
#: modules/rich-snippets/rich-snippets.php:234
|
1912 |
msgid "4.5 stars"
|
1913 |
msgstr ""
|
1914 |
|
1915 |
+
#: modules/rich-snippets/rich-snippets.php:235
|
1916 |
msgid "5 stars"
|
1917 |
msgstr ""
|
1918 |
|
1919 |
+
#: modules/rich-snippets/rich-snippets.php:236
|
1920 |
msgid "Star Rating for Reviewed Item:"
|
1921 |
msgstr ""
|
1922 |
|