wordpress プラグインのジョブマネージャーを使用してみたが、わからない部分や修正した部分があるので備忘録として記載。
不具合修正(1)
ジョブマネージャーの『設定』でチェックボックスとして設定した場合。
『求人追加』の方で複数チェックして登録すると、再度『求人』情報を表示したときに、チェックボックスのチェックが外れている。(1件ならチェック状態のまま表示されます)
対策:以下ソースを修正
[job-manager/admin-jobs.php]のL433あたりを以下の通り修正。
修正前
$data = explode( "\n", strip_tags( $data ) );
修正後
$data = explode( "' ", strip_tags( $data ) );
イメージ画像を表示させたい
ジョブマネージャーでは、ファイルアップロード項目が求人・応募フォーム作成時にあるが、ファイル対象が画像の場合は画像表示させてみたいと思い調査。
なにやら、『type=(image|url)』で画像表示 | ファイルDLと切り替えできるらしい。
表示設定のテンプレート個々の設定部分、ショートコードを以下のように記載してみたらできました。
求人一覧に、求人カテゴリ(カスタムタクソノミー)毎にフィルターをかけたい
求人設定で設定するカテゴリはタクソノミーとして格納されているようです。その為get_posts時の引数ではtax_queryを指定します。
job-manager/admin-jobs.phpのL42辺り。
<div class="wrap"> <h2><?php _e( 'Job Manager: Jobs List', 'jobman' ) ?></h2> <form action="" method="post"> <input type="hidden" name="jobman-jobid" value="new" /> <p class="submit"><input type="submit" name="submit" class="button-primary" value="<?php _e( 'New Job', 'jobman' ) ?>" /></p> </form> <?php // ============================== zamuu add Start ======================= $categories = get_terms( 'jobman_category', 'hide_empty=0' ); $jobman_cat = array(); // ジョブマネージャーカテゴリ if( count( $categories ) > 0 ) { echo '<select id="jobman-admincatlist">'; echo '<option value="">' . __( 'Select Category', 'jobman' ) . '</option>'; $count_args = array( 'post_type' => 'jobman_job', 'numberposts' => -1, 'suppress_filters' => false ); foreach( $categories as $cat ) { $selected = ''; if( $cat->slug == $_GET['jobman-admincatlist'] ){ $selected = ' selected="selected"'; $jobman_cat = $cat->slug ; } $jobs = array(); $count = ''; echo "<option value='$cat->slug'$selected>$cat->name$count</option>"; } ?> </select> <script type='text/javascript'> /* <![CDATA[ */ var jobman_dropdown = document.getElementById("jobman-admincatlist"); function onJobmanCatChange() { if ( jobman_dropdown.options[jobman_dropdown.selectedIndex].value != '' ) { location.href = "<?php echo get_admin_url() ?>/admin.php?page=jobman-list-jobs&jobman-admincatlist="+jobman_dropdown.options[jobman_dropdown.selectedIndex].value; } } jobman_dropdown.onchange = onJobmanCatChange; /* ]]> */ </script> <?php } // echo $jobman_cat; // ============================== zamuu add END ======================= ?>
L105 辺り。
// =============================================== zamuu chg start =============================== // $jobs = get_posts( 'post_type=jobman_job&numberposts=-1&post_status=publish,draft,future' ); $args = array( 'numberposts' => '-1', 'post_type' => 'jobman_job', 'post_status' => 'publish,draft,future', 'tax_query' => array( array( 'taxonomy' => 'jobman_category', 'field' => 'slug', 'terms' => $jobman_cat ) ) ); $jobs = get_posts( $args ); // echo count($jobs); // =============================================== zamuu chg end =============================== ?>
CSSの対処。job-manager/css/admin.css の最終行に以下追記。
/* ------- iwakura Add ------- */ #wpcontent select#jobman-admincatlist{ width:300px; }
求人一覧に検索(絞込み)フォーム
job-manager/admin-jobs.php が求人一覧表示画面になります。
求人設定で設定された内容はカスタムフィールド(メタ:data1~dataxx)に格納されているようです。その為get_posts時の引数ではmeta_queryを指定します。
まずは検索フォームを作成します。
<div class="wrap"> <h2><?php _e( 'Job Manager: Jobs List', 'jobman' ) ?></h2> <form action="" method="post"> <input type="hidden" name="jobman-jobid" value="new" /> <p class="submit"><input type="submit" name="submit" class="button-primary" value="<?php _e( 'New Job', 'jobman' ) ?>" /></p> </form> <!-- ===================== ここから追記 ============================== --> <div id="srchform" action="#" method="GET"> <span class="srchorg">検索対象1</span><input type="text" id="txtorg" value="<?php echo esc_attr($_GET['org']); ?>" /> <span class="srchphone">検索対象2</span><input type="text" id="txtphone" value="<?php echo esc_attr($_GET['phone']); ?>" /> <input type="button" id="srchsubmit" class="button-secondary" value="絞込み"> </div> <script type='text/javascript'> /* <![CDATA[ */ jQuery(document).ready(function() { jQuery('#srchsubmit').click(function() { var query_str = ""; // GET でパラメータ渡し var url = "<?php echo get_admin_url() ?>admin.php?page=jobman-list-jobs"; if(jQuery("#txtorg").val() != "") query_str += "&org=" + jQuery("#txtorg").val(); if(jQuery("#txtphone").val() != "") query_str += "&phone=" + jQuery("#txtphone").val(); if(jQuery("#txtjobid").val() != "") query_str += "&jobid=" + jQuery("#txtjobid").val(); if ( query_str != '' ) { url += query_str; } location.href=url return true; }); });
次に、検索処理を実装します。get_posts() の引数指定を編集します。(求人設定のフィールドを「検索対象1」「検索対象2」と仮定)
$jobs = get_posts( 'post_type=jobman_job&numberposts=-1&post_status=publish,draft,future' ); // ============ ここから追加 =============== if(!empty($_GET['org'])){ array_push($args['meta_query'], array('key' => '【検索対象1のdataフィールドを指定】' , 'value' =>$_GET['org'] ,'compare' => 'LIKE')); } if(!empty($_GET['phone'])){ array_push($args['meta_query'], array('key' => '【検索対象2のdataフィールドを指定】', 'value' => $_GET['phone'] ,'compare' => 'LIKE')); } if(count($args['meta_query']) > 0) $args['meta_query'] = array('relation' => 'OR'); if(!empty($_GET['jobid'])) $args['post__in'] = array($_GET['jobid']); $args['orderby'] = 'date'; // ============ ここから追加 ===============
関連記事