it-swarm-ko.tech

분류 체계가있는 맞춤 메타 박스 드롭 다운 - 저축 문제

내 목표는 간단했습니다 --- 태그 또는 확인란을 사용하는 대신 분류법 용어의 간단한 드롭 다운 목록과 함께 사용자 정의 metabox와 사용자 정의 게시물 유형을 만들 수 있습니다. 그 이유는 편집자가 택 소노 미리스트에서 단 하나의 용어 만 선택할 수 있도록하기 위해서였습니다.

시행 착오 후에 나는 마침내 WP-Alchemy (http://farinspace.com/wpalchemy-metabox/)에서 사용하는 우수한 metabox 생성 도구를 활용하여 나의 대사 산물을 생성하고이를 적용 할 수있는 방법을 찾아 냈습니다 드롭 다운 목록의 용어.

내가 겪고있는 문제는 내가 선택한 값을 저장하기 위해 드롭 다운 메뉴에서 새로운 선택을 할 수없는 것입니다.

분명히 말하자면이 사용자 정의 게시 유형의 각 게시물과 연관된 용어는 하나 뿐이므로 해당 항목이 드롭 다운 메뉴에서 선택되고 게시물이 저장 될 때마다 이전 선택 사항이 등록 취소되었는지 확인해야합니다.

언급 한 바와 같이 나는 현재 드롭 다운 목록에 용어 목록을 표시하고 관련 용어가 무엇이든지 정확하게 표시하도록했습니다.

새로운 가치를 저장하는 것만으로도 문제가 발생합니다.

광범위한 연구에서 "wp_set_post_terms"기능을 사용하는 것과 같은 해결책이 "여기에 설명되어 있습니다"와 같은 "보인다": http://codex.wordpress.org/Function_Reference/wp_set_post_terms 그러나 올바르게 활용하는 방법을 모르겠습니다. 내 원하는 결과를 얻을 수 있습니다.

아래에는 제가 활용하고있는 코드가 포함되어 있습니다. 이 작업을 수행하는 더 좋은 방법이있을 가능성은 매우 높습니다. 사용자가 제기 한 제안에 따라 승인되지 않은 사용자가 데이터를 삽입 할 수 없도록하기 위해 적용 가능한 "확인"이 수행되고 있는지 확인할 수도 있습니다.

FUNCTIONS.PHP FILE (사용자 정의 POST 유형 및 TAXONOMY 생성을 표시합니다.

//////////////////////////////////////////////////////////////////////////////
// CUSTOM POSTTYPE FOR -- SERVICES  
//////////////////////////////////////////////////////////////////////////////

add_action('init', 'services');
function services() {
 register_post_type('services', array(
  'labels' => array(
   'name'   => __('Services'),
   'singular_label'  => __('Service'),
   'new_item'   => __('Add a Service'),
   'add_new'   => __('Add a Service'),
   'add_new_item'  => __('Add a Service'),
   'edit'   => __('Edit Service'),
   'edit_item'   => __('Edit Service'),
   'view'   => __('View Service'),
   'view_item'   => __('View Service'),
   'search_items'  => __('Search Services'),
   'not_found'   => __('No Services Found'),
   'not_found_in_trash' => __('No Services Found in Trash'),
       'parent_item'  => __('Parent Service'),
   'parent_item_colon' => __('Parent Service:')
   ),
  'can_export'    => true,
  'menu_position'   => 7,
  'public'    => false,
  'show_ui'    => true,
  'publicly_queryable'  => true,
  'hierarchical'   => true,
  'query_var'    => true,
  'capability_type'   => 'post',
  'exclude_from_search'  => false,
  'supports' => array(
   'title',
   'editor',
   'revisions',
   'page-attributes'
   ),
  'rewrite' => array( 
   'slug'   => 'disability-services', 
   'with_front'   => false
   )
 ));
}

여기 IS 내가 함께 일하려고하는 TAXONOMY를 등록하는 곳

// CUSTOM TAXONOMY METABOX POSTTYPE - AGE GROUPS
   register_taxonomy('theme', array('services'), array(
    'hierarchical'          => false, 
    'singular_label'            => 'Age Group', 
    'query_var'                 => 'theme',
    'public'                => true,
    'show_ui'               => true,
    'show_tagcloud'             => false,
    'show_in_nav_menus'             => true,    
    'rewrite'               => array( 'slug' => 'age-groups', 'with_front' => false ),
    'labels' => array(
        'name'          => __( 'Age Groups' ),
        'singular_name'         => __( 'Age Groups' ),
        'search_items'      => __( 'Search Age Groups' ),
        'all_items'             => __( 'All Age Groups' ),
        'parent_item'       => __( 'Parent Age Group' ),
        'parent_item_colon'         => __( 'Parent Age Group:' ),
        'edit_item'             => __( 'Edit Age Group' ), 
        'update_item'       => __( 'Update Age Group' ),
        'add_new_item'      => __( 'Add Age Group' ),
        'new_item_name'         => __( 'New Name of Age Group' ),
        'popular_items'         => __( 'Popular Age Groups' ),
        'separate_items_with_commas'=> __( 'Separate Age Groups with commas' ),
        'add_or_remove_items'   => __( 'Add or remove Age Groups' ),
        'choose_from_most_used' => __( 'Select Popular Age Groups' ), 
        ),
   ));
   wp_insert_term('Kids', 'theme');
   wp_insert_term('Teens', 'theme');
   wp_insert_term('Adults', 'theme');

이 IS 함수 파일과 코드에서 사용하는 코드는 WPALECHEMY를 기반으로 작성해야합니다. 이 시도에서 'save_filter'=> "wp_set_post_terms ($ post-> ID, 'theme') '를 포함 시키려고했는데, 희망 데이터는이 데이터를 저장하지만 희망하지 않았습니다.

// CUSTOM METABOX POSTTYPE - SERVICE DETAILS
   $custom_metabox_service_details = new WPAlchemy_MetaBox(array (
    'id'        => '_service_details-metaboxes',        // underscore prefix hides fields from the custom fields area
    'title'     => 'Age Groups',            // title added automatically to the custom metabox
    'types'     => array('services'),           // added only for custom post type "name-of-post-type" can also be "page" or "post"
    'context'   => 'normal',                    // same as above, defaults to "normal" but can use "advanced" or "side"
    'priority'  => 'high',                  // same as above, defaults to "high" but can use "low" as well
    'mode'  => WPALCHEMY_MODE_EXTRACT,
    'save_filter' => "wp_set_post_terms( $post->ID, 'theme' )",
    'template'  => TEMPLATEPATH . '/admin-metabox/service_details-metaboxes.php'  // contents for the meta box
    ));

나는 또한 DIMA가 AT에 덧붙여 WPALECHMEY는 A를 포함하도록 위의 코드를 허용하는 Github의 1.3.2 버전에 몇 가지 새로운 코드를 추가했음을 유의해야한다.

'save_filter' => "custom-function", 

이 코드는 사용자 정의 함수를 만들거나 데이터를 저장하는 가장 좋은 방법 인 게시 버튼을 눌렀을 때 실행되는 사용자 정의 함수를 호출합니다.

어쨌든, 나는 분류학 용어를 표시하는 실제 드롭 다운 목록을 표시하기 위해 사용자 지정 대사 물에 대해 다음 코드를 활용하고 있습니다.

<?php 
// This function gets called in edit-form-advanced.php
echo '<input type="hidden" name="taxonomy_noncename" id="taxonomy_noncename" value="' . wp_create_nonce( 'taxonomy_theme' ) . '" />';

// Get all theme taxonomy terms
$themes = get_terms('theme', 'hide_empty=0'); 
?>

<select name='post_theme' id='post_theme'>
// DISPLAY TERMS AS DROP DOWN OPTIONS
<?php $names = wp_get_object_terms($post->ID, 'theme'); ?>
<option class='theme-option' value='' <?php if (!count($names)) echo "selected";?>>None</option>
<?php foreach ($themes as $theme) {
 if (!is_wp_error($names) && !empty($names) && !strcmp($theme->slug, $names[0]->slug)) 
 echo "<option class='theme-option' value='" . $theme->slug . "' selected>" . $theme->name . "</option>\n"; 
 else
 echo "<option class='theme-option' value='" . $theme->slug . "'>" . $theme->name . "</option>\n"; 
}
?>
</select>

나는 데이터를 파이처럼 간단하게 저장해야한다고 가정하고 있지만 이것을 달성하는 방법을 혼란스럽게 생각합니다.

앞에서 언급했듯이 데이터를 올바르게 저장하고 올바르게 권한이 부여 된 사람인지 확인하기 위해 필요한 검사가 수행되도록 코드에 대한 제안을 제공 할 수 있다면 감사하겠습니다.

사전에 감사해야합니다!

3

관심있는 사람은 다른 게시물에서이 질문에 대답했습니다.

분류학 용어 저장

1
NetConstructor.com