php WordPress侧边栏管理菜单为我的自定义文章类型

46qrfjad  于 2022-12-02  发布在  PHP
关注(0)|答案(3)|浏览(108)

我用register_post_type创建了一个名为“主页”的自定义帖子类型,下面是我的代码。

$labels = array(
             
        'name' => __( 'Home Page'),
        'singular_name' => __( 'Home Page'),
        'edit_item' => __( 'Edit Home Page'),            
    );

$args = array(
        'label'               => __( 'Home Page'),
        'description'         => __( 'Custom Post Type'),
        'labels'              => $labels,       
        'hierarchical'        => false,
        'public'              => false,
        'show_ui'             => true,
        'show_in_menu'        => true,
        'show_in_nav_menus'   => true,
        'show_in_admin_bar'   => true,
        'has_archive'         => false,        
        'exclude_from_search' => true,
        'publicly_queryable'  => true,
        'map_meta_cap'        => fa,
        'capabilities' => array(
            'create_posts' => 'do_not_allow',
            'delete_published_posts' => false,
            'read_post' => false,
        ),
        
        
    );
register_post_type( 'homepage', $args );

我已经使用“高级自定义字段”WordPress插件添加自定义字段到这个新的自定义后类型。这些都工作正常,它显示如下。

但我想要的是,我将只有1条记录,所以如果我点击“主页”左侧栏管理菜单链接,它应该被重定向到特定的记录与类似post.php?post=37&action=edit的URL。
我已经知道做'show_in_menu' => false,将隐藏左侧边栏的url。
但我如何隐藏这个菜单,并直接进入编辑页面,只有一个记录,我将永远有?
有人能指导我从现在开始我应该做些什么来实现这一目标吗?
先谢谢你。

ltskdhd1

ltskdhd11#

如果您已经发布了第一个帖子:
register_post_type中添加以下参数:

'map_meta_cap' => true,
'capabilities' => array(
    'create_posts' => 'do_not_allow'
)

这将禁止向帖子类型添加新帖子。
然后是重定向edit.php的函数-确保传递正确的ID

function redirect_edit_screen() {
    
    $current_screen = get_current_screen();
    
    if( $current_screen->id === "edit-homepage" ) {
        wp_safe_redirect( admin_url('post.php?post=37&action=edit') );
        exit();
    }
}
add_action( 'current_screen', 'redirect_edit_screen' );
ttcibm8c

ttcibm8c2#

好了伙计们,
最终,我找到了一种实现这个特性的方法。

// Adding custom menu for custom post type 
function add_link_to_category_tips_n_tricks() {
    $link = 'post.php?post=39&action=edit';
    add_menu_page( 'Home Page', 'Home Page', 'edit_pages', $link, '', 'dashicons-admin-home', 8 );
}
add_action( 'admin_menu', 'add_link_to_category_tips_n_tricks' );

这将创建一个新的自定义菜单,并将重定向到我想要的页面。
感谢大家的支持和指导。

mftmpeh8

mftmpeh83#

一种方法是在admin_init钩子上重定向。检查$_GET[post_type']是否被设置并等于您的自定义帖子类型,以及$pagenow全局设置是否为edit.php。n只需使用wp_redirect()重定向即可。

function redirect_to_edit() {

    global $pagenow;

    if ( isset($_GET['post_type']) && $_GET['post_type'] == 'homepage' && $pagenow == 'edit.php' ) {
      wp_redirect( admin_url('post.php?post=39&action=edit') );
      exit();
    }

}
add_action('admin_init', 'redirect_to_edit');

我更喜欢创建一个新的自定义菜单并将其重定向到所需的页面。

相关问题