it-swarm.asia

مخصص Metabox مع التصنيف المنسدلة - قضية الادخار

كان هدفي بسيطًا --- لإنشاء نوع منشور مخصص باستخدام قاعدة تعريف مخصصة مع قائمة منسدلة بسيطة من مصطلحات التصنيف بدلاً من استخدام العلامات أو مربعات الاختيار. كان السبب هو التأكد من أن المحرر يمكنه فقط اختيار مدة واحدة من قائمة التصنيف.

بعد التجربة والخطأ ، تمكنت أخيرًا من معرفة طريقة لاستخدام أدوات إنشاء الميتوكس الممتازة التي أستخدمها من WP-Alchemy (http://farinspace.com/wpalchemy-metabox/) لإنشاء قاعدة التعريف الخاصة بي وجعلها تعرض التطبيق القابل للتطبيق الشروط في قائمة المنسدلة.

المشكلة التي أواجهها هي أنه لا يمكنني الحصول على تحديد جديد من القائمة المنسدلة لحفظ القيمة المحددة.

لكي تكون واضحًا ... من المهم أن يرتبط مصطلح واحد فقط بكل منشور في نوع المنشور المخصص هذا ، وكلما تم تحديد قيمة مختلفة من القائمة المنسدلة وحفظ المنشور ، يجب التأكد من عدم تحديد الاختيار السابق.

كما ذكر ، لدي حاليًا عرض قائمة المصطلحات في قائمة منسدلة ولدي أيضًا عرض بشكل صحيح أي مصطلح قد يرتبط.

مجرد توفير القيم الجديدة هو أين أواجه مشكلات.

من بحث مستفيض "يبدو" أن الحل ينطوي على استخدام وظائف وورد "wp_set_post_terms" التي يتم شرحها بشكل أكبر هنا: http://codex.wordpress.org/Function_Reference/wp_set_post_terms ومع ذلك لست متأكدًا من كيفية استخدامها بشكل صحيح لتحقيق النتيجة المرجوة.

أدرج أدناه الرمز الذي أستخدمه. من المحتمل جدًا وجود طريقة أفضل للقيام بذلك ، وسأكون ممتناً لأي اقتراحات قد تكون لديك يا رفاق قد تضمن أيضًا أن "عمليات الفحص" المعمول بها قد تم إجراؤها لضمان عدم إمكانية إدخال البيانات بواسطة مستخدمين غير مصرح لهم بذلك.

FUNCTIONS.PHP FILE (يعرض إنشاء CUSTOM POST TYPE و 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 أين أقوم بالتسجيل في المصطلح الذي أحاول العمل به

// 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
    ));

يجب أن أذكر أيضًا أن الأعداد التي تجاوزت AT WPALECHMEY JUST قد أضيفت بعض الكود الجديد إلى HIS 1.3.2 نسخة من GITHUB التي تسمح للكود أعلاه أن يشمل A

'save_filter' => "custom-function", 

يسمح لك هذا الرمز بإنشاء وظيفة مخصصة أو أعتقد أن استدعاء وظيفة مخصصة يتم تنفيذها عند النقر فوق زر النشر ، لذا ربما تكون هذه هي أفضل طريقة لحفظ البيانات؟

على أي حال ، أنا أستخدم الكود التالي من أجل metabox المخصص لعرض القائمة المنسدلة الفعلية التي تعرض شروط التصنيف.

<?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
NetConstructor.com

لأي شخص مهتم ، أجبت على هذا السؤال في منشور مختلف:

شروط التصنيف الادخار

1
NetConstructor.com