web-dev-qa-db-ja.com

にサブフィールドを持つフィールドを追加する WP ジョブマネージャ

私はWP Job Managerのカスタムアドオンに取り組んでいます。そこで、表示されているコンテンツをフィルタで変更します。私はwww.wpjobmanager.com/documentationにあるチュートリアルの多くを使用しましたが、私は一点に立ち往生しています。

Resumesアドオン(demo here )から、教育や経験の分野を追加できる機能を再作成しようとしています。メインのWP Job Managerプラグインにその機能を再作成して、アドレス用のオプションのサブフィールドを作成しようとしています。

これは私が今のところ持っているコードの縮小版です: http://Pastebin.com/fAVq9vfu

フィールドとサブフィールドをフォームに追加しました(フォームをレンダリングするための別のテンプレートファイルがあります)。 Previewテンプレートでvar_dumpを実行したとき( サンプルスクリーンショット )に示すように、これらはグローバル$ _POST変数にも登録されますが、値の保存に関してはどこかに混乱しています。サブファイルを含むフィールドは、ポストメタデータテーブルに保存されていません。私は自分のクラスにWP_Job_Manager_Formsクラスを追加して拡張させることで、いくつかのオプションを試しました( https://github.com/mikejolley/WP-Job-Manager/blob/master/includes/class-wp-job- manager-forms.php )私は自分がやろうとしていることを含まれているフィルタを介して達成することができると信じていますが、私はどのフィルタをどのように実行するかわからない。

私はどこかでget_posted_fields()を呼び出す必要があるかもしれないと思っています。それが私のカスタムget_posted_ {subfield} _fieldメソッドをキャッチしているかどうかは完全にはわからないからです。

誰かが何かヒントを持っていますか?

1
ahurleb

私はあなたのスニペット/コードにいくつかのものが欠けているのを見ます。

  1. 各フィールド(あなたの居場所のもの)は優先度を含める必要があります:

    'priority' => 19,

  2. 'type'を 'location'として定義しましたが、そのフィールドタイプを定義しませんでした。このコードの基になっている履歴書マネージャで繰り返されるファイルは、教育、経験などのテンプレートファイルを定義します。独自のフィルタを 'job_manager_locate_template'に定義します。簡単な例 https://Gist.github.com/mikejolley/76d8b538fe489377793b 繰り返しフィールドごとにテンプレートファイルが必要です。私たちは将来これをもっと簡単にするかもしれません、しかし私がサポートを通して説明したように、繰り返された分野は新しいです:)

0
Mike Jolley

'Resume Manager'のフィールドの種類を変えて保存することができます。次のように、フィルタを介してこれを達成できます。

//code to add custom field for Resume Manager on front end
add_filter( 'submit_resume_form_fields', 'wdm_customize_resume_fields' );

function wdm_customize_resume_fields($fields)
{
   $fields['resume_fields']['candidate_address'] = array(
    'label'       => __( 'Your Address', 'wp-job-manager-resumes' ),
    'type'        => 'text',
    'required'    => false,
    'description' => __('Add your address here','wp-job-manager-resumes'),
    'priority'    => 2
    );

   return $fields;
}

ここでは、新しいフィールドを指定したり、ラベルを追加したり、名前を入力したり、「優先順位」を使用して場所を指定したりできます。

今度はフィールドを保存する必要があります、我々は次のコードを使用することができます、

add_action( 'resume_manager_update_resume_data', 'wdm_save_resume_custom_field', 10, 2 );

function wdm_save_resume_custom_field( $resume_id, $values ) {

  if(!empty($resume_id) && !empty($values)) {

     if(isset($values['resume_fields']['candidate_address']) {

       update_post_meta( $resume_id, '_candidate_address', $values['resume_fields']['candidate_address'] );
     }
  }
}

設定されている場合、これは '_candidate_address'メタキー内の候補者のアドレスを更新します。

この保存されたフィールドはダッシュボードにも表示される必要があります。次のようにしてこれを達成できます。

add_filter( 'resume_manager_resume_fields', 'wdm_resume_fields_dashboard' );

function wdm_resume_fields_dashboard($fields){

   $fields['_candidate_address'] = array(
    'label'       => __( 'Your Address', 'wp-job-manager-resumes' ),
    'placeholder' => __( 'Add your address here', 'wp-job-manager-resumes' ),
    'type'        => 'text'
);

  return $fields;
}
0
WisdmLabs