it-swarm-ko.tech

관리 UI에서 사용자 정의 필드 표준 만들기

Wordpress 3 설치에 몇 가지 custom_post_types를 추가했습니다. 그들은 서로 조금씩 다르며 custom_fields에 고유 한 정보를 저장해야합니다. 그러나 하나는 product_id를 저장할 수 있지만 다른 하나는 저장하지 않습니다. 하나는 source_url를 가지며 다른 하나는 그렇지 않습니다. 사용자 정의 필드를 어떤 사용자 정의 게시물과 함께 사용해야하는지 내 편집자에게 알려주지 않고 각 사용자 정의 게시물을 사용자 정의 필드를 UI 자체의 일부로 포함시키는 방법은 무엇입니까?

"daily_cartoon"을 방문하면 제목 , 캡션 미디어 .
"daily_product"를 방문하면 제목 , 가격 , 요약 등.

7
Sampson

안녕하세요 @ Jonathan Sampson :

사용자 정의 게시물 유형을 더 쉽게 만들 수있는 플러그인 이 몇 가지 있으며 특정 순서없이 사용자 정의 입력란을 정의 할 수있는 플러그인도 있습니다.

위에서 언급했듯이 복잡한 필드 유형 (및 간단한 필드 유형)에 대한 확장 가능한 API 대신 이러한 사용자 인터페이스를 제공하지 않는 제품에 대한 작업을 해왔습니다. 그러나 패키지화를 시도한 후부터는 준비가되지 않았다는 것을 깨달았습니다. 아직 배포 할 수 없습니다. 아마 몇 주안에.

위에 나열된 플러그인은 현재 기본 요구 사항을 충족해야하며 향후에 광산을 사용하기로 결정한 경우 향후 내내 저장된 데이터와 호환 될 수 있도록 노력할 것입니다.

당신은 또한이 게시물이 너무 도움이 될 수 있습니다 :

4
MikeSchinkel

사용자 정의 필드 데이터를 저장하기 위해 meta_boxes를 추가 할 수 있습니다. add_meta_box 는 post_type에 따라 설정 될 수 있으므로 다른 meta_box를 다른 게시물 유형에 추가 할 수 있습니다.

사용자 정의 게시 유형 new/edit scree를 변경하는 전체 예를 보려면이 게시물 을보십시오.

5
hannit cohen

최근에 테마 내에서 작업하는 동안 매우 비슷한 문제를 해결해야했습니다. 코드의 기본은 게시물 이었고 코드의 일부를 수정했습니다.

다음은 내가 수정 한 코드의 첫 번째 부분입니다.

    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
jnolte