$name, 'singular_name' => $singular, 'slug' => fansub_taxonomy_province_base(), 'taxonomy' => 'province', 'post_types' => $post_type ); fansub_register_taxonomy($args); $name = __('Districts', 'fansub'); $singular = __('District', 'fansub'); if('vi' == $lang) { $name = 'Quận / Huyện'; $singular = $name; } $args = array( 'name' => $name, 'singular_name' => $singular, 'slug' => fansub_taxonomy_district_base(), 'taxonomy' => 'district', 'show_admin_column' => false, 'post_types' => $post_type ); fansub_register_taxonomy($args); $name = __('Wards', 'fansub'); $singular = __('Ward', 'fansub'); if('vi' == $lang) { $name = 'Phường / Xã'; $singular = $name; } $args = array( 'name' => $name, 'singular_name' => $singular, 'slug' => fansub_taxonomy_ward_base(), 'taxonomy' => 'ward', 'show_admin_column' => false, 'post_types' => $post_type ); fansub_register_taxonomy($args); $hamlet = apply_filters('fansub_administrative_boundaries_hamlet', false); if($hamlet) { $name = __('Hamlets', 'fansub'); $singular = __('Hamlet', 'fansub'); if('vi' == $lang) { $name = 'Thôn / Xóm'; $singular = $name; } $args = array( 'name' => $name, 'singular_name' => $singular, 'slug' => fansub_taxonomy_hamlet_base(), 'taxonomy' => 'hamlet', 'show_admin_column' => false, 'post_types' => $post_type ); fansub_register_taxonomy($args); } $name = __('Streets', 'fansub'); $singular = __('Street', 'fansub'); if('vi' == $lang) { $name = 'Đường / Phố'; $singular = $name; } $args = array( 'name' => $name, 'singular_name' => $singular, 'slug' => fansub_taxonomy_street_base(), 'taxonomy' => 'street', 'show_admin_column' => false, 'post_types' => $post_type ); fansub_register_taxonomy($args); } function fansub_classifieds_get_saved_posts_page() { $result = fansub_get_option_page('saved_posts_page', 'tin-da-luu', 'fansub-theme-setting', 'page-templates/saved-posts.php'); if(!is_a($result, 'WP_Post')) { $result = fansub_get_page_by_template('page-templates/favorite-posts.php'); } return apply_filters('fansub_classifieds_get_saved_posts_page', $result); } function fansub_classifieds_get_add_post_page() { $result = fansub_get_option_page('add_post_page', 'dang-tin', 'fansub-theme-setting', 'page-templates/add-post.php'); return apply_filters('fansub_classifieds_get_add_post_page', $result); } function fansub_classifieds_get_manage_profile_page() { $result = fansub_get_option_page('manage_profile_page', 'thong-tin-ca-nhan', 'fansub-theme-setting', 'page-templates/manage-profile.php'); return apply_filters('fansub_classifieds_get_manage_profile_page', $result); } function fansub_classifieds_get_price($post_id = null) { $price = fansub_get_post_meta('price', $post_id); if(empty($price)) { $price = fansub_post_get_first_term($post_id, 'price'); if(is_a($price, 'WP_Term')) { $price = $price->name; } else { $price = 'Thỏa thuận'; } } return $price; } function fansub_classifieds_get_administrative_boundary($post_id = null, $only_province = false) { if(!fansub_id_number_valid($post_id)) { $post_id = get_the_ID(); } $terms = wp_get_post_terms($post_id, 'category'); $result = ''; if(fansub_array_has_value($terms)) { $childs = array(); foreach($terms as $term) { if($term->parent > 0) { $childs[] = $term; break; } } if(fansub_array_has_value($childs)) { $child = array_shift($childs); $parent = get_category($child->parent); while($parent->parent > 0) { $child = $parent; $parent = get_category($child->parent); } if($only_province) { $result = $parent->name; } else { $result = $child->name . ', ' . $parent->name; } } else { $term = array_shift($terms); $result = $term->name; } } return $result; } $use = apply_filters('fansub_classifieds_site', false); if(!$use) { return; } function fansub_classifieds_post_type_and_taxonomy() { $lang = fansub_get_language(); $name = __('Types', 'fansub'); $singular = __('Type', 'fansub'); if('vi' == $lang) { $name = 'Thể loại'; $singular = $name; } $args = array( 'name' => $name, 'singular_name' => $singular, 'slug' => fansub_taxonomy_classifieds_type_base(), 'taxonomy' => 'classifieds_type', 'post_types' => array('post') ); fansub_register_taxonomy($args); $custom_taxonomy = apply_filters('fansub_classifieds_custom_taxonomy', false); if($custom_taxonomy) { fansub_register_taxonomy_administrative_boundaries(); } else { } $name = __('Prices', 'fansub'); $singular = __('Price', 'fansub'); if('vi' == $lang) { $name = 'Mức giá'; $singular = $name; } $args = array( 'name' => $name, 'singular_name' => $singular, 'slug' => fansub_taxonomy_price_base(), 'taxonomy' => 'price', 'show_admin_column' => false, 'post_types' => array('post') ); fansub_register_taxonomy($args); $name = __('Acreages', 'fansub'); $singular = __('Acreage', 'fansub'); if('vi' == $lang) { $name = 'Diện tích'; $singular = $name; } $args = array( 'name' => $name, 'singular_name' => $singular, 'slug' => fansub_taxonomy_acreage_base(), 'taxonomy' => 'acreage', 'show_admin_column' => false, 'post_types' => array('post') ); fansub_register_taxonomy($args); $use = apply_filters('fansub_use_taxonomy_classifieds_object', false); if($use) { $name = __('Objects', 'fansub'); $singular = __('Object', 'fansub'); if('vi' == $lang) { $name = 'Đối tượng'; $singular = $name; } $args = array( 'name' => $name, 'singular_name' => $singular, 'slug' => fansub_taxonomy_classifieds_object_base(), 'taxonomy' => 'classifieds_object', 'show_admin_column' => false, 'post_types' => array('post') ); fansub_register_taxonomy($args); } $use = apply_filters('fansub_use_taxonomy_salary', false); if($use) { $name = __('Salaries', 'fansub'); $singular = __('Salary', 'fansub'); if('vi' == $lang) { $name = 'Mức lương'; $singular = $name; } $args = array( 'name' => $name, 'singular_name' => $singular, 'slug' => fansub_taxonomy_salary_base(), 'taxonomy' => 'salary', 'show_admin_column' => false, 'post_types' => array('post') ); fansub_register_taxonomy($args); } fansub_register_post_type_news(); } add_action('init', 'fansub_classifieds_post_type_and_taxonomy', 10); if('post.php' == $GLOBALS['pagenow'] || 'post-new.php' == $GLOBALS['pagenow']) { $current_user = wp_get_current_user(); $meta = new HOCWP_Meta('post'); $meta->add_post_type('post'); $meta->set_title(__('General Information', 'fansub')); $meta->set_id('classifieds_general_information'); $meta->add_field(array('id' => 'address', 'label' => __('Address:', 'fansub'), 'class' => 'fansub-geo-address', 'default' => get_user_meta($current_user->ID, 'address', true))); $meta->add_field(array('id' => 'price', 'label' => __('Price:', 'fansub'))); $meta->add_field(array('id' => 'phone', 'label' => __('Phone:', 'fansub'), 'default' => get_user_meta($current_user->ID, 'phone', true))); $meta->add_field(array('id' => 'email', 'label' => __('Email:', 'fansub'), 'default' => $current_user->user_email)); $meta->add_field(array('id' => 'acreage', 'label' => __('Acreage:', 'fansub'))); $meta->init(); fansub_meta_box_editor_gallery(array('post_type' => 'post')); fansub_meta_box_google_maps(); } function fansub_classifieds_filter_taxonomy_base($base, $taxonomy) { switch($taxonomy) { case 'classifieds_type': $base = fansub_taxonomy_classifieds_type_base(); break; } return $base; } add_filter('fansub_remove_term_base_taxonomy_base', 'fansub_classifieds_filter_taxonomy_base', 99, 2); function fansub_classifieds_scripts() { if(is_single()) { fansub_register_lib_google_maps(); } elseif(is_page()) { $post_id = get_the_ID(); $add_post_page = fansub_classifieds_get_add_post_page(); if(is_a($add_post_page, 'WP_Post')) { if($post_id == $add_post_page->ID) { fansub_register_lib_google_maps(); } } } } add_action('wp_enqueue_scripts', 'fansub_classifieds_scripts'); function fansub_classifieds_admin_scripts() { global $pagenow; if('post-new.php' == $pagenow || 'post.php' == $pagenow) { fansub_register_lib_google_maps(); } } add_action('admin_enqueue_scripts', 'fansub_classifieds_admin_scripts'); function fansub_classifieds_admin_body_class($classes) { global $pagenow; fansub_add_string_with_space_before($classes, 'classifieds'); if('post-new.php' == $pagenow || 'post.php' == $pagenow) { fansub_add_string_with_space_before($classes, 'fansub-google-maps'); } return $classes; } add_filter('admin_body_class', 'fansub_classifieds_admin_body_class'); function fansub_classifieds_admin_class($classes) { $classes[] = 'classifieds'; if(is_single()) { $classes[] = 'fansub-google-maps'; } elseif(is_page()) { $post_id = get_the_ID(); $add_post_page = fansub_classifieds_get_add_post_page(); if(is_a($add_post_page, 'WP_Post')) { if($post_id == $add_post_page->ID) { $classes[] = 'fansub-google-maps'; } } } return $classes; } add_filter('body_class', 'fansub_classifieds_admin_class'); function fansub_classifieds_pre_post_thumbnail($url, $post_id) { if(empty($url)) { $gallery = fansub_get_post_meta('gallery', $post_id); $url = fansub_get_first_image_source($gallery); } return $url; } add_filter('fansub_post_pre_post_thumbnail', 'fansub_classifieds_pre_post_thumbnail', 10, 2); function fansub_classifieds_widget_post_after_post($args, $instance, $widget) { global $post; if(is_a($post, 'WP_Post')) { if('post' == $post->post_type) { $modified = get_post_modified_time('U', false, $post); $salary = fansub_post_get_first_term($post->ID, 'salary'); ?>
name; ?>
is_main_query()) { if(is_search()) { $type = fansub_get_value_by_key($_REQUEST, 'type'); $province = fansub_get_value_by_key($_REQUEST, 'province'); $district = fansub_get_value_by_key($_REQUEST, 'district'); $ward = fansub_get_value_by_key($_REQUEST, 'ward'); $street = fansub_get_value_by_key($_REQUEST, 'street'); $price = fansub_get_value_by_key($_REQUEST, 'price'); $acreage = fansub_get_value_by_key($_REQUEST, 'acreage'); $object = fansub_get_value_by_key($_REQUEST, 'object'); $salary = fansub_get_value_by_key($_REQUEST, 'salary'); $tax_query = array( 'relation' => 'AND' ); if(fansub_id_number_valid($type)) { $tax_item = array( 'taxonomy' => 'classifieds_type', 'field' => 'id', 'terms' => $type ); fansub_query_sanitize_tax_query($tax_item, $tax_query); } if(fansub_id_number_valid($province)) { $tax_item = array( 'taxonomy' => 'category', 'field' => 'id', 'terms' => $province ); fansub_query_sanitize_tax_query($tax_item, $tax_query); } if(fansub_id_number_valid($district)) { $tax_item = array( 'taxonomy' => 'category', 'field' => 'id', 'terms' => $district ); fansub_query_sanitize_tax_query($tax_item, $tax_query); } if(fansub_id_number_valid($ward)) { $tax_item = array( 'taxonomy' => 'category', 'field' => 'id', 'terms' => $ward ); fansub_query_sanitize_tax_query($tax_item, $tax_query); } if(fansub_id_number_valid($street)) { $tax_item = array( 'taxonomy' => 'category', 'field' => 'id', 'terms' => $street ); fansub_query_sanitize_tax_query($tax_item, $tax_query); } unset($query->query['price']); unset($query->query_vars['price']); if(fansub_id_number_valid($price)) { $tax_item = array( 'taxonomy' => 'price', 'field' => 'id', 'terms' => $price ); fansub_query_sanitize_tax_query($tax_item, $tax_query); } unset($query->query['acreage']); unset($query->query_vars['acreage']); if(fansub_id_number_valid($acreage)) { $tax_item = array( 'taxonomy' => 'acreage', 'field' => 'id', 'terms' => $acreage ); fansub_query_sanitize_tax_query($tax_item, $tax_query); } if(fansub_id_number_valid($object)) { $tax_item = array( 'taxonomy' => 'classifieds_object', 'field' => 'id', 'terms' => $object ); fansub_query_sanitize_tax_query($tax_item, $tax_query); } unset($query->query['salary']); unset($query->query_vars['salary']); if(fansub_id_number_valid($salary)) { $tax_item = array( 'taxonomy' => 'salary', 'field' => 'id', 'terms' => $salary ); fansub_query_sanitize_tax_query($tax_item, $tax_query); } $tax_query = fansub_get_value_by_key($tax_query, 'tax_query', $tax_query); $tax_query['relation'] = 'AND'; $query->set('tax_query', $tax_query); $query->set('post_type', 'post'); } } return $query; } if(!is_admin()) add_action('pre_get_posts', 'fansub_classifieds_pre_get_posts'); function fansub_classifieds_admin_pre_get_posts($query) { global $pagenow, $post_type; $user = wp_get_current_user(); if('edit.php' == $pagenow && !fansub_is_admin()) { $query->set('author', $user->ID); } return $query; } if(is_admin() && fansub_prevent_author_see_another_post()) add_action('pre_get_posts', 'fansub_classifieds_admin_pre_get_posts'); function fansub_classifieds_save_post($post_id) { if(!fansub_can_save_post($post_id)) { return; } global $post_type; if(empty($post_type)) { $post_type = fansub_get_current_post_type(); } if(empty($post_type) || 'post' == $post_type) { if(fansub_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 = fansub_post_get_taxonomies(get_post($post_id), 'objects'); $custom_taxonomies = array(); $salary = fansub_get_value_by_key($taxonomies, 'salary'); $acreage = fansub_get_value_by_key($taxonomies, 'acreage'); $price = fansub_get_value_by_key($taxonomies, 'price'); $classifieds_object = fansub_get_value_by_key($taxonomies, 'classifieds_object'); if(fansub_object_valid($salary)) { //$custom_taxonomies[$salary->name] = $salary; } if(fansub_object_valid($price)) { //$custom_taxonomies[$price->name] = $price; } if(fansub_object_valid($acreage)) { //$custom_taxonomies[$acreage->name] = $acreage; } if(fansub_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(fansub_array_has_value($taxonomies)) { foreach($taxonomies as $taxonomy) { if($taxonomy->hierarchical) { $terms = wp_get_post_terms($post_id, $taxonomy->name); if(!fansub_array_has_value($terms)) { //$errors[] = sprintf(__('Please set %s for this post.', 'fansub'), '' . $taxonomy->labels->singular_name . ''); } } } } $acreages = (fansub_object_valid($acreage)) ? wp_get_post_terms($post_id, $acreage->name) : ''; $prices = (fansub_object_valid($price)) ? wp_get_post_terms($post_id, $price->name) : ''; $salaries = (fansub_object_valid($salary)) ? wp_get_post_terms($post_id, $salary->name) : ''; $objects = (fansub_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(fansub_array_has_value($post_terms)) { $terms = array_merge($terms, $post_terms); } } } if(!fansub_array_has_value($errors) && !fansub_array_has_value($terms)) { //$errors[] = __('Please set term for this post in right way.', 'fansub'); } if(fansub_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('fansub_save_classifieds_post_' . $post_id . '_error', $errors); } } } } add_action('save_post', 'fansub_classifieds_save_post', 99); function fansub_classifieds_admin_notice() { $post_id = fansub_get_method_value('post', 'request'); if(fansub_id_number_valid($post_id)) { $transient_name = 'fansub_save_classifieds_post_' . $post_id . '_error'; $errors = get_transient($transient_name); if(false !== $errors) { foreach($errors as $error) { fansub_admin_notice(array('text' => $error, 'error' => true)); } delete_transient($transient_name); } } } add_action('admin_notices', 'fansub_classifieds_admin_notice'); function fansub_classifieds_admin_menu() { $role = fansub_get_user_role(wp_get_current_user()); if('subscriber' == $role) { $post_types = get_post_types(); unset($post_types['post']); foreach($post_types as $post_type) { remove_menu_page('edit.php?post_type=' . $post_type); } remove_menu_page('edit-comments.php'); remove_menu_page('tools.php'); } } add_action('admin_menu', 'fansub_classifieds_admin_menu', 99); function fansub_classifieds_admin_init() { global $pagenow; $role = get_role('subscriber'); if(fansub_object_valid($role)) { $role->add_cap('publish_posts'); $role->add_cap('edit_posts'); } if('post-new.php' == $pagenow) { if(fansub_is_subscriber()) { $post_type = fansub_get_current_post_type(); if(!empty($post_type) && 'post' !== $post_type) { wp_redirect(admin_url()); exit; } } } } add_action('admin_init', 'fansub_classifieds_admin_init', 0); add_filter('fansub_use_addthis', '__return_true'); function fansub_classifieds_on_wp_run() { if(!is_user_logged_in()) { if(is_page_template('page-templates/favorite-posts.php') || is_page_template('page-templates/add-post.php') || is_page_template('page-templates/account.php')) { wp_redirect(wp_login_url()); exit; } } } add_action('wp', 'fansub_classifieds_on_wp_run');