基于URL查询字符串重定向URL

时间:2016-09-10 08:12:11

标签: wordpress redirect custom-post-type

我想基于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);

1 个答案:

答案 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
        )

)

我希望它能解决你的问题。随意根据需要和想要完善功能。