Function Reference: geodir_set_postcat_structure
Summary
Set post category structure based on given parameters.
Package
GeoDirectory
Parameters
- $post_id
- (int) (required) The post ID.
- Default: None
- $taxonomy
- (string) (required) Name of the taxonomy e. g place_category.
- Default: None
- $default_cat
- (string|int) (optional) The default category ID.
- Default: None
- $category_str
- (array|string) (optional) Blank string if no categories. Else array of categories to set.
- Default: None
Change Log
Since: 1.0.0
Source File
geodir_set_postcat_structure() is located in geodirectory-functions/post_functions.php [Line: 20]
Source Code
function geodir_set_postcat_structure($post_id, $taxonomy, $default_cat = '', $category_str = '') { $post_cat_ids = geodir_get_post_meta($post_id, $taxonomy); if (!empty($post_cat_ids)) $post_cat_array = explode(",", trim($post_cat_ids, ",")); if (!isset($default_cat) || empty($default_cat)) { $default_cat = isset($post_cat_array[0]) ? $post_cat_array[0] : ''; }else{ if(!is_int($default_cat)){ $category = get_term_by('name', $default_cat, $taxonomy); if(isset($category->term_id)){ $default_cat = $category->term_id; } } } geodir_save_post_meta($post_id, 'default_category', $default_cat); if (isset($category_str) && empty($category_str)) { $post_cat_str = ''; $post_categories = array(); if (isset($post_cat_array) && is_array($post_cat_array) && !empty($post_cat_array)) { $post_cat_str = implode(",y:#", $post_cat_array); $post_cat_str .= ",y:"; $post_cat_str = substr_replace($post_cat_str, ',y,d:', strpos($post_cat_str, ',y:'), strlen(',y:')); } $post_categories[$taxonomy] = $post_cat_str; $category_str = $post_categories; } $change_cat_str = $category_str[$taxonomy]; $default_pos = strpos($change_cat_str, 'd:'); if ($default_pos === false) { $change_cat_str = str_replace($default_cat . ',y:', $default_cat . ',y,d:', $change_cat_str); } $category_str[$taxonomy] = $change_cat_str; update_post_meta($post_id, 'post_categories', $category_str); }