我正在编写WordPress wp job manager简历和wp job manager,在候选人仪表板下,我必须为候选人提供从所选公司隐藏简历的选项。
也就是说,如果候选人选择了公司X,那么X将无法查看候选人简历。
关于我如何完成这项任务的任何建议。
以下是我想实施的内容:
将创建多选dropodown公司名称,并在搜索简历页面和简历页面上检查所选公司。如果找到匹配项,则将隐藏恢复。
我还应该在mysql中创建一个单独的表,按候选人存储被阻止的公司
关于如何做到这一点的任何建议。
编辑:
我正在用下面的代码将候选人排除在外的公司列表存储在用户元中
$current_user = wp_get_current_user();
$user_id=$current_user->ID;
$meta_value[]= $_POST[\'exclude_company_from_search\'];
$meta_key="exclude_from_employer_search";
update_user_meta( $user_id, $meta_key, $meta_value );
现在我无法在搜索简历页面中过滤它。
以下是在我的函数中使用短代码排除的保存公司的完整代码。php。
<?php
function custom_shortcode() {
if(isset($_POST[\'exclude_company\'])){
$current_user = wp_get_current_user();
$user_id=$current_user->ID;
$meta_value[]= $_POST[\'exclude_company_from_search\'];
$merged = array_reduce($meta_value, \'array_merge\', array());
$comma_separated_meta_value = implode(\',\', $merged);
$meta_key="exclude_from_employer_search";
update_user_meta( $user_id, $meta_key, $comma_separated_meta_value );
}
wp_enqueue_script( \'wp-job-manager-multiselect\' );
global $wpdb;
$results = $wpdb->get_results("SELECT $wpdb->users.ID, $wpdb->usermeta.meta_value FROM $wpdb->users INNER JOIN $wpdb->usermeta ON ( $wpdb->users.ID = $wpdb->usermeta.user_id ) WHERE 1=1 AND ( $wpdb->usermeta.meta_key = \'_company_name\') ORDER BY user_login ASC" );
?>
<form method="post" action="" name="ec" id="ec">
<select multiple="multiple" data-placeholder="" name="exclude_company_from_search[]" id="exclude_company_from_search" class="job-manager-multiselect" data-no_results_text="No results match" data-multiple_text="Select Companies to Exclude">
<?php foreach ( $results as $value ) :?>
<option value="<?php echo esc_attr( $value->ID ); ?>" <?php if ( ! empty( $value->meta_value ) && is_array( $value->meta_value) ) selected( in_array( $key, $value->meta_value ), true ); ?>><?php echo esc_html( $value->meta_value ); ?></option>
<?php endforeach; ?>
</select>
<input type="submit" name="exclude_company" id="exclude_company" value="Exclude Company" />
</form>
<?php
}
add_shortcode( \'exclude_company_list\', \'custom_shortcode\' );
?>
我无法在搜索简历页面中筛选它。
最合适的回答,由SO网友:Drupalizeme 整理而成
我会做出一些假设:
不使用自定义表所有简历都带有post类型的简历您对一些sql很熟悉
SELECT * FROM wp_posts wp WHERE wp.post_type = \'resume\' AND
wp.post_author NOT IN ( SELECT distinct wu.umeta_id FROM wp_usermeta
wu WHERE wu.meta_key=\'exclude_from_search\' AND
wu.meta_value=\'the_company_id\'
);
基本思路是首先获取不想显示特定公司简历的用户的所有ID。之后,根据您的过滤过程直接进行选择。
我之所以不使用自定义表,是因为可以支持多个values(entries) 同样的meta_key 和user_id. 这可以帮助你keep track 在所有用户首选项中,取决于隐藏的简历。