コード例 #1
0
function delete_meta_fields_not_needed($object_id, $tt_id)
{
    // if (get_post_type($object_id) === 'soya_feature' && (is_tax('soya-range', $tt_id))){
    $term = get_term($tt_id);
    $term_slug = $term->slug;
    $term_meta_key = $term_slug . '_' . $tt_id;
    if (soya_is_term_child($tt_id)) {
        $term_parent_id = soya_get_term_parent_id($tt_id);
        $parent_term_slug = get_term($term_parent_id);
        $parent_term_depth = soya_get_term_custom_field($term_parent_id, 'soya_depth_meta');
        for ($i = 1; $i <= $parent_term_depth; $i++) {
            delete_post_meta($object_id, $i . '_' . $term_meta_key . '-' . $parent_term_slug . '_' . $term_parent_id);
        }
        // $term_meta_key =
        //  }else{
        delete_post_meta($object_id, 'silicone-effect_200-400');
        // }
    }
}
コード例 #2
0
 public function get_parent_ranges($term_id)
 {
     if (!soya_is_term_child($term_id)) {
         return false;
     }
     $ranges = [];
     $parent_term_id = soya_get_term_parent_id($term_id);
     $depth = soya_get_term_custom_field($parent_term_id, 'soya_depth_meta');
     for ($i = 1; $i <= $depth; $i++) {
         $lower = soya_get_term_custom_field($parent_term_id, 'soya_lower_' . $i . '_depth_meta');
         $upper = soya_get_term_custom_field($parent_term_id, 'soya_upper_' . $i . '_depth_meta');
         $ranges[$lower] = !empty($lower && $upper) ? $lower . '-' . $upper : 0;
     }
     return $ranges;
     //return $this->default_qty;
 }
コード例 #3
0
function soya_delete_term_post_meta_keys($term_id, $tax)
{
    if ($tax !== 'soya-range') {
        return;
    }
    $meta_keys[$term_id] = soya_make_meta_keys($term_id);
    if (soya_term_has_children($term_id) && !soya_is_term_child($term_id)) {
        $term_children = get_term_children($term_id, 'soya-range');
        do_action('delete_unwanted_range_values', $meta_keys, 'parent', $term_children);
    } else {
        do_action('delete_unwanted_range_values', $meta_keys, 'range_change');
    }
}
コード例 #4
0
/**
 * When the post is saved, saves our custom data.
 *
 * @param int $post_id The ID of the post being saved.
 */
function soya_save_meta_box_data($post_id)
{
    /*
     * We need to verify this came from our screen and with proper authorization,
     * because the save_post action can be triggered at other times.
     */
    // Check if our nonce is set.
    if (!isset($_POST['soya_meta_box_nonce'])) {
        return;
    }
    // Verify that the nonce is valid.
    if (!wp_verify_nonce($_POST['soya_meta_box_nonce'], 'soya_meta_box')) {
        return;
    }
    // If this is an autosave, our form has not been submitted, so we don't want to do anything.
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return;
    }
    // Check the user's permissions.
    if (isset($_POST['soya_feature']) && 'page' == $_POST['soya_feature']) {
        if (!current_user_can('edit_page', $post_id)) {
            return;
        }
    } else {
        if (!current_user_can('edit_post', $post_id)) {
            return;
        }
    }
    /* OK, it's safe for us to save the data now. */
    // Make sure that it is set.
    // get post terms ids
    $post_terms_ids = soya_get_post_terms_ids($post_id);
    //set up all post terms ranges
    $parent_post_terms_ranges = [];
    $child_post_terms_ranges = [];
    if (isset($post_terms_ids)) {
        foreach ($post_terms_ids as $post_term_id) {
            if (soya_is_term_child($post_term_id)) {
                // We want only parents ranges and slugs.
                $child_term_parent_id = esc_attr(soya_get_term_parent_id($post_term_id));
                $post_term_range = soya_loop_term_depth($child_term_parent_id);
                $post_child_term = get_term($post_term_id, 'soya-range');
                // $post_term_depth = count($post_term_range);
                $post_term_depth = soya_get_term_custom_field($post_term_id, 'soya_depth_meta');
                $post_term_slug = $post_child_term->slug;
                $post_term_range['depth'] = $post_term_depth;
                $post_term_range['slug'] = $post_term_slug;
                $child_post_terms_ranges[] = $post_term_range;
            } else {
                $post_term_range = soya_loop_term_depth($post_term_id);
                $parent_post_terms_ranges[] = $post_term_range;
            }
        }
    }
    //get keys from post terms ranges
    $all_meta_keys = [];
    $index = '';
    //Iterate for parent meta keys
    if (isset($parent_post_terms_ranges)) {
        foreach ($parent_post_terms_ranges as $post_term_range) {
            foreach ($post_term_range as $key => $label) {
                $all_meta_keys[] = $key;
            }
        }
    }
    // Build meta keys for child terms
    if (isset($child_post_terms_ranges)) {
        //$index = '';
        // $slug = '';
        foreach ($child_post_terms_ranges as $index => $post_term_range) {
            //get Depth and slug for each child term
            $indexi = $post_term_range['depth'];
            $post_child_term_slug = $post_term_range['slug'];
            // loop through each term's depth and get indices for meta keys
            for ($i = 1; $i <= $indexi; $i++) {
                //remove slug and depth from range arrange
                unset($post_term_range['slug']);
                unset($post_term_range['depth']);
                foreach ($post_term_range as $key => $label) {
                    // if($key != 'slug'):
                    $all_meta_keys[] = $i . '-' . $post_child_term_slug . '-' . $key;
                    // check for added fixed meta fields and save them too
                    if (has_action('soya_add_extra_meta_fields_' . $post_child_term_slug)) {
                        $all_meta_keys[] = $i . '-' . 'fixed-cost-' . $post_child_term_slug;
                    }
                }
            }
        }
    }
    // Apply filters
    $all_meta_keys = apply_filters('soya_filter_meta_keys', $all_meta_keys, $post_terms_ids);
    // Sanitize user input.
    foreach ($all_meta_keys as $key) {
        //check for data
        if (isset($_POST[$key])) {
            $value = sanitize_text_field($_POST[$key]);
        }
        update_post_meta($post_id, $key, $value);
    }
    //Check if a meta key is relevant and delete them
    $before_post_update_post_meta_keys = $_SESSION['post_terms'];
    $unwanted_meta_keys = array_diff($before_post_update_post_meta_keys, $all_meta_keys);
    foreach ($unwanted_meta_keys as $meta_key) {
        delete_post_meta($post_id, $meta_key);
    }
    unset($_SESSION['post_terms']);
}