Compatible API reference

元版CFS互換
APIリファレンス

atshift Fields は、元版Custom Field Suiteの主要なテーマAPIを維持しています。既存テーマで使われている CFS()->get() などの呼び出しは、基本的にそのまま利用できます。

Values

値の取得

CFS()->get()

互換API

指定したフィールド名の保存値を取得します。第2引数に投稿IDを指定すると、現在の投稿以外から取得できます。フィールド名を省略すると、その投稿に紐づくCFSフィールド値をまとめて取得します。

<?php
echo esc_html( CFS()->get( 'field_name' ) );

echo esc_html( CFS()->get( 'field_name', 123 ) );

$fields = CFS()->get();
?>

取得と出力は別です。表示時は esc_html()esc_url()wp_kses_post() など、出力先に合うエスケープを使ってください。

formatオプション

api / input / raw

第3引数で値の形式を指定できます。通常のテーマ出力では既定値の api を使います。

<?php
$value = CFS()->get( 'field_name', get_the_ID(), array(
  'format' => 'raw',
) );
?>

raw は整形前の値を扱いたい場合に使います。通常表示ではフィールド別の返り値に合わせる api が扱いやすいです。

Field metadata

フィールド情報の取得

get_field_info()

互換API

現在の投稿、または指定した投稿に一致するフィールドグループから、フィールド設定情報を取得します。

<?php
$info = CFS()->get_field_info( 'field_name' );

echo esc_html( $info['label'] ?? '' );
?>

すべてのフィールド情報

Array

フィールド名を省略すると、利用可能なフィールド情報をまとめて取得できます。

<?php
$fields = CFS()->get_field_info();

foreach ( $fields as $field_name => $field ) {
  echo esc_html( $field['label'] ?? $field_name );
}
?>

Reverse relationship

関連投稿の逆引き

get_reverse_related()

互換API

関連投稿フィールドで、指定した投稿を参照している投稿IDを取得します。

<?php
$post_ids = CFS()->get_reverse_related( get_the_ID(), array(
  'field_name'  => 'related_posts',
  'post_type'   => 'post',
  'post_status' => 'publish',
) );

foreach ( $post_ids as $post_id ) {
  echo esc_html( get_the_title( $post_id ) );
}
?>

atshift Fieldsでは、逆引き関連クエリの入力値をサニタイズし、SQLインジェクション対策を強化しています。

Save

値の保存

save()

互換API

CFSフィールド値を保存します。既存投稿を更新する場合は ID を指定し、新規投稿を作成する場合は投稿データに post_typepost_status を指定します。

<?php
$post_id = CFS()->save(
  array(
    'field_name' => '保存する値',
  ),
  array(
    'ID' => get_the_ID(),
  )
);
?>

新規投稿を作成して保存

<?php
$post_id = CFS()->save(
  array(
    'field_name' => '保存する値',
  ),
  array(
    'post_type'   => 'post',
    'post_status' => 'draft',
    'post_title'  => '下書きタイトル',
  )
);
?>

フロントエンドから保存する場合は、nonce、ログイン確認、current_user_can() による権限確認、入力検証を必ず組み合わせてください。

Find fields

フィールド定義の検索

find_fields()

互換API

条件に一致するフィールド定義を取得します。フィールドグループIDやフィールドタイプを指定できます。

<?php
$fields = CFS()->find_fields( array(
  'group_id' => 123,
) );
?>

フィールドタイプで検索

Array
<?php
$relationship_fields = CFS()->find_fields( array(
  'field_type' => 'relationship',
) );
?>

Front-end forms

フォーム表示

form()

atshift Fields対応

フィールドグループをフロントエンドフォームとして表示します。元版CFSのAPI互換を維持しつつ、atshift Fieldsではサーバー側バリデーション、入力値保持、エラー表示を強化しています。

<?php
echo CFS()->form( array(
  'post_id'          => false,
  'field_groups'     => array( 123 ),
  'post_type'        => 'post',
  'post_status'      => 'draft',
  'submit_label'     => '保存する',
  'confirmation_url' => home_url( '/thanks/' ),
) );
?>

実装例は 新規投稿編既存投稿編集編 を参照してください。

Compatibility notes

互換性の注意点

維持しているもの

CFS 2.6.7系互換
  • CFS() から呼び出す主要APIメソッド。
  • 既存のフィールドグループ、投稿メタ、CFS()->get() を使ったテーマ出力。
  • ループ、関連投稿、フィールド情報取得などの基本的なデータ構造。

確認が必要なもの

移行時の確認
  • 元版のAdd-onを併用していたフィールド。
  • atshift Fieldsで追加したフィールドを元版へ戻すケース。
  • HTMLを含むフィールドの出力エスケープ。
  • フロントエンド保存時の権限確認と入力検証。