sampson
  • 0
Учитель

Стандартные настраиваемые поля в пользовательском интерфейсе администратора

  • 0

Я добавил несколько отличий custom_post_types в свою установку WordPress 3. Все они немного отличаются друг от друга и должны хранить уникальную информацию в формате custom_fields . Но в то время как один может хранить product_id, другой — нет. У одного будет, source_url а у другого нет. Вместо того, чтобы указывать моим редакторам, какие настраиваемые поля следует использовать с какими настраиваемыми сообщениями, как я могу сделать так, чтобы каждое настраиваемое сообщение включало свои настраиваемые поля как часть самого пользовательского интерфейса?

Если вы посетите «daily_cartoon», у вас будет экран, который запрашивает только заголовок, заголовок и медиа.

Если вы посетите «daily_product», у вас будет экран, который запрашивает только заголовок, цену, сводку и т. д.

Share
  1. @Jonathan Sampson : я работаю все выходные над пакетом, чтобы решить эту проблему (я работаю над этим больше месяца). Но у меня крайний срок во вторник, поэтому в эти выходные я не буду отвечать на вопросы StackExchange. Если это все еще не решено позже на следующей неделе, я обязательно рассмотрю это.

    • 0
  2. Привет @Джонатан Сэмпсон :

    Существует несколько плагинов, упрощающих создание пользовательских типов записей, а некоторые также позволяют определять настраиваемые поля в произвольном порядке:

    Как я упоминал выше, я работал над тем, который не предоставляет пользовательский интерфейс, подобный этому, вместо этого расширяемый API для сложных типов полей (и простых тоже). Но, потратив час на попытки упаковать его, я понял, что он не готов для раздачи еще. Может быть, через несколько недель.

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

    Вам также может помочь этот пост:

    • 0
  3. вы можете добавить мета_боксы, чтобы в них хранились данные настраиваемых полей. поскольку add_meta_box может быть установлен в соответствии с post_type, это позволит вам добавлять разные meta_box к разным типам сообщений.

    посмотрите на этот пост для полного примера изменения пользовательского типа поста нового/редактирования экрана.

    • 0
  4. Недавно мне нужно было решить очень похожую проблему при работе с темой. Основа кода была взята из этого поста, и я изменил часть кода.

    Ниже приведена первая часть кода, который я изменил.

        add_action('init', 'limited_post_type');
    function my_custom_limited_post_type() 
    {
      $labels = array(
        'name' => _x('Limited Post Type', 'post type general name'),
        'singular_name' => _x('Film - DVD', 'post type singular name')
      );
      $args = array(
        'labels' => $labels,
        'public' => true,
        'publicly_queryable' => true,
        'show_ui' => true, 
        'query_var' => true,
        'rewrite' => true,
        'capability_type' => 'post',
        'hierarchical' => false,
        'menu_position' => null,
        'supports' => array('title','editor','author','thumbnail','excerpt', 'page-attributes','custom-fields' ),
        'show_in_nav_menus' => true
      ); 
      register_post_type('limited_post_type', $args);
    }
    

    Ниже приведена вторая часть кода, который я изменил.

    foreach ( $scope as $scopeItem ) {
           switch ( $scopeItem ) {
               case "post": {
                 // Output on any post screen
                 if ( basename( $_SERVER['SCRIPT_FILENAME'] )=="post-new.php" || $post->post_type=="post" )
                 $output = true;
                 break;}              
                case "page": {
                      // Output on any page screen
                      if ( basename( $_SERVER['SCRIPT_FILENAME'] )=="page-new.php" || $post->post_type=="page" )
                $output = true;
                break;}
                 case "limited_post_type": {
                                    // Output on limited post_type onlye
                if ((basename( $_SERVER['SCRIPT_FILENAME'] )=="post-new.php" && $post->post_type=="limited_post_type" ) || (basename( $_SERVER['SCRIPT_FILENAME'] )=="post.php" && $post->post_type=="film_dvd" ))
                       $output = true;
                       break;
                      }
    

    Если хотите, отправьте мне сообщение, и я с удовольствием вышлю вам файл functions.php для ознакомления. Это определенно способ добиться этого, поскольку я провел много ночей, таская за волосы себя.

    • 0

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

You must login to add an answer.