added company based filter and user meta
This commit is contained in:
@@ -70,6 +70,15 @@ class Partnerexpo_Core_Public {
|
||||
$params['tags'] = str_replace(',', '+', $params['tags']);
|
||||
}
|
||||
|
||||
$companies = explode(',', $params['companies'] ?? '');
|
||||
|
||||
$authors = get_users([
|
||||
'meta_key' => 'company',
|
||||
'meta_value' => $companies,
|
||||
'meta_compare' => 'IN',
|
||||
'fields' => 'ID',
|
||||
]);
|
||||
|
||||
$args = [
|
||||
'post_type' => 'pexpo_partners',
|
||||
'posts_per_page' => $params['resultsPerPage'] ?? 10,
|
||||
@@ -79,6 +88,10 @@ class Partnerexpo_Core_Public {
|
||||
'pexpo_tags' => $params['tags'] ?? '',
|
||||
];
|
||||
|
||||
if (!empty($authors)) {
|
||||
$args['author__in'] = array_values($authors);
|
||||
}
|
||||
|
||||
if ( ! empty( $params['tags'] ) ) {
|
||||
$tag_string = $params['tags'];
|
||||
$operator = 'IN';
|
||||
|
||||
@@ -14,6 +14,7 @@ class PartnerExpoSearch {
|
||||
drawerBackdrop: document.getElementById("pexpo-core-drawerBackdrop"),
|
||||
filterFTag: document.getElementById("pexpo-core-tag-toggle"),
|
||||
filterTags: document.getElementById("pexpo-core-tags"),
|
||||
filterCompanies: document.getElementById("pexpo-core-companies"),
|
||||
qInput: document.getElementById("pexpo-core-q"),
|
||||
masonry: document.getElementById("pexpo-core-masonry"),
|
||||
measure: document.getElementById("pexpo-core-measure"),
|
||||
@@ -33,6 +34,7 @@ class PartnerExpoSearch {
|
||||
sort: "relevance",
|
||||
force_tags: false,
|
||||
tags: [],
|
||||
companies: [],
|
||||
resultsPerPage: 20,
|
||||
page: 1,
|
||||
},
|
||||
@@ -72,7 +74,6 @@ class PartnerExpoSearch {
|
||||
initMultiSelect() {
|
||||
if (typeof MultiSelect !== 'undefined') {
|
||||
new MultiSelect(this.els.filterTags, {
|
||||
placeholder: 'Címkék kiválasztása',
|
||||
search: true,
|
||||
selectAll: false,
|
||||
onSelect: (value) => {
|
||||
@@ -84,6 +85,19 @@ class PartnerExpoSearch {
|
||||
this.state.filters.tags = this.state.filters.tags.filter(tag => tag !== value);
|
||||
}
|
||||
});
|
||||
|
||||
new MultiSelect(this.els.filterCompanies, {
|
||||
search: true,
|
||||
selectAll: false,
|
||||
onSelect: (value) => {
|
||||
if (!this.state.filters.companies.includes(value)) {
|
||||
this.state.filters.companies.push(value);
|
||||
}
|
||||
},
|
||||
onUnselect: (value) => {
|
||||
this.state.filters.companies = this.state.filters.companies.filter(company => company !== value);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
console.warn("MultiSelect library not found.");
|
||||
}
|
||||
|
||||
@@ -15,8 +15,28 @@ $tags = get_terms([
|
||||
'hide_empty' => false,
|
||||
]);
|
||||
|
||||
?>
|
||||
$users = get_users([
|
||||
'meta_key' => 'company',
|
||||
'meta_compare' => 'EXISTS',
|
||||
]);
|
||||
|
||||
$companies = [];
|
||||
foreach ($users as $user) {
|
||||
$company = get_user_meta($user->ID, 'company', true);
|
||||
if (!empty($company)) {
|
||||
$companies[$company] = $company;
|
||||
}
|
||||
}
|
||||
|
||||
$authors = get_users([
|
||||
'meta_key' => 'company',
|
||||
'meta_value' => array_keys($companies) ?? [],
|
||||
'meta_compare' => 'IN',
|
||||
'fields' => 'ID',
|
||||
]);
|
||||
|
||||
|
||||
?>
|
||||
<div class="pexpo-core-root pexpo-core-shell" id="pexpo-core-shell">
|
||||
<div class="pexpo-core-topbar" id="pexpo-core-topbar">
|
||||
<div class="pexpo-core-filterWrap" id="pexpo-core-filterWrap">
|
||||
@@ -64,6 +84,12 @@ $tags = get_terms([
|
||||
<option value="<?php echo esc_attr($tag->slug); ?>"><?php echo esc_html($tag->name); ?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<label for="pexpo-core-companies"><?php echo esc_html__('Cégek', 'partnerexpo-core'); ?></label>
|
||||
<select id="pexpo-core-companies" data-placeholder="<?php echo esc_attr__('Cégek kiválasztása', 'partnerexpo-core'); ?>" data-search-text="<?php echo esc_attr__('Keresés...', 'partnerexpo-core'); ?>" multiple="multiple">
|
||||
<?php foreach ($companies as $key => $company) : ?>
|
||||
<option value="<?php echo esc_attr($key); ?>"><?php echo esc_html($company); ?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<button id="pexpo-core-filterApply"><?php echo esc_html__('Alkalmaz', 'partnerexpo-core'); ?></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user