添加没有菜单项的自定义前端页面 - wordpress
Add custom frontend page without menu item - wordpress
我正在尝试做这样的事情。
Add "custom page" without page
我知道如何从管理面板添加一个 wordpress 页面,Pages->Add New
,然后使用 slug link 此页面到 PHP 文件。我已经这样做了。我只是想让这个页面工作而不从管理面板添加它,以防万一页面从管理面板中删除,即使存在于目录中它也不会工作。
如果我的问题不够清楚,请告诉我。非常感谢任何帮助。
谢谢!
更新:
感谢@Mike,我能够通过修改他的代码来解决问题。我只需要添加 add_rewrite_rule()
并且它现在工作正常。不要忘记刷新 permalinks。
function add_application_endpoint() {
add_rewrite_endpoint( 'view', EP_PERMALINK );
}
add_action( 'init', 'add_application_endpoint' );
function add_endpoint_queryvar( $query_vars ) {
$query_vars[] = 'view';
$query_vars[] = 'ptag';
$query_vars[] = 'product_cat';
return $query_vars;
}
add_filter( 'query_vars', 'add_endpoint_queryvar' );
add_rewrite_rule( '^view/([^/]+)/([^/]+)/?
, 'index.php?pagename=custom-product-tags&ptag=$matches[1]&product_cat=$matches[2]', 'top' );
/**
* Setting up job app template redirect for custom end point rewrite
*/
function job_application_template_redirect() {
global $wp_query;
if ( $wp_query->query_vars['name'] != 'custom-product-tags' ) {
return;
}
include dirname( __FILE__ ) . '/page-custom-product-tags.php';
exit;
}
add_action( 'template_redirect', 'job_application_template_redirect' );
您可以通过创建自定义端点并在 functions.php
文件中设置模板重定向来完成此操作。以下是工作申请页面的示例。将此代码添加到我的 functions.php
文件后,如果我访问我网站上的“/apply”,就会呈现 page-job_application.php
模板。
希望这能满足您的需求。
/**
* Rewrite custom endpoint for job post applications
*/
function add_application_endpoint() {
add_rewrite_endpoint('apply', EP_PERMALINK);
}
add_action( 'init', 'add_application_endpoint');
/**
* Register our custom endpoint as a query var
*/
function add_endpoint_queryvar( $query_vars ) {
$query_vars[] = 'apply';
return $query_vars;
}
add_filter( 'query_vars', 'add_endpoint_queryvar' );
/**
* Setting up job app template redirect for custom end point rewrite
*/
function job_application_template_redirect() {
global $wp_query;
if ( ! isset( $wp_query->query_vars['apply'] ) || ! is_singular() )
return;
include dirname( __FILE__ ) . '/page-job_application.php';
exit;
}
add_action( 'template_redirect', 'job_application_template_redirect' );
我正在尝试做这样的事情。
Add "custom page" without page
我知道如何从管理面板添加一个 wordpress 页面,Pages->Add New
,然后使用 slug link 此页面到 PHP 文件。我已经这样做了。我只是想让这个页面工作而不从管理面板添加它,以防万一页面从管理面板中删除,即使存在于目录中它也不会工作。
如果我的问题不够清楚,请告诉我。非常感谢任何帮助。
谢谢!
更新:
感谢@Mike,我能够通过修改他的代码来解决问题。我只需要添加 add_rewrite_rule()
并且它现在工作正常。不要忘记刷新 permalinks。
function add_application_endpoint() {
add_rewrite_endpoint( 'view', EP_PERMALINK );
}
add_action( 'init', 'add_application_endpoint' );
function add_endpoint_queryvar( $query_vars ) {
$query_vars[] = 'view';
$query_vars[] = 'ptag';
$query_vars[] = 'product_cat';
return $query_vars;
}
add_filter( 'query_vars', 'add_endpoint_queryvar' );
add_rewrite_rule( '^view/([^/]+)/([^/]+)/?
, 'index.php?pagename=custom-product-tags&ptag=$matches[1]&product_cat=$matches[2]', 'top' );
/**
* Setting up job app template redirect for custom end point rewrite
*/
function job_application_template_redirect() {
global $wp_query;
if ( $wp_query->query_vars['name'] != 'custom-product-tags' ) {
return;
}
include dirname( __FILE__ ) . '/page-custom-product-tags.php';
exit;
}
add_action( 'template_redirect', 'job_application_template_redirect' );
您可以通过创建自定义端点并在 functions.php
文件中设置模板重定向来完成此操作。以下是工作申请页面的示例。将此代码添加到我的 functions.php
文件后,如果我访问我网站上的“/apply”,就会呈现 page-job_application.php
模板。
希望这能满足您的需求。
/**
* Rewrite custom endpoint for job post applications
*/
function add_application_endpoint() {
add_rewrite_endpoint('apply', EP_PERMALINK);
}
add_action( 'init', 'add_application_endpoint');
/**
* Register our custom endpoint as a query var
*/
function add_endpoint_queryvar( $query_vars ) {
$query_vars[] = 'apply';
return $query_vars;
}
add_filter( 'query_vars', 'add_endpoint_queryvar' );
/**
* Setting up job app template redirect for custom end point rewrite
*/
function job_application_template_redirect() {
global $wp_query;
if ( ! isset( $wp_query->query_vars['apply'] ) || ! is_singular() )
return;
include dirname( __FILE__ ) . '/page-job_application.php';
exit;
}
add_action( 'template_redirect', 'job_application_template_redirect' );