创建重定向到另一个URL的WordPress页面

时间:2009-11-09 02:23:08

标签: php wordpress

我想创建一个新的WordPress页面,它实际上是指向另一个站点的链接。目标是让页面显示在我的页面列表中,但实际上是将Web用户发送到目标URL。

例如,假设我想要包含一个指示“我的照片”的页面,但实际上会将它们重定向到Flickr。

我猜测实现这一目标的一种方法是在PHP中使用带有重定向指令的自定义模板页面,但不幸的是我是PHP的新手并且不熟悉实现此目的的方法......

9 个答案:

答案 0 :(得分:40)

您可以通过两种方式完成这两种方式,这两种方式都需要通过编辑模板文件来完成。

第一个只是在你想要它出现的地方添加一个html链接。

第二个(我的猜测,你正在寻找的那个)是创建一个新的页面模板,如果你能够在你的主题/模板目录中创建一个新的.php文件,那就太难了。类似下面的代码应该做:

<?php /*  
Template Name: Page Redirect
*/ 

header('Location: http://www.nameofnewsite.com');
exit();

?>

模板名称也是您想要设置的名称,并且标题功能中的网址是您要引导用户的新网址。修改上述代码以满足您的需要后,将其保存在活动主题文件夹中的php文件中,并保存到模板名称中。因此,如果您将模板名称“页面重定向”保留为php文件页面-redirect.php。

保存完毕后,登录您的WordPress后端,然后创建一个新页面。如果您愿意,可以向主体添加标题和内容,但需要注意的重要一点是,在右侧,应该有一个下拉选项供您选择要使用的页面模板,默认显示第一。在该下拉列表中,应该有要使用的新模板文件的名称。选择新模板,发布页面,你应该是金色的。

此外,您还可以使用正文编辑器下方的“自定义字段”部分动态执行此操作。如果您有兴趣,请告诉我,我可以在新的回复中粘贴该人的代码。

答案 1 :(得分:11)

我发现这些问题通常最好在服务器层解决。您是否可以访问.htaccess文件,您可以在其中放置重定向规则?如果是这样的话:

RedirectPermanent /path/to/page http://uri.com

此重定向还将提供“301 Moved Permanently”响应,以指示Flickr页面(例如)是旧页面的永久URI。

如果无法做到这一点,您可以为相关的每个页面创建一个自定义页面模板,并将以下PHP代码添加到页面模板的顶部(实际上,这就是模板中所需的全部内容:

header('Location: http://uri.com, true, 301');

More information about PHP headers

答案 2 :(得分:7)

或者,使用过滤器。

在WordPress博客中创建一个空白页面,根据您的需要适当命名。记下post_id。然后创建一个改变其永久链接的过滤器。

add_filter('get_the_permalink','my_permalink_redirect');
function my_permalink_redirect($permalink) {
    global $post;
    if ($post->ID == your_post_id_here) {
        $permalink = 'http://new-url.com/pagename';
    }
    return $permalink;
}

这样网址就会在页面中正确显示,不需要有趣的重定向。

如果你需要做很多事情,那么考虑使用自定义postmeta字段为“offsite_url”或类似的东西定义postmeta值,然后你可以根据需要创建页面,输入“offsite_url”值然后使用上面的过滤器代替检查post_id,检查是否有必要的postmeta,并根据需要更改永久链接。

答案 3 :(得分:4)

我不熟悉Wordpress模板,但我假设在模板加载之前,WP会将标题发送到浏览器。因此,常见的重定向方法是:

header("Location: new_url");

不起作用。除非有办法在WP执行任何操作之前强制通过模板发送标头,否则您需要使用一些类似的Javascript:

<script language="javascript" type="text/javascript">
document.location = "new_url";
</script>

将它放在该部分中,它将在页面加载时运行。这种方法不是即时的,对于禁用Javascript的人也不行。

答案 4 :(得分:1)

有三种方法可以做到这一点:

  1. 更改404.php代码。
  2. 使用wordpress插件。
  3. 修改.htaccess文件。
  4. http://bornvirtual.com/wordpress/redirect-404-error-in-wordpress/906/

    上完成的完整教程

答案 5 :(得分:1)

使用&#34; raw&#34;插件https://wordpress.org/plugins/raw-html/ 然后它就像:

一样简单
[raw]
<script>
window.location = "http://www.site.com/new_location";
</script>
[/raw]

答案 6 :(得分:0)

我找到了一个插件,帮助我在几秒钟内完成此操作而无需编辑代码:

<强> https://wordpress.org/plugins/quick-pagepost-redirect-plugin/

我在这里找到了它:http://premium.wpmudev.org/blog/wordpress-link-title-external-url/

答案 7 :(得分:0)

在wordpress中,有一种使用wordpress插件创建重定向的简单得多的方法。因此,在这里我通过插件Redirection找到了一种更好的方法,您也可以在此网站Create Url redirect in wordpress through Plugin

中找到其他方法

答案 8 :(得分:0)

(这是帖子,而不是页面-原理是相同的。永久链接钩子因具体使用情况而异)

我只是遇到了同样的问题,并创建了一种更方便的方法来实现此目的-您不必一直重新编辑functions.php,也不必每次都修改服务器设置(我都不喜欢)。

TLTR

您可以在所需的实际WP永久链接功能上添加过滤器(对我来说是post_link,因为我需要在存档/类别列表中使用该页面别名),然后动态地读取引用的ID来自别名帖子本身

没关系,因为帖子是别名,所以您仍然不需要内容。

第一步是打开别名帖子,并将引用的帖子的ID作为内容 (以及其他):

enter image description here

下一步,打开您的functions.php并添加:

function prefix_filter_post_permalink($url, $post) {
    // if the content of the post to get the permalink for is just a number...
    if (is_numeric($post->post_content)) {
        // instead, return the permalink for the post that has this ID
        return get_the_permalink((int)$post->post_content);
    }
    return $url;
}
add_filter('post_link', 'prefix_filter_post_permalink', 10, 2 );

就这样

现在,每次需要创建别名帖子时,只需将引用的帖子的ID作为内容,即可完成。

这只会更改永久链接。标题,摘要等将按原样显示,这通常是需要的。另外,您还需要进一步调整自己的需求,PHP代码中的“是数字”部分远非理想,但是这样做会使点易于阅读。