784 lines
23 KiB
PHP
784 lines
23 KiB
PHP
|
<?php
|
||
|
function fansub_taxonomy_province_base() {
|
||
|
$lang = fansub_get_language();
|
||
|
$default = 'province';
|
||
|
if('vi' == $lang) {
|
||
|
$default = 'tinh-thanh';
|
||
|
}
|
||
|
$option = get_option('fansub_permalink');
|
||
|
$base = fansub_get_value_by_key($option, 'province_base', $default);
|
||
|
$base = apply_filters('fansub_taxonomy_province_base', $base);
|
||
|
if(empty($base)) {
|
||
|
$base = $default;
|
||
|
}
|
||
|
return $base;
|
||
|
}
|
||
|
|
||
|
function fansub_taxonomy_district_base() {
|
||
|
$lang = fansub_get_language();
|
||
|
$default = 'district';
|
||
|
if('vi' == $lang) {
|
||
|
$default = 'quan-huyen';
|
||
|
}
|
||
|
$option = get_option('fansub_permalink');
|
||
|
$base = fansub_get_value_by_key($option, 'district_base', $default);
|
||
|
$base = apply_filters('fansub_taxonomy_district_base', $base);
|
||
|
if(empty($base)) {
|
||
|
$base = $default;
|
||
|
}
|
||
|
return $base;
|
||
|
}
|
||
|
|
||
|
function fansub_taxonomy_ward_base() {
|
||
|
$lang = fansub_get_language();
|
||
|
$default = 'ward';
|
||
|
if('vi' == $lang) {
|
||
|
$default = 'phuong-xa';
|
||
|
}
|
||
|
$option = get_option('fansub_permalink');
|
||
|
$base = fansub_get_value_by_key($option, 'ward_base', $default);
|
||
|
$base = apply_filters('fansub_taxonomy_ward_base', $base);
|
||
|
if(empty($base)) {
|
||
|
$base = $default;
|
||
|
}
|
||
|
return $base;
|
||
|
}
|
||
|
|
||
|
function fansub_taxonomy_hamlet_base() {
|
||
|
$lang = fansub_get_language();
|
||
|
$default = 'hamlet';
|
||
|
if('vi' == $lang) {
|
||
|
$default = 'thon-xom';
|
||
|
}
|
||
|
$option = get_option('fansub_permalink');
|
||
|
$base = fansub_get_value_by_key($option, 'hamlet_base', $default);
|
||
|
$base = apply_filters('fansub_taxonomy_hamlet_base', $base);
|
||
|
if(empty($base)) {
|
||
|
$base = $default;
|
||
|
}
|
||
|
return $base;
|
||
|
}
|
||
|
|
||
|
function fansub_taxonomy_street_base() {
|
||
|
$lang = fansub_get_language();
|
||
|
$default = 'street';
|
||
|
if('vi' == $lang) {
|
||
|
$default = 'duong-pho';
|
||
|
}
|
||
|
$option = get_option('fansub_permalink');
|
||
|
$base = fansub_get_value_by_key($option, 'street_base', $default);
|
||
|
$base = apply_filters('fansub_taxonomy_street_base', $base);
|
||
|
if(empty($base)) {
|
||
|
$base = $default;
|
||
|
}
|
||
|
return $base;
|
||
|
}
|
||
|
|
||
|
function fansub_taxonomy_price_base() {
|
||
|
$lang = fansub_get_language();
|
||
|
$default = 'price';
|
||
|
if('vi' == $lang) {
|
||
|
$default = 'muc-gia';
|
||
|
}
|
||
|
$option = get_option('fansub_permalink');
|
||
|
$base = fansub_get_value_by_key($option, 'price_base', $default);
|
||
|
$base = apply_filters('fansub_taxonomy_price_base', $base);
|
||
|
if(empty($base)) {
|
||
|
$base = $default;
|
||
|
}
|
||
|
return $base;
|
||
|
}
|
||
|
|
||
|
function fansub_taxonomy_acreage_base() {
|
||
|
$lang = fansub_get_language();
|
||
|
$default = 'acreage';
|
||
|
if('vi' == $lang) {
|
||
|
$default = 'dien-tich';
|
||
|
}
|
||
|
$option = get_option('fansub_permalink');
|
||
|
$base = fansub_get_value_by_key($option, 'acreage_base', $default);
|
||
|
$base = apply_filters('fansub_taxonomy_acreage_base', $base);
|
||
|
if(empty($base)) {
|
||
|
$base = $default;
|
||
|
}
|
||
|
return $base;
|
||
|
}
|
||
|
|
||
|
function fansub_taxonomy_classifieds_type_base() {
|
||
|
$lang = fansub_get_language();
|
||
|
$default = 'type';
|
||
|
if('vi' == $lang) {
|
||
|
$default = 'the-loai';
|
||
|
}
|
||
|
$option = get_option('fansub_permalink');
|
||
|
$base = fansub_get_value_by_key($option, 'classifieds_type_base', $default);
|
||
|
$base = apply_filters('fansub_taxonomy_classifieds_type_base', $base);
|
||
|
if(empty($base)) {
|
||
|
$base = $default;
|
||
|
}
|
||
|
return $base;
|
||
|
}
|
||
|
|
||
|
function fansub_taxonomy_classifieds_object_base() {
|
||
|
$lang = fansub_get_language();
|
||
|
$default = 'object';
|
||
|
if('vi' == $lang) {
|
||
|
$default = 'doi-tuong';
|
||
|
}
|
||
|
$option = get_option('fansub_permalink');
|
||
|
$base = fansub_get_value_by_key($option, 'classifieds_object_base', $default);
|
||
|
$base = apply_filters('fansub_taxonomy_classifieds_object_base', $base);
|
||
|
if(empty($base)) {
|
||
|
$base = $default;
|
||
|
}
|
||
|
return $base;
|
||
|
}
|
||
|
|
||
|
function fansub_taxonomy_salary_base() {
|
||
|
$lang = fansub_get_language();
|
||
|
$default = 'salary';
|
||
|
if('vi' == $lang) {
|
||
|
$default = 'muc-luong';
|
||
|
}
|
||
|
$option = get_option('fansub_permalink');
|
||
|
$base = fansub_get_value_by_key($option, 'salary_base', $default);
|
||
|
$base = apply_filters('fansub_taxonomy_salary_base', $base);
|
||
|
if(empty($base)) {
|
||
|
$base = $default;
|
||
|
}
|
||
|
return $base;
|
||
|
}
|
||
|
|
||
|
function fansub_administrative_boundaries_post_types() {
|
||
|
$types = array('post');
|
||
|
$types = apply_filters('fansub_administrative_boundaries_post_types', $types);
|
||
|
return $types;
|
||
|
}
|
||
|
|
||
|
function fansub_register_taxonomy_administrative_boundaries($post_type = null) {
|
||
|
if(!is_array($post_type)) {
|
||
|
$post_type = fansub_administrative_boundaries_post_types();
|
||
|
}
|
||
|
$lang = fansub_get_language();
|
||
|
$name = __('Provinces', 'fansub');
|
||
|
$singular = __('Province', 'fansub');
|
||
|
if('vi' == $lang) {
|
||
|
$name = 'Tỉnh / Thành phố';
|
||
|
$singular = $name;
|
||
|
}
|
||
|
$args = array(
|
||
|
'name' => $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');
|
||
|
?>
|
||
|
<div class="metas">
|
||
|
<div class="pull-left">
|
||
|
<?php
|
||
|
if(is_a($salary, 'WP_Term')) {
|
||
|
?>
|
||
|
<div class="meta price">
|
||
|
<span><strong><?php echo $salary->name; ?></strong></span>
|
||
|
</div>
|
||
|
<?php
|
||
|
} else {
|
||
|
?>
|
||
|
<div class="meta price">
|
||
|
<span><strong><?php echo fansub_classifieds_get_price(); ?></strong></span>
|
||
|
</div>
|
||
|
<?php
|
||
|
}
|
||
|
?>
|
||
|
</div>
|
||
|
<div class="pull-right">
|
||
|
<div class="meta modified">
|
||
|
<?php echo fansub_human_time_diff_to_now($modified) . ' trước'; ?>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<?php
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
add_action('fansub_widget_post_after_post', 'fansub_classifieds_widget_post_after_post', 10, 3);
|
||
|
|
||
|
function fansub_classifieds_pre_get_posts(WP_Query $query) {
|
||
|
if($query->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'), '<strong>' . $taxonomy->labels->singular_name . '</strong>');
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
$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');
|