WordPress 如何重定向私人自定义 Post 类型
WordPress how to redirect Private Custom Post Types
我们有一个带有自定义主题的 WordPress 网站,我们正在使用 CPT(自定义 Post 类型)。
对于某些 reason/s,当我们将 CPT 可见性设置为私有时,页面仍然公开可用,但它是一个完全空的文档;没有 head
数据,除了 string(n) "post_title"
之外没有 body
数据,例如:string(9) "ade184065"
.
你可以在这里找到一个活生生的例子:
https://www.gozoprime.com/gozo-properties/ade184065/
如您所见,这是一个 属性 列表网站,当 属性 售出时,我们将其设置为私有,因为我们仍希望保留数据。
我确实尽了最大努力找出可能导致此问题的原因,但连续几个小时后,我一无所获,网上也没有任何相关信息 - 所以我的想法是我们与我们的客户发生了冲突自己的自定义代码?
禁用所有插件也没有解决问题。
有没有人以前遇到过这个问题?
注意:我还尝试检测 post 是否私有并手动重定向,但无论发生什么,都发生在实际 属性 页面代码为 运行 之前。所以将此代码放在 content-single-cpt-name.php 中不起作用:
// Check post status: Public | Private -> Redirect accordingly
if ( get_post_status ( get_the_ID() ) == 'private' ) { ...
非常感谢您的帮助!
您可以通过多种方式解决此问题。因为,您没有提供有关您的 cpt 的详细信息,我想说,如果 post 具有私人状态,请尝试重定向用户。同样,还有其他方法可以做到这一点,但您没有向我们提供有关如何设置 cpt 的更多详细信息。
在下面的代码中,我使用 template_redirect
操作挂钩和 wp_safe_redirect
将用户重定向到 home_url
。随意将 home_url
更改为您需要将用户重定向到的任何 url!
add_action('template_redirect', 'your_theme_private_posts_redirect');
function your_theme_private_posts_redirect()
{
if (is_single() && 'private' == get_post_status(get_the_ID())) {
wp_safe_redirect(home_url());
exit();
}
}
代码进入活动主题的 functions.php
文件。刚刚测试过,它工作正常!
更新
由于您使用的是自定义主题,因此可能有其他重定向会阻止此功能正常执行。因此,您可以为我提供给您的代码添加一个优先级,比方说 99
,希望它能解决问题,如下所示:
add_action('template_redirect', 'your_theme_private_posts_redirect', 99);
function your_theme_private_posts_redirect()
{
if (is_single() && 'private' == get_post_status(get_the_ID())) {
wp_safe_redirect(home_url());
exit();
}
}
我们有一个带有自定义主题的 WordPress 网站,我们正在使用 CPT(自定义 Post 类型)。
对于某些 reason/s,当我们将 CPT 可见性设置为私有时,页面仍然公开可用,但它是一个完全空的文档;没有 head
数据,除了 string(n) "post_title"
之外没有 body
数据,例如:string(9) "ade184065"
.
你可以在这里找到一个活生生的例子:
https://www.gozoprime.com/gozo-properties/ade184065/
如您所见,这是一个 属性 列表网站,当 属性 售出时,我们将其设置为私有,因为我们仍希望保留数据。
我确实尽了最大努力找出可能导致此问题的原因,但连续几个小时后,我一无所获,网上也没有任何相关信息 - 所以我的想法是我们与我们的客户发生了冲突自己的自定义代码?
禁用所有插件也没有解决问题。
有没有人以前遇到过这个问题?
注意:我还尝试检测 post 是否私有并手动重定向,但无论发生什么,都发生在实际 属性 页面代码为 运行 之前。所以将此代码放在 content-single-cpt-name.php 中不起作用:
// Check post status: Public | Private -> Redirect accordingly
if ( get_post_status ( get_the_ID() ) == 'private' ) { ...
非常感谢您的帮助!
您可以通过多种方式解决此问题。因为,您没有提供有关您的 cpt 的详细信息,我想说,如果 post 具有私人状态,请尝试重定向用户。同样,还有其他方法可以做到这一点,但您没有向我们提供有关如何设置 cpt 的更多详细信息。
在下面的代码中,我使用 template_redirect
操作挂钩和 wp_safe_redirect
将用户重定向到 home_url
。随意将 home_url
更改为您需要将用户重定向到的任何 url!
add_action('template_redirect', 'your_theme_private_posts_redirect');
function your_theme_private_posts_redirect()
{
if (is_single() && 'private' == get_post_status(get_the_ID())) {
wp_safe_redirect(home_url());
exit();
}
}
代码进入活动主题的 functions.php
文件。刚刚测试过,它工作正常!
更新
由于您使用的是自定义主题,因此可能有其他重定向会阻止此功能正常执行。因此,您可以为我提供给您的代码添加一个优先级,比方说 99
,希望它能解决问题,如下所示:
add_action('template_redirect', 'your_theme_private_posts_redirect', 99);
function your_theme_private_posts_redirect()
{
if (is_single() && 'private' == get_post_status(get_the_ID())) {
wp_safe_redirect(home_url());
exit();
}
}