noeltock
  • 0
Учитель

Выбор новой страницы редактирования усилителя для пользовательских типов записей

  • 0

Я, вероятно, что-то упускаю, если только это действительно невозможно, по какой-то причине я не могу заставить свою функцию выполняться только на новой и редактировать страницу пользовательского типа сообщения (новое не проблема):

В настоящее время я использую:

if ((isset($_GET['post_type']) && $_GET['post_type'] == 'events') || (isset($post_type) && $post_type == 'tf_events')) {
    add_action('admin_init', "admin_head");
}

Однако это работает только для добавления нового сообщения, где URL-адрес:

/post-new.php?post_type=events

Но для редактирования сообщения это не работает, где URL-адрес:

/post.php?post=12&action=edit

(хотя тип сообщения не добавляется к атрибуту ссылки)

РАБОЧИЙ КОД (см. ответ Марка ниже):

// 7. JS Datepicker UI

function events_styles() {
    global $post_type;
    if( 'tf_events' != $post_type )
        return;
    wp_enqueue_style('ui-datepicker', get_bloginfo('template_url') . '/css/jquery-ui-1.8.9.custom.css');
}

function events_scripts() {
    global $post_type;
    if( 'tf_events' != $post_type )
        return;
    wp_deregister_script('jquery-ui-core');
    wp_enqueue_script('jquery-ui', get_bloginfo('template_url') . '/js/jquery-ui-1.8.9.custom.min.js', array('jquery'));
    wp_enqueue_script('ui-datepicker', get_bloginfo('template_url') . '/js/jquery.ui.datepicker.min.js');
    wp_enqueue_script('custom_script', get_bloginfo('template_url').'/js/pubforce-admin.js', array('jquery'));
}

add_action( 'admin_print_styles-post.php', 'events_styles', 1000 );
add_action( 'admin_print_styles-post-new.php', 'events_styles', 1000 );

add_action( 'admin_print_scripts-post.php', 'events_scripts', 1000 );
add_action( 'admin_print_scripts-post-new.php', 'events_scripts', 1000 );
Share
  1. Некоторое разъяснение того, что делает эта функция, могло бы помочь, вы уверены admin_init, что она подходит для того, что делает эта функция? (очереди могут перейти на более подходящие крючки, если это то, что вы делаете)..

    • 0
  2. Хорошо, полный пересмотр моего первоначального ответа, который только что превратился в беспорядок.

    Проблема с вашим кодом заключается в том, что вы запускаете init, это охватывает каждую страницу администратора, и, кроме того, слишком рано проверять переменные администратора для работы с текущей страницей (хотя вы могли бы просто проверить $_GET, действительно ли вам нужно запускать код так рано ).

    Вы хотите специально подключиться к страницам редактирования сообщений, хотя вы не указали, что вам нужно запускать список сообщений в (edit.php), поэтому я исключаю это из следующих примеров.

    Вы можете подключиться к нескольким различным действиям, которые происходят в голове администратора, и делать там все, что вам нужно, и иметь возможность надежно проверять тип сообщения, задавая $post_type область действия внутри вашей функции обратного вызова.

    Таким образом, ваш обратный вызов будет выглядеть примерно так.

    function mycallback() {
        global $post_type;
        if( 'events' != $post_type )
            return;
        // Do your code here
    }
    

    Какое действие вы хотите зацепить, зависит от того, что вы хотите запустить в этот момент, если вы ничего особенного не делаете, но хотите что-то выполнить, тогда, возможно, подойдет общий админ-хед.

    add_action( 'admin_head-post.php', 'mycallback', 1000 );
    add_action( 'admin_head-post-new.php', 'mycallback', 1000 );
    

    Если вы загружаете скрипт, вы можете использовать..

    add_action( 'admin_print_scripts-post.php', 'mycallback', 1000 );
    add_action( 'admin_print_scripts-post-new.php', 'mycallback', 1000 );
    

    Если вы загружаете таблицу стилей, то, возможно..

    add_action( 'admin_print_styles-post.php', 'mycallback', 1000 );
    add_action( 'admin_print_styles-post-new.php', 'mycallback', 1000 );
    

    В противном случае мне нужно знать больше о том, что вы делаете… 🙂

    • 0
  3. вы можете попробовать вызвать глобальный $post так:

    global $post;
    if ((isset($_GET['post_type']) && $_GET['post_type'] == 'events') || (isset($post_type) && $post_type == 'tf_events') || (get_post_type($post) == "events") || (get_post_type($post) == "tf_events")){) {
        add_action('admin_init', "admin_head");
    }
    

    Обновлять

    пытаться :

    global $typenow;
    if( 'your_post_type' == $typenow ){
    // do you stuff
    }
    

    также убедитесь, что ваш вызов register_post_type выполняется первым, чтобы тип сообщения был зарегистрирован до запуска этого кода.

    Надеюсь это поможет.

    • 0
  4. Я пробовал предыдущие решения, которые не работали на странице редактирования. Я получил этот код, отлично работающий на странице редактирования.

    global $typenow;    
    if ( $typenow == 'slider' ||  get_post_type($_GET['post']) == 'slider' ):
      // What you want to do
    endif;
    
    • 0

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

You must login to add an answer.