我有一个由插件(Dokan)创建的页面,名为Products:example。com/仪表板/产品
仪表板/产品页面是根据重写规则创建的,它不是可以在管理面板中看到的实际页面。因此,我不能使用此条件:is\\u page(page id)。
否则,我如何执行WordPress条件检查页面是否为/仪表板/产品页面?
这是插件中的register\\u rule函数代码:
$this->query_vars = apply_filters( \'dokan_query_var_filter\', array(
\'products\',
\'new-product\',
\'orders\',
\'withdraw\',
\'settings\',
\'edit-account\'
) );
foreach ( $this->query_vars as $var ) {
add_rewrite_endpoint( $var, EP_PAGES );
}
我的最终目标是将这两行包装在一个条件中,以便它们仅在
/dashboard/products
页码:
add_action( \'dokan_dashboard_content_inside_before\', \'custom_dashboard_menu\', 10 );
add_action( \'dokan_dashboard_content_before\', \'custom_dashboard_header\', 10 );
SO网友:Sally CJ
在WordPress中,请求路径,例如。path/to/something
如中所示example.com/path/to/something?query=string&if=any
, 保存在中WP::$request
可通过全球$wp
变量,因此在您的情况下,可以这样做来检查页面是否/dashboard/products
:
global $wp;
// Note: No trailing slashes.
$is_my_page = ( \'dashboard/products\' === $wp->request );
// Or without the "global $wp;"
$is_my_page = ( \'dashboard/products\' === $GLOBALS[\'wp\']->request );
// To check if you\'re on /dashboard/products/<anything>:
global $wp;
$is_my_page = preg_match( \'#^dashboard/products/#\', $wp->request );
可能有Dokan特定的方式/API/函数,但您必须自己找到。
如果出现以下情况,请更新/dashboard/products
实际上不是一个注册的WordPress重写规则,或者您在WordPress解析请求URL、路径等之前正在检查,那么您可以像这样执行“PHP方式”:
if ( ! empty( $_SERVER[\'REQUEST_URI\'] ) ) {
$path = parse_url( $_SERVER[\'REQUEST_URI\'], PHP_URL_PATH );
$is_my_page = ( \'/dashboard/products/\' === $path );
}