我想创建一个新的WordPress页面,它实际上是指向另一个站点的链接。目标是让页面显示在我的页面列表中,但实际上是将Web用户发送到目标URL。
例如,假设我想要包含一个指示“我的照片”的页面,但实际上会将它们重定向到Flickr。
我猜测实现这一目标的一种方法是在PHP中使用带有重定向指令的自定义模板页面,但不幸的是我是PHP的新手并且不熟悉实现此目的的方法......
答案 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');
答案 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)
有三种方法可以做到这一点:
404.php
代码。.htaccess
文件。在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作为内容 (以及其他):
下一步,打开您的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
代码中的“是数字”部分远非理想,但是这样做会使点易于阅读。