vitorargos
  • 0
Новичок

Имя ярлыка типа записи

  • 0

Я только что создал новый тип сообщения. Его зовут Academias, поэтому первый пункт меню также называется Academias. Но я хотел бы изменить его на что-то вроде See All Academias (просто пример), возможно ли это?

Share
  1. Где именно вы хотите видеть фразу «Просмотреть все академии»?

    • 0
  2. Функция register_post_type() принимает аргумент 'labels' . Это массив, один из возможных ключей называется … тада! ¦ 'menu_name' .

    Образец кода

    register_post_type(
        'academias'
    ,   array (
            'can_export'          => TRUE
        ,   'exclude_from_search' => FALSE
        ,   'has_archive'         => TRUE
        ,   'hierarchical'        => TRUE
        ,   'label'               => 'Academias'
        ,   'labels'              => array ( 'menu_name' => 'See All Academias' )
        ,   'menu_position'       => 5
        ,   'public'              => TRUE
        ,   'publicly_queryable'  => TRUE
        ,   'query_var'           => 'academias'
        ,   'rewrite'             => array ( 'slug' => 'academias' )
        ,   'show_ui'             => TRUE
        ,   'show_in_menu'        => TRUE
        ,   'show_in_nav_menus'   => TRUE
        ,   'supports'            => array ( 'editor', 'title' )
        )
    );
    

    Обновлять

    Теперь, когда я лучше понял ваш вопрос, кажется, что есть только один способ добиться того, чего вы хотите: подключиться к attribute_escape .

    Тестовый плагин

    <?php
    /*
    Plugin Name: *WPSE13210
    */
    ! defined( 'ABSPATH' ) and exit;
    
    add_action( 'init', 'register_academia' );
    
    /**
     * Registers te post type academias
     *
     * @return void
     */
    function register_academia()
    {
        register_post_type(
            'academias'
        ,   array (
                'can_export'          => TRUE
            ,   'exclude_from_search' => FALSE
            ,   'has_archive'         => TRUE
            ,   'hierarchical'        => TRUE
            ,   'label'               => 'Academias'
            ,   'labels'              => array (
                    'menu_name' => 'See All Academias'
                ,   'name' => 'Academias'
                )
            ,   'menu_position'       => 5
            ,   'public'              => TRUE
            ,   'publicly_queryable'  => TRUE
            ,   'query_var'           => 'academias'
            ,   'rewrite'             => array ( 'slug' => 'academias' )
            ,   'show_ui'             => TRUE
            ,   'show_in_menu'        => TRUE
            ,   'show_in_nav_menus'   => TRUE
            ,   'supports'            => array ( 'editor', 'title' )
            )
        );
    }
    
    add_filter( 'attribute_escape', 'rename_second_menu_name', 10, 2 );
    
    /**
     * Renames the first occurence of 'See All Academias' to 'Academias'
     * and deactivates itself then.
     * @param $safe_text
     * @param $text
     */
    function rename_second_menu_name( $safe_text, $text )
    {
        if ( 'See All Academias' !== $text )
        {
            return $safe_text;
        }
    
        // We are on the main menu item now. The filter is not needed anymore.
        remove_filter( 'attribute_escape', 'rename_second_menu_name' );
    
        return 'Academias';
    

    }

     
    Не очень элегантное, но, по крайней мере, решение…

    Обновление 12.05.2010

    В тикете 17378 был предложен новый параметр all_items . Это должно работать намного лучше, когда это часть ядра…

    • 0

Оставить ответ

You must login to add an answer.