Version Description
= * added - Your sitemaps now look gorgeous in the browser. Just open the sitemap-video.xml file directly in any modern browser. * added - Sitemap now renders higher quality image thumbnails for YouTube videos
Download this release
Release Info
Developer | labnol |
Plugin | Google XML Sitemap for Videos |
Version | 2.5 |
Comparing to | |
See all releases |
Code changes from version 2.4.1 to 2.5
- readme.txt +3 -3
- video-sitemap.php +19 -21
- video-sitemap.xsl +42 -7
readme.txt
CHANGED
@@ -3,7 +3,7 @@ Contributors: labnol
|
|
3 |
Tags: youtube, xml sitemaps, google sitemaps, videos, seo, sitemaps, video sitemap
|
4 |
Requires at least: 2.9.2
|
5 |
Tested up to: 3.3.1
|
6 |
-
Stable tag: 2.
|
7 |
|
8 |
This plugin will help you generate Google Video Sitemaps (XML) for your WordPress blog.
|
9 |
|
@@ -62,8 +62,8 @@ The Sitemaps protocol enables you to let search engines know what content you wo
|
|
62 |
|
63 |
== Changelog ==
|
64 |
|
65 |
-
= 2.
|
66 |
-
|
67 |
* added - Sitemap now renders higher quality image thumbnails for YouTube videos
|
68 |
|
69 |
= 2.4 =
|
3 |
Tags: youtube, xml sitemaps, google sitemaps, videos, seo, sitemaps, video sitemap
|
4 |
Requires at least: 2.9.2
|
5 |
Tested up to: 3.3.1
|
6 |
+
Stable tag: 2.5
|
7 |
|
8 |
This plugin will help you generate Google Video Sitemaps (XML) for your WordPress blog.
|
9 |
|
62 |
|
63 |
== Changelog ==
|
64 |
|
65 |
+
= 2.5 =
|
66 |
+
* added - Your sitemaps now look gorgeous in the browser. Just open the sitemap-video.xml file directly in any modern browser.
|
67 |
* added - Sitemap now renders higher quality image thumbnails for YouTube videos
|
68 |
|
69 |
= 2.4 =
|
video-sitemap.php
CHANGED
@@ -4,7 +4,7 @@ Plugin Name: Google XML Sitemap for Videos
|
|
4 |
Plugin URI: http://www.labnol.org/software/xml-video-sitemaps-for-google/14085/
|
5 |
Description: This plugin will generate a XML Video Sitemap for your WordPress blog. Open the <a href="tools.php?page=video-sitemap-generate-page">settings page</a> to create your video sitemap.
|
6 |
Author: Amit Agarwal
|
7 |
-
Version: 2.
|
8 |
Author URI: http://www.labnol.org/
|
9 |
*/
|
10 |
|
@@ -63,11 +63,11 @@ exit();
|
|
63 |
<p>The XML Sitemap was generated successfully. Please open the <a target="_blank" href="<?php echo $sitemapurl; ?>">Sitemap file</a> in your favorite web browser to confirm that there are no errors.</p>
|
64 |
<p>You can submit your Video XML Sitemap through <a href="http://www.google.com/webmasters/tools/" target="_blank">Webmaster Tools</a> or you can directly <a target="_blank" href="http://www.google.com/webmasters/sitemaps/ping?sitemap=<?php echo $sitemapurl; ?>">ping Google</a>.</p>
|
65 |
<h3>Stay Connected</h3>
|
66 |
-
<p
|
67 |
-
<p><a href="https://twitter.com/labnol" class="twitter-follow-button" data-show-count="true" data-lang="en" >Follow @labnol</a></p>
|
68 |
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
|
69 |
-
|
70 |
-
|
|
|
71 |
<hr />
|
72 |
<?php } else { ?>
|
73 |
<div class="wrap">
|
@@ -82,8 +82,7 @@ exit();
|
|
82 |
</div>
|
83 |
</form>
|
84 |
<p>You can click the button above to generate a Video Sitemap for your website. Once you have created your Sitemap, you should submit it to Google using Webmaster Tools. </p>
|
85 |
-
|
86 |
-
</div>
|
87 |
<?php }
|
88 |
}
|
89 |
|
@@ -91,11 +90,10 @@ function video_sitemap_loop () {
|
|
91 |
global $wpdb;
|
92 |
|
93 |
$posts = $wpdb->get_results ("SELECT id, post_title, post_content, post_date_gmt, post_excerpt
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
ORDER BY post_date DESC");
|
99 |
|
100 |
if (empty ($posts)) {
|
101 |
return false;
|
@@ -111,16 +109,16 @@ function video_sitemap_loop () {
|
|
111 |
$videos = array();
|
112 |
|
113 |
foreach ($posts as $post) {
|
114 |
-
|
115 |
if (preg_match_all ("/youtube.com\/(v\/|watch\?v=|embed\/)([a-zA-Z0-9\-_]*)/", $post->post_content, $matches, PREG_SET_ORDER)) {
|
116 |
|
117 |
$excerpt = ($post->post_excerpt != "") ? $post->post_excerpt : $post->post_title ;
|
118 |
$permalink = get_permalink($post->id);
|
119 |
|
120 |
foreach ($matches as $match) {
|
121 |
-
|
122 |
$id = $match [2];
|
123 |
-
|
124 |
|
125 |
if (in_array($id, $videos))
|
126 |
continue;
|
@@ -131,15 +129,15 @@ function video_sitemap_loop () {
|
|
131 |
$xml .= " <loc>$permalink</loc>\n";
|
132 |
$xml .= " <video:video>\n";
|
133 |
$xml .= " <video:player_loc allow_embed=\"yes\" autoplay=\"autoplay=1\">http://www.youtube.com/v/$id</video:player_loc>\n";
|
134 |
-
$xml .= " <video:thumbnail_loc>http://i.ytimg.com/vi/$id/
|
135 |
$xml .= " <video:title>" . htmlspecialchars($post->post_title) . $fix . "</video:title>\n";
|
136 |
$xml .= " <video:description>" . $fix . htmlspecialchars($excerpt) . "</video:description>\n";
|
137 |
|
138 |
if ($_POST['time'] == 1) {
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
|
144 |
$xml .= " <video:publication_date>".date (DATE_W3C, strtotime ($post->post_date_gmt))."</video:publication_date>\n";
|
145 |
|
@@ -194,4 +192,4 @@ function youtube_duration ($id) {
|
|
194 |
return '0';
|
195 |
}
|
196 |
}
|
197 |
-
?>
|
4 |
Plugin URI: http://www.labnol.org/software/xml-video-sitemaps-for-google/14085/
|
5 |
Description: This plugin will generate a XML Video Sitemap for your WordPress blog. Open the <a href="tools.php?page=video-sitemap-generate-page">settings page</a> to create your video sitemap.
|
6 |
Author: Amit Agarwal
|
7 |
+
Version: 2.5
|
8 |
Author URI: http://www.labnol.org/
|
9 |
*/
|
10 |
|
63 |
<p>The XML Sitemap was generated successfully. Please open the <a target="_blank" href="<?php echo $sitemapurl; ?>">Sitemap file</a> in your favorite web browser to confirm that there are no errors.</p>
|
64 |
<p>You can submit your Video XML Sitemap through <a href="http://www.google.com/webmasters/tools/" target="_blank">Webmaster Tools</a> or you can directly <a target="_blank" href="http://www.google.com/webmasters/sitemaps/ping?sitemap=<?php echo $sitemapurl; ?>">ping Google</a>.</p>
|
65 |
<h3>Stay Connected</h3>
|
66 |
+
<p><a href="https://twitter.com/labnol" class="twitter-follow-button" data-show-count="true" data-lang="en" >Follow @labnol</a></p>
|
|
|
67 |
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
|
68 |
+
<iframe src="//www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.facebook.com%2Fdigital.inspiration&send=false&layout=standard&width=500&show_faces=true&action=recommend&colorscheme=light&font=arial&height=80&appId=197498283654348" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:500px; height:80px;" allowTransparency="true"></iframe>
|
69 |
+
<hr />
|
70 |
+
<p>Please email your suggestions to Amit Agarwal at amit@labnol.org. You can also connect with <a href="http://www.labnol.org/" target="_blank">Digital Inspiration</a> on <a href="http://twitter.com/labnol" target="_blank">Twitter</a>, <a href="http://www.youtube.com/labnol" target="_blank">YouTube</a> and <a href="http://www.facebook.com/digital.inspiration" target="_blank">Facebook</a>. </p>
|
71 |
<hr />
|
72 |
<?php } else { ?>
|
73 |
<div class="wrap">
|
82 |
</div>
|
83 |
</form>
|
84 |
<p>You can click the button above to generate a Video Sitemap for your website. Once you have created your Sitemap, you should submit it to Google using Webmaster Tools. </p>
|
85 |
+
<code>This WordPress plugin was developed by <a href="http://www.labnol.org/about/">Amit Agarwal</a> of <a href="http://www.labnol.org/">Digital Inspiration</a>.</code> </div>
|
|
|
86 |
<?php }
|
87 |
}
|
88 |
|
90 |
global $wpdb;
|
91 |
|
92 |
$posts = $wpdb->get_results ("SELECT id, post_title, post_content, post_date_gmt, post_excerpt
|
93 |
+
FROM $wpdb->posts WHERE post_status = 'publish'
|
94 |
+
AND (post_type = 'post' OR post_type = 'page')
|
95 |
+
AND post_content LIKE '%youtube.com%'
|
96 |
+
ORDER BY post_date DESC");
|
|
|
97 |
|
98 |
if (empty ($posts)) {
|
99 |
return false;
|
109 |
$videos = array();
|
110 |
|
111 |
foreach ($posts as $post) {
|
112 |
+
$c = 0;
|
113 |
if (preg_match_all ("/youtube.com\/(v\/|watch\?v=|embed\/)([a-zA-Z0-9\-_]*)/", $post->post_content, $matches, PREG_SET_ORDER)) {
|
114 |
|
115 |
$excerpt = ($post->post_excerpt != "") ? $post->post_excerpt : $post->post_title ;
|
116 |
$permalink = get_permalink($post->id);
|
117 |
|
118 |
foreach ($matches as $match) {
|
119 |
+
|
120 |
$id = $match [2];
|
121 |
+
$fix = $c++==0?'':' [Video '. $c .'] ';
|
122 |
|
123 |
if (in_array($id, $videos))
|
124 |
continue;
|
129 |
$xml .= " <loc>$permalink</loc>\n";
|
130 |
$xml .= " <video:video>\n";
|
131 |
$xml .= " <video:player_loc allow_embed=\"yes\" autoplay=\"autoplay=1\">http://www.youtube.com/v/$id</video:player_loc>\n";
|
132 |
+
$xml .= " <video:thumbnail_loc>http://i.ytimg.com/vi/$id/hqdefault.jpg</video:thumbnail_loc>\n";
|
133 |
$xml .= " <video:title>" . htmlspecialchars($post->post_title) . $fix . "</video:title>\n";
|
134 |
$xml .= " <video:description>" . $fix . htmlspecialchars($excerpt) . "</video:description>\n";
|
135 |
|
136 |
if ($_POST['time'] == 1) {
|
137 |
+
$duration = youtube_duration ($id);
|
138 |
+
if ($duration != 0)
|
139 |
+
$xml .= " <video:duration>".youtube_duration ($id)."</video:duration>\n";
|
140 |
+
}
|
141 |
|
142 |
$xml .= " <video:publication_date>".date (DATE_W3C, strtotime ($post->post_date_gmt))."</video:publication_date>\n";
|
143 |
|
192 |
return '0';
|
193 |
}
|
194 |
}
|
195 |
+
?>
|
video-sitemap.xsl
CHANGED
@@ -11,17 +11,51 @@
|
|
11 |
<title>XML Video Sitemap</title>
|
12 |
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
13 |
<style type="text/css">
|
14 |
-
|
15 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
</head>
|
17 |
<body>
|
18 |
<xsl:for-each select="sitemap:urlset/sitemap:url">
|
19 |
-
<
|
|
|
20 |
<xsl:variable name="u"> <xsl:value-of select="sitemap:loc"/> </xsl:variable>
|
21 |
-
<
|
22 |
-
|
23 |
-
<a href="{$u}"><img src="{$t}" width="120" height="80" /></a>
|
24 |
-
<p>
|
25 |
<xsl:variable name="d"><xsl:value-of select="video:video/video:description"/> </xsl:variable>
|
26 |
<xsl:choose>
|
27 |
<xsl:when test="string-length($d) < 100">
|
@@ -33,6 +67,7 @@
|
|
33 |
</xsl:choose>
|
34 |
</p>
|
35 |
</div>
|
|
|
36 |
</xsl:for-each>
|
37 |
</body>
|
38 |
</html>
|
11 |
<title>XML Video Sitemap</title>
|
12 |
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
13 |
<style type="text/css">
|
14 |
+
body {
|
15 |
+
font-family:Georgia, "Times New Roman", Times, serif;
|
16 |
+
font-size:12px;
|
17 |
+
background: url(http://img.labnol.org/files/qcpgwkr.png) repeat;
|
18 |
+
margin: 10px;
|
19 |
+
}
|
20 |
+
a {
|
21 |
+
border:none;
|
22 |
+
}
|
23 |
+
a:link {
|
24 |
+
color:#fff;
|
25 |
+
text-decoration:none;
|
26 |
+
}
|
27 |
+
.labnol {
|
28 |
+
position: relative;
|
29 |
+
float:left;
|
30 |
+
border: 2px solid #000;
|
31 |
+
margin: 5px;
|
32 |
+
}
|
33 |
+
p {
|
34 |
+
position: absolute;
|
35 |
+
top: 220px;
|
36 |
+
left: 5px;
|
37 |
+
width: 90%;
|
38 |
+
color: #CCC;
|
39 |
+
padding: 10px;
|
40 |
+
background:#000;
|
41 |
+
font-style: italic;
|
42 |
+
line-height: 18px;
|
43 |
+
}
|
44 |
+
p strong {
|
45 |
+
font-size: 18px;
|
46 |
+
color: #FFF;
|
47 |
+
line-height: 30px;
|
48 |
+
font-style: normal;
|
49 |
+
}
|
50 |
+
</style>
|
51 |
</head>
|
52 |
<body>
|
53 |
<xsl:for-each select="sitemap:urlset/sitemap:url">
|
54 |
+
<a href="{$u}" target="_blank">
|
55 |
+
<div class="labnol"><img src="{$t}" width="480" height="360" />
|
56 |
<xsl:variable name="u"> <xsl:value-of select="sitemap:loc"/> </xsl:variable>
|
57 |
+
<p><strong><xsl:value-of select="video:video/video:title"/></strong><br />
|
58 |
+
<xsl:variable name="t"> <xsl:value-of select="video:video/video:thumbnail_loc"/> </xsl:variable>
|
|
|
|
|
59 |
<xsl:variable name="d"><xsl:value-of select="video:video/video:description"/> </xsl:variable>
|
60 |
<xsl:choose>
|
61 |
<xsl:when test="string-length($d) < 100">
|
67 |
</xsl:choose>
|
68 |
</p>
|
69 |
</div>
|
70 |
+
</a>
|
71 |
</xsl:for-each>
|
72 |
</body>
|
73 |
</html>
|