function hocwp_post_get_top_parent_terms($post, $taxonomy = 'any') { $result = array(); $taxonomies = array($taxonomy); if ('any' === $taxonomy) { $taxonomies = hocwp_post_get_taxonomies($post); } foreach ($taxonomies as $tax) { $terms = wp_get_post_terms($post->ID, $tax); foreach ($terms as $term) { if ($term->parent != 0) { $term = hocwp_term_get_top_most_parent($term); } $result[] = $term; } } return $result; }
function hocwp_classifieds_save_post($post_id) { if (!hocwp_can_save_post($post_id)) { return; } global $post_type; if (empty($post_type)) { $post_type = hocwp_get_current_post_type(); } if (empty($post_type) || 'post' == $post_type) { if (hocwp_is_subscriber()) { if (get_post_status($post_id) == 'publish') { $post_data = array('ID' => $post_id, 'post_status' => 'pending'); wp_update_post($post_data); } } if (is_admin() && !HOCWP_DOING_AJAX) { $taxonomies = hocwp_post_get_taxonomies(get_post($post_id), 'objects'); $custom_taxonomies = array(); $salary = hocwp_get_value_by_key($taxonomies, 'salary'); $acreage = hocwp_get_value_by_key($taxonomies, 'acreage'); $price = hocwp_get_value_by_key($taxonomies, 'price'); $classifieds_object = hocwp_get_value_by_key($taxonomies, 'classifieds_object'); if (hocwp_object_valid($salary)) { //$custom_taxonomies[$salary->name] = $salary; } if (hocwp_object_valid($price)) { //$custom_taxonomies[$price->name] = $price; } if (hocwp_object_valid($acreage)) { //$custom_taxonomies[$acreage->name] = $acreage; } if (hocwp_object_valid($classifieds_object)) { //$custom_taxonomies[$classifieds_object->name] = $classifieds_object; } unset($taxonomies['salary']); unset($taxonomies['acreage']); unset($taxonomies['price']); unset($taxonomies['classifieds_object']); $errors = array(); if (hocwp_array_has_value($taxonomies)) { foreach ($taxonomies as $taxonomy) { if ($taxonomy->hierarchical) { $terms = wp_get_post_terms($post_id, $taxonomy->name); if (!hocwp_array_has_value($terms)) { //$errors[] = sprintf(__('Please set %s for this post.', 'hocwp-theme'), '<strong>' . $taxonomy->labels->singular_name . '</strong>'); } } } } $acreages = hocwp_object_valid($acreage) ? wp_get_post_terms($post_id, $acreage->name) : ''; $prices = hocwp_object_valid($price) ? wp_get_post_terms($post_id, $price->name) : ''; $salaries = hocwp_object_valid($salary) ? wp_get_post_terms($post_id, $salary->name) : ''; $objects = hocwp_object_valid($classifieds_object) ? wp_get_post_terms($post_id, $classifieds_object->name) : ''; $terms = array(); foreach ($custom_taxonomies as $taxonomy) { if ($taxonomy->hierarchical) { $post_terms = wp_get_post_terms($post_id, $taxonomy->name); if (hocwp_array_has_value($post_terms)) { $terms = array_merge($terms, $post_terms); } } } if (!hocwp_array_has_value($errors) && !hocwp_array_has_value($terms)) { //$errors[] = __('Please set term for this post in right way.', 'hocwp-theme'); } if (hocwp_array_has_value($errors)) { if (get_post_status($post_id) == 'publish') { $post_data = array('ID' => $post_id, 'post_status' => 'pending'); wp_update_post($post_data); } set_transient('hocwp_save_classifieds_post_' . $post_id . '_error', $errors); } } } }