1

我已经阅读了很多关于将 Tumblr 重定向到 WordPress 的主题,但我仍然找不到合适的解决方案。

这是问题所在:我想将jeby.tumblr.com(一个Tumblr博客)重定向到新的jeby.it,一个具有自定义域和 Web 空间等的WordPress (WIP) 博客。我已经导入了所有内容,现在我想要的只是“自动”重定向每个帖子

jeby.tumblr.com/post/[POST ID]/some-slug

jeby.it/2012/05/some-slug

我知道 Tumblr HTML 代码中提供了帖子的年份和月份,因为它们用于构成永久链接。我不能使用.htaccess重定向,因为 Tumblr 博客由 Tumblr 托管。

我对 Blogspot 做了同样的事情,在那里我找到了一个插件,它创建了正确的 JavaScript 代码以粘贴到 Blogspot 模型中并获得自动重定向。

4

1 回答 1

0

正如您已经意识到的那样,您将需要执行重定向客户端。如何做到这一点是 Tumblr主题模板系统的可能性和局限性的问题

  • 帖子的年份和月份分别可以作为{Year}{MonthNumberWithZero}令牌使用;这让你201205
  • 但是, post slug不能作为令牌使用(不确定这是否是故意遗漏——post slug 在 Tumblr 上是可选的;您可以手动设置一个,但如果您不这样做,则您的帖子仅使用其数字 ID) – 所以你必须从token插入{Permalink}链接中解析它。
  • 重定向只能在单个帖子页面上进行。不幸的是,没有基于模板的方法来确保你只针对这些,因为 Tumblr 主题 DSL 的优点和局限性在于它被定义为一个页面:你得到一个{block:Posts}块,Tumblr 会计算出要在里面显示多少帖子那。这意味着meta http-equiv="Refresh"标签是不可能的,因为它们也将包含在所有非单篇文章页面中。

幸运的是,Tumblr 确实允许您在模板中包含任意 JavaScript,这就是要走的路:

  1. 在块内添加以下行{block:Posts}

    <span class="redirdata">{Year},{MonthNumberWithZero},{Permalink}</span>
    

    在 CSS 中设置 span 的样式redirdatadisplay:none隐藏它们(或将它们设置为内联样式 - 考虑到它们的预期用途,教条主义毫无意义)。

  2. 现在添加一个脚本来<head>解析这些并重定向到 WordPress URL。由于您想为每个可能的访问者执行此操作,即尽可能兼容跨浏览器,我建议使用jQuery。包括它:

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
    

    或任何其他托管源(请参阅CDN URL的 jQuery 文档)。然后添加以下脚本:

    <script type="text/javascript">
        $(function(){ 
            if ( $('.redirdata').length === 1) {
                var redirdataTokens = $('.redirdata').text().split(',');
                if (redirdataTokens.length === 3) { 
                    var redirectTo = 'http://jeby.it/'+redirdataTokens[0]+'/'+redirdataTokens[1]+'/'+redirdataTokens[2].replace(/.*\//, '');
                    window.location = redirectTo;
                }
            }
        });
    </script>
    

    并且您的单一帖子页面应该自动将所有访问者重定向到 WordPress 帖子页面(当然,如果他们启用了 JavaScript)。如果需要的话,我相信你会想办法将它用于标记档案、搜索等。

警告 Empteor:仅当您的 WP 帖子的 slug 与您的 Tumblr 帖子的 slug 匹配时,这才有效 - 在没有文本 slug 的 Tumblr 帖子的情况下也至关重要(这意味着您的 WP slug 需要匹配数字 Tumblr 帖子 ID 在这种情况下)。

于 2012-05-11T14:15:47.843 回答