KSA
Well-known member
Working on tweaking a search function I have and currently struggling to have child under parent appears in different field (a second field) when parent is selected. Currently they are in the same field, either hierarchical or alphabetical.
so I would like to: select country (dropdown) select state (dropdown once country is selected) select city (dropdown once state is selected)
Here is the entire code.
Any little help would be appreciated
Code:
`parent`
`-level 1`
`--level 2`
`--- level 3`
`----level 4`
so I would like to: select country (dropdown) select state (dropdown once country is selected) select city (dropdown once state is selected)
Here is the entire code.
Any little help would be appreciated
Code:
<?php
if (!function_exists('search_hero3_short')) {
function search_hero3_short() {
$cat_array = array();
$cat_array = apply_filters('my_theme_ajax_load_categories', $cat_array, 'cat');
vc_map(array(
"name" => __("Search - Hero 3", 'my_theme'),
"base" => "search_hero3_short_base",
"category" => __("Theme Shortcodes", 'my_theme'),
"params" => array(
array(
'group' => __('Shortcode Output', 'my_theme'),
'type' => 'custom_markup',
'heading' => __('Shortcode Output', 'my_theme'),
'param_name' => 'order_field_key',
'description' => my_theme_VCImage('hero3.png') . __('Ouput of the shortcode will be look like this.', 'my_theme'),
),
array(
"group" => __("Basic", "my_theme"),
"type" => "attach_image",
"holder" => "bg_img",
"class" => "",
"heading" => __("Background Image", 'my_theme'),
"param_name" => "bg_img",
"description" => __("1280x800", 'my_theme'),
),
array(
"group" => __("Basic", "my_theme"),
"type" => "textfield",
"holder" => "div",
"class" => "",
"heading" => __("Section Title", 'my_theme'),
"description" => __("%count% for total ads.", 'my_theme'),
"param_name" => "section_title",
),
array(
"group" => __("Basic", "my_theme"),
"type" => "textfield",
"holder" => "div",
"class" => "",
"heading" => __("Main Title", 'my_theme'),
"param_name" => "sub_title",
),
array(
"group" => __("Basic", "my_theme"),
"type" => "textfield",
"holder" => "div",
"class" => "",
"heading" => __("Button Text", 'my_theme'),
"param_name" => "btn_text",
),
array(
"group" => __("Basic", "my_theme"),
"type" => "textfield",
"holder" => "div",
"class" => "",
"heading" => __("Search Block Text", 'my_theme'),
"param_name" => "block_text",
),
array(
"group" => __("Basic", "my_theme"),
"type" => "textarea",
"holder" => "div",
"class" => "",
"heading" => __("Section Tagline", 'my_theme'),
"param_name" => "section_description",
),
array(
"group" => __("Location type", "my_theme"),
"type" => "dropdown",
"heading" => __("Location type", 'my_theme'),
"param_name" => "location_type",
"admin_label" => true,
"value" => array(
__('Google', 'my_theme') => 'g_locations',
__('Custom Location', 'my_theme') => 'custom_locations',
),
'edit_field_class' => 'vc_col-sm-12 vc_column',
),
apply_filters('my_theme_admin_category_load_field', array()),
array
(
'group' => __('Categories', 'my_theme'),
'type' => 'param_group',
'heading' => __('Select Category ( All or Selective )', 'my_theme'),
'param_name' => 'cats',
'dependency' => array(
'element' => 'cat_frontend_switch',
'value' => array(''),
),
'value' => '',
'params' => array
($cat_array)
),
array
(
'group' => __('Custom Loctions', 'my_theme'),
'type' => 'param_group',
'heading' => __('Location', 'my_theme'),
'param_name' => 'locations',
'value' => '',
'params' => array
(
array(
"type" => "dropdown",
"heading" => __("Location", 'my_theme'),
"param_name" => "location",
"admin_label" => true,
"value" => my_theme_cats('ad_country', 'yes'),
),
)
),
),
));
}
}
add_action('vc_before_init', 'search_hero3_short');
if (!function_exists('search_hero3_short_base_func')) {
function search_hero3_short_base_func($atts, $content = '') {
extract(shortcode_atts(array(
'bg_img' => '',
'section_title' => '',
'sub_title' => '',
'section_description' => '',
'btn_text' => '',
'block_text' => '',
'location_type' => '',
'cats' => '',
'locations' => '',
), $atts));
extract($atts);
global $my_theme_theme;
$sb_search_page = apply_filters('my_theme_language_page_id', $my_theme_theme['sb_search_page']);
$sb_post_ad_page = apply_filters('my_theme_language_page_id', $my_theme_theme['sb_post_ad_page']);
$cats = false;
$cats_html = '';
$jax_cat_class = '';
if (isset($atts['cat_frontend_switch']) && $atts['cat_frontend_switch'] == 'ajax_based') {
$jax_cat_class = 'sb-load-ajax-cats ';
} else {
if (isset($my_theme_elementor) && $my_theme_elementor) {
$rows = $atts['cats'];
} else {
$rows = vc_param_group_parse_atts($atts['cats']);
$rows = apply_filters('my_theme_validate_term_type', $rows);
}
if (is_array($rows) && count($rows) > 0) {
$cats_html .= '';
foreach ($rows as $row) {
if (isset($my_theme_elementor) && $my_theme_elementor) {
$cat_idd = $row;
} else {
$cat_idd = $row['cat'];
}
if (isset($cat_idd)) {
if ($cat_idd == 'all') {
$cats = true;
$cats_html = '';
break;
}
$term = get_term($cat_idd, 'ad_cats');
$cats_html .= '<option value="' . $cat_idd . '">' . $term->name . '</option>';
}
}
if ($cats) {
if (isset($my_theme_theme['display_taxonomies']) && $my_theme_theme['display_taxonomies'] == 'hierarchical') {
$args = array(
'type' => 'html',
'taxonomy' => 'ad_cats',
'tag' => 'option',
'parent_id' => 0,
);
$cats_html = apply_filters('my_theme_tax_hierarchy', $cats_html, $args);
} else {
$args = array('hide_empty' => 0);
$args = apply_filters('my_theme_wpml_show_all_posts', $args); // for all lang texonomies
$ad_cats = get_terms('ad_cats', $args);
foreach ($ad_cats as $cat) {
$cats_html .= '<option value="' . $cat->term_id . '">' . $cat->name . '</option>';
}
}
}
}
}
// For custom locations
$locations_html = '';
$args_loc = array('hide_empty' => 0);
$loc_flag = FALSE;
if (isset($my_theme_elementor) && $my_theme_elementor) {
$rows = (isset($atts['locations']) && $atts['locations'] != '' ? $atts['locations'] : '');
if (isset($rows[0]) && $rows[0] == 'all' && isset($location_type) && $location_type == 'custom_locations') {
$loc_flag = TRUE;
}
} else {
$rows = vc_param_group_parse_atts(isset($atts['locations']) && $atts['locations'] != '' ? $atts['locations'] : '');
if (isset($rows[0]['location']) && $rows[0]['location'] == 'all' && isset($location_type) && $location_type == 'custom_locations') {
$loc_flag = TRUE;
}
}
if ($loc_flag) {
$locations_html .= ' <option value="">' . esc_html__('Select location', 'my_theme') . ' </option> ';
if (isset($my_theme_theme['display_taxonomies']) && $my_theme_theme['display_taxonomies'] == 'hierarchical') {
$args = array(
'type' => 'html',
'taxonomy' => 'ad_country',
'tag' => 'option',
'parent_id' => 0,
);
$locations_html = apply_filters('my_theme_tax_hierarchy', $locations_html, $args);
} else {
$ad_country_arr = get_terms('ad_country', $args_loc);
if (isset($ad_country_arr) && count($ad_country_arr) > 0) {
foreach ($ad_country_arr as $loc_value) {
$locations_html .= ' <option value="' . intval($loc_value->term_id) . '">' . esc_html($loc_value->name) . ' </option> ';
}
}
}
} else {
if (count((array) $rows) > 0 ) {
$locations_html .= '';
foreach ($rows as $row) {
if (isset($my_theme_elementor) && $my_theme_elementor) {
$loc_ids = isset($row) ? $row : '';
}else{
$loc_ids = isset($row['location']) ? $row['location'] : '';
}
if (isset($loc_ids) && $loc_ids != '') {
$term = get_term($loc_ids, 'ad_country');
if(isset($term->name)) {
$locations_html .= ' <option value="' . $loc_ids . '">' . $term->name . '</option> ';
}}
}
}
}
$style = '';
if ($bg_img != "") {
$bgImageURL = my_theme_returnImgSrc($bg_img);
$style = ( $bgImageURL != "" ) ? ' style="background: url(' . $bgImageURL . '); width: 100%;height: 750px;background-size: cover;background-repeat: no-repeat;background-attachment: scroll;background-position: center center;"' : "";
}
$contries_script = '';
$location_type_html = '';
if (isset($location_type) && $location_type == 'custom_locations') {
$location_type_html = '<select class="category form-control" name="country_id" data-placeholder="' . __('Select Location', 'my_theme') . '">
<option label="' . __('Select Location', 'my_theme') . '" value="">' . __('Select Location', 'my_theme') . '</option>
' . $locations_html . '
</select>';
} else {
ob_start();
my_theme_load_search_countries();
$contries_script = ob_get_contents();
ob_end_clean();
wp_enqueue_script('google-map-callback');
$location_type_html = '<input class="form-control" name="location" id="sb_user_address" placeholder="' . __('Location...', 'my_theme') . '" type="text">';
}
$count_posts = wp_count_posts('ad_post');
$main_title = '';
$section_title_html = '';
if (isset($section_title) && $section_title != '') {
$main_title = str_replace('%count%', '<b>' . $count_posts->publish . '</b>', $section_title);
$section_title_html = '<div class="classified-text"><h1>' . $main_title . '</h1></div>';
}
$sub_title_html = '';
if (isset($sub_title) && $sub_title != '') {
$sub_title_html = '<div class="classified-short-text"><p>' . $sub_title . '</p></div>';
}
$btn_text_html = '';
if (isset($btn_text) && $btn_text != '') {
$btn_text_html = '<div class="ad-button-r1"><a href="' . get_the_permalink($sb_post_ad_page) . '" class="btn btn-theme color-white">' . $btn_text . '</a></div>';
}
return $contries_script . '<section class="ads-listing-section"' . $style . '>
<div class="container">
<div class="row">
<div class="col-lg-7 col-xs-12 col-sm-12 col-md-7">
<div class="classified-ad-listing">
' . $section_title_html . '
' . $sub_title_html . '
' . $btn_text_html . '
</div>
</div>
<div class="col-lg-5 col-xs-12 col-sm-12 col-md-5">
<div class="form-listing">
<form class="form-join" action="' . urldecode(get_the_permalink($sb_search_page)) . '">
<div class="form-group">
<label for="exampleInputEmail1">' . __('Title', 'my_theme') . '</label>
<input class="form-control" autocomplete="off" name="ad_title" placeholder="' . __('What Are You Looking For...', 'my_theme') . '" type="text">
</div>
<div class="form-group">
<label for="exampleInputEmail1">' . __('Select Category', 'my_theme') . '</label>
<select class="' . $jax_cat_class . 'category form-control" name="cat_id" data-placeholder="' . __('Select Category', 'my_theme') . '"><option label="' . __('Select Category', 'my_theme') . '" value="">' . __('Select Category', 'my_theme') . '</option>' . $cats_html . '</select>
</div>
<div class="form-group">
<label for="exampleInputEmail1">' . __('Location', 'my_theme') . '</label>' . $location_type_html . '</div>
' . apply_filters('my_theme_form_lang_field', false) . '
<div class="button-blocks"><button class="btn btn-theme btn-block" type="submit">' . __('search', 'my_theme') . '</button></div>
</form>
</div>
</div>
</div>
</div>
</section>';
}
}
if (function_exists('my_theme_add_code')) {
my_theme_add_code('search_hero3_short_base', 'search_hero3_short_base_func');
}