我想基于URL查询字符串为自定义帖子类型重定向URL。
示例网址:http://example.com/custom_post_type/post-name?et_fb=1
我想检查网址是否包含查询字符串?et_fb = 1 ,如果是,请不要重定向,否则重定向到管理页面。我尝试使用以下功能,但它不会将我带到管理员网址
function redirect_cpt_to_admin() {
$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
$redirect = strpos($url,'?et_fb') == false;
global $wp_query;
if ( is_singular('my_cpt') && $redirect ){
$admin_url = admin_url();
wp_redirect( esc_url_raw( $admin_url ), 301 );
exit();
}
}
add_action ( 'template_redirect', 'redirect_cpt_to_admin', 20);
答案 0 :(得分:1)
尝试此功能:
function my_cpt_template_redirect()
{
$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
$param = 'et_fb';
$redirect = strpos($url,$param);
$obj = get_post_type_object( 'YOURCUSTOMPOSTYPE FOR EXAMPLE POST' );
if( $obj->labels->singular_name == "YOURCUSTOMPOSTYPE_SINGULAR_NAME" && $redirect === true )
{
wp_redirect( admin_url());
exit();
}
}
add_action( 'template_redirect', 'my_cpt_template_redirect' );
假设我们有帖子类型'认证',我们可以这样做:
$obj = get_post_type_object( 'certification' );
基本上如果你print_r($ obj),你会看到以下结果:
stdClass Object
(
[labels] => stdClass Object
(
[name] => Certification
[singular_name] => Certification
[add_new] => Add New
[add_new_item] => Add New Certification
[edit_item] => Edit Certification
[new_item] => New Page
[view_item] => View Certification
[search_items] => Search Certification
[not_found] => Not found
[not_found_in_trash] => Not found in Trash
[parent_item_colon] => Parent Certification:
[all_items] => All Certifications
[menu_name] => Certifications
[update_item] => Update Certification
[name_admin_bar] => Certification
)
[description] => Certifications
[public] => 1
[hierarchical] => 1
[exclude_from_search] =>
[publicly_queryable] => 1
[show_ui] => 1
[show_in_menu] =>
[show_in_nav_menus] => 1
[show_in_admin_bar] => 1
[menu_position] => 5
[menu_icon] => dashicons-welcome-widgets-menus
[capability_type] => post
[map_meta_cap] => 1
[register_meta_box_cb] =>
[taxonomies] => Array
(
[0] => objective
)
[has_archive] => 1
[rewrite] => Array
(
[slug] => certification
[with_front] => 1
[pages] => 1
[feeds] => 1
[ep_mask] => 1
)
[query_var] => certification
[can_export] => 1
[delete_with_user] =>
[_builtin] =>
[_edit_link] => post.php?post=%d
[label] => Certification
[name] => certification
[cap] => stdClass Object
(
[edit_post] => edit_post
[read_post] => read_post
[delete_post] => delete_post
[edit_posts] => edit_posts
[edit_others_posts] => edit_others_posts
[publish_posts] => publish_posts
[read_private_posts] => read_private_posts
[read] => read
[delete_posts] => delete_posts
[delete_private_posts] => delete_private_posts
[delete_published_posts] => delete_published_posts
[delete_others_posts] => delete_others_posts
[edit_private_posts] => edit_private_posts
[edit_published_posts] => edit_published_posts
[create_posts] => edit_posts
)
)
我希望它能解决你的问题。随意根据需要和想要完善功能。