wordpress ジョブマネージャーのカスタマイズや修正など

  • このエントリーをはてなブックマークに追加

wordpress プラグインのジョブマネージャーを使用してみたが、わからない部分や修正した部分があるので備忘録として記載。

不具合修正(1)

ジョブマネージャーの『設定』でチェックボックスとして設定した場合。

jobman01

『求人追加』の方で複数チェックして登録すると、再度『求人』情報を表示したときに、チェックボックスのチェックが外れている。(1件ならチェック状態のまま表示されます)

対策:以下ソースを修正

[job-manager/admin-jobs.php]のL433あたりを以下の通り修正。

修正前

$data = explode( "\n", strip_tags( $data ) );

修正後

$data = explode( "' ", strip_tags( $data ) );

イメージ画像を表示させたい

ジョブマネージャーでは、ファイルアップロード項目が求人・応募フォーム作成時にあるが、ファイル対象が画像の場合は画像表示させてみたいと思い調査。
なにやら、『type=(image|url)』で画像表示 | ファイルDLと切り替えできるらしい。
jobman01-1
表示設定のテンプレート個々の設定部分、ショートコードを以下のように記載してみたらできました。

jobman02

求人一覧に、求人カテゴリ(カスタムタクソノミー)毎にフィルターをかけたい

求人設定で設定するカテゴリはタクソノミーとして格納されているようです。その為get_posts時の引数ではtax_queryを指定します。
jobman03

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';
// ============ ここから追加 ===============
  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。