2016-07-23 9 views
1

Ich erstelle ein Formular, mit dem Benutzer vom Front-End aus senden können. Ich versuche, es auch eine Taxonomie mit dem wp_set_object_terms zu übergeben, weil ich einen benutzerdefinierten Post-Typ und eine benutzerdefinierte Taxonomie verwende. dies ist mein Code:wp_set_object_terms funktioniert nicht mit benutzerdefinierten Taxonomie und cpt

if(isset ($_POST['submit_offer'])=='submit'){ 
    $user_id = get_current_user_id(); 
    $args=array(
     'post_author' => $user_id, 
     'post_title' => $_POST['job_title'], 
     'post_content' => $_POST['post_content'], 
     'post_excerpt' => $_POST['job_field'], 
     'meta_input' => array(
          'points_amount' => $_POST['post_points'],    
           ), 
     'post_status' => 'publish', 
     'post_type'  => 'job_offers', 

    ); 

    // get post id 
    $post_id = wp_insert_post($args); 
    $job_tax = array (44 , 45); 
    wp_set_object_terms($post_id , $job_tax, 'field_of_work'); 
} 

und seine Arbeit nicht !!!!!

+0

haben Sie überprüft, dass Sie irgendeinen Fehler mit haben. 'term_taxonomy_ids = wp_set_object_terms $ (42, $ cat_ids, 'Kategorie');' ' if (is_wp_error ($ term_taxonomy_ids)) {' \t '// Es gab einen Fehler irgendwo und die Bedingungen nicht festgelegt werden können. ' '} else {' \t' // Erfolg! Die Kategorien des Postens wurden festgelegt. '}' –

+0

Hallo, ich bekomme einen Fehler "ungültige Taxonomie". – Pushtook

+0

gefunden eine Lösung !!! alles, was ich ID tun musste, um den Code in eine Funktion zu wickeln und sie zu init hinzuzufügen. – Pushtook

Antwort

1

So, endlich hat es gelöst. Nur benötigt, um das Formular in eine Funktion zu verpacken und es zu init hinzuzufügen. :

<? php 
function job_offer_form_init() { 

// form to post test 

function job_offer_form() { 
$user_id = get_current_user_id(); 
$job_field_1 = userpro_profile_data('main_occupation', $user_id); 
$job_field_2 = userpro_profile_data('sub_occupation_01', $user_id); 
$job_field_3 = userpro_profile_data('sub_occupation_02', $user_id); 
$form ='<div class="form-container"> 
<form action="" method="post" role="form"> 
<legend>הצעת שירותים/מוצרים</legend> 

<div class="form-group"> 
    <label for="job_title">כותרת ההצעה</label></br> 
    <input type="text" class="form-control" name="job_title" placeholder=""></br> 
    <label for="post_content">תוכן ההצעה</label></br> 
    <textarea class="form-control" name="post_content" placeholder=""></textarea></br> 
    <label for="job_field">תחום ההצעה</label></br> 
    <select name="job_field" multiple> 
     <option value="'.$job_field_1.'" selected>'.$job_field_1.'</option> 
     <option value="'.$job_field_2.'">'.$job_field_2.'</option> 
     <option value="'.$job_field_3.'">'.$job_field_3.'</option> 
    </select></br> 
    <label for="post_points">עלות בנקודות</label></br> 
    <input type="number" class="form-control" name="post_points" placeholder=""></br> 
</div> 

<button type="submit" name="submit_offer" value="submit" class="btn btn-primary">הגשת הצעה</button> 
</form></div>' ; 
return $form; 
} 
add_shortcode('jobofferform', 'job_offer_form'); 


if(isset ($_POST['submit_offer'])=='submit'){ 
$user_id = get_current_user_id(); 
$args=array(
    'post_author' => $user_id, 
    'post_title' => $_POST['job_title'], 
    'post_content' => $_POST['post_content'], 
    'post_excerpt' => $_POST['job_field'], 
    /* 'tax_input'  => array(
          'field_of_work' => array(44, 45), 
         ), */ 
    'meta_input' => array(
         'points_amount' => $_POST['post_points'], 
         // 'job_field' => $_POST['job_field'], 

          ), 
    'post_status' => 'publish', 
    'post_type'  => 'job_offers', 

); 

// get post id 
$post_id = wp_insert_post($args); 
$job_tax = array (48 , 49); 
$term_taxonomy_ids=wp_set_object_terms($post_id , $job_tax, 'field-of-work' , true); 

if (is_wp_error($term_taxonomy_ids)) { 
$error_string= $term_taxonomy_ids -> get_error_message(); 
add_post_meta($post_id, 'taxonomies-error', $error_string); 
} else { 
add_post_meta($post_id, 'taxonomies-error', 'no error'); 
} 

} 
} 

add_action('init', 'job_offer_form_init', 0); 
    ?> 
Verwandte Themen