如果is_page()不能与wp_reDirect一起使用

时间:2020-03-20 作者:LovinQuaQua

我安装了一个插件,它正在前端创建用户配置文件。此页面的ID在wordpress后端为301。如果访问了配置文件站点,我想在url后面附加一个参数。参数值存储在cookie中。用于附加URL的代码正在运行,但当我添加代码以仅在此页面id上显示时,它不起作用。

代码在my child themes函数中执行。php

NOT WORKING

if( is_page(301)) {
    echo \'page\';

// Event ID in der URL als $_GET hinzufügen
function lwb_param_redirect(){
    if( isset( $_COOKIE[\'lwb_event_id\'] ) and !$_GET[\'event_id\'] ) {
        $location = esc_url( add_query_arg( \'event_id\', $_COOKIE[\'lwb_event_id\'] ));
        wp_redirect( $location );
    }
}
    add_action( \'template_redirect\', \'lwb_param_redirect\' );
}

WORKING

// Event ID in der URL als $_GET hinzufügen
function lwb_param_redirect(){
    if( isset( $_COOKIE[\'lwb_event_id\'] ) and !$_GET[\'event_id\'] ) {
        $location = esc_url( add_query_arg( \'event_id\', $_COOKIE[\'lwb_event_id\'] ));
        wp_redirect( $location );
    }
}
    add_action( \'template_redirect\', \'lwb_param_redirect\' );
工作示例将URL参数global附加到我的所有站点,这是我想要阻止的,因为只有概要文件页面才需要event\\u id。

1 个回复
SO网友:jdm2112

在插件模板的情况下,您可能会发现slug在某种情况下更可靠-请参阅下面的替代方法。

使用时is_page_template() 传递的参数为anypath/filename.php. 如果不知道您的文件系统细节或插件名称,就不可能为您提供正确的相对路径。使用plugin_dir_path() 获取此方法的插件根目录,然后获取子文件夹等。

Alternate Approach

或者一起去get_page_template_slug() 无需知道模板位置,因为它只返回页面模板文件名。

$template = get_page_template_slug(); // You may need to pass the post ID depending on context

if ( \'profile.php\' === $template ) {
    echo \'yes\';
} else {
    echo \'no\';
}
WP Codex了解更多信息:https://developer.wordpress.org/reference/functions/get_page_template_slug/https://developer.wordpress.org/reference/functions/plugin_dir_path/

相关推荐

Pages from custom table

我在wordpress数据库中有自定义表“catalog”:id|name|description|slug|price 我有模板文件“catalog”和页面“catalog”,其中显示了目录表中的所有项目。但是,如何将此列表中的单个项目显示为页面?领域开发/目录/(此部件工作)域。dev/catalog/my single item页面(我不知道如何使其工作)如何使用“我的单个项目页面”作为动态变量?slug=“我的单个项目页面”;我的函数中有这个片段。php文件 function ad