私が使用している高度なカスタムフィールド/ ACFをカスタムフィールドを作成します。それらの1つは、いくつかのオプション(option1、option2、option3 ...)を表示するチェックボックスのリストです。
ここで、このフィールドのすべてのオプションを次のようにフロントエンドの別のページに表示したいと思います。
オプション:
-オプション1-
オプション2-
オプション3
-...
ACFからキー付きのすべてのオプションを取得するにはどうすればよいですか?
私が使用している高度なカスタムフィールド/ ACFをカスタムフィールドを作成します。それらの1つは、いくつかのオプション(option1、option2、option3 ...)を表示するチェックボックスのリストです。
ここで、このフィールドのすべてのオプションを次のようにフロントエンドの別のページに表示したいと思います。
オプション:
-オプション1-
オプション2-
オプション3
-...
ACFからキー付きのすべてのオプションを取得するにはどうすればよいですか?
回答:
get_field_object
ACF機能は、特定のフィールドの情報とオプションを取得するために使用することができます。
まず、出力したい特定のフィールドのフィールドキーが必要です。フィールドグループを編集するときは、ページ上部の画面オプションタブをクリックします。フィールドキーの表示を切り替えるオプションが表示されます(スペースを節約するために、デフォルトでは非表示になっています)。
キーを取得したら、フィールドオブジェクトをロードしてその値を出力できます。
$field_key = "field_5039a99716d1d";
$field = get_field_object($field_key);
if( $field )
{
echo '<select name="' . $field['key'] . '">';
foreach( $field['choices'] as $k => $v )
{
echo '<option value="' . $k . '">' . $v . '</option>';
}
echo '</select>';
}
チェックボックスがチェックされている場合に何かを出力しようとしている場合は、次を使用します。
<?php if(in_array('news', get_field('checkbox') )): ?>
<h1>News was ticked!</h1>
<?php endif; ?>
チェックされたオプションのリストを表示したいだけなら、これを使ってください:
<p>Categories: <?php get_field('checkbox'); ?></p>
これにより、foreach
宣言で管理できる値の配列が得られます。を使用the_field('checkbox')
すると、分割可能なオプションのコンマ区切りの文字列が得られます。
また、ACFのサイトにアクセスしてドキュメントを読むことをお勧めします。このタイプの質問のほとんどはそこにかなり詳細に回答され、開発者は彼のサポートフォーラムでもアクティブです。
編集:動的クエリを生成するためにページに出力される利用可能なオプションのリストが必要な場合は、私はそれだけです。これは、(ACFを使用して)特定のカスタムフィールドキーからメタ値のリストをプルするために昨日作成したばかりの作品です。私はあなたのためにそれをかなり一般的にしました。ajaxリクエストを処理するための別のJSチャンクと、結果の投稿を出力するかなり複雑なphpがあります。私はそれらを実際に書き換えることはできません-JSは標準のWPの前向きajax呼び出し/応答であり、PHPは表示している12の異なるACFフィールド(そのうちの2つはリピーター)の条件付きチェックです。基本はこのコードです。ボタンonClick
は別のJSファイルでajax関数を呼び出し、ajax関数自体のphpは基本的にクエリの引数の配列を設定します。$selectedOption
または$_POST['option']
meta_valueとして。それはに供給されますnew WP_Query( $args );
、その後、ループに使用される、を介してバックJSに供給されますその出力add_action('wp_ajax_the_ajax_hook', 'fetch_option_list');
とadd_action( 'wp_ajax_nopriv_the_ajax_hook', 'fetch_option_list' ); //for non logged-in users
。
// Get list of meta_values for given meta_key and post_type (page, post, custom post type)
function meta_list($key = '', $type = '', $status = 'publish'){
global $wpdb;
$r = $wpdb->get_col($wpdb->prepare( "
SELECT DISTINCT pm.meta_value FROM {$wpdb->postmeta} pm
LEFT JOIN {$wpdb->posts} p ON p.ID = pm.post_id
WHERE pm.meta_key = '%s'
AND p.post_status = '%s'
AND p.post_type = '%s'
ORDER BY pm.meta_value ASC", $key, $status, $type));
return $r;
}
// ADD EG A FORM TO THE PAGE
function meta_ajax_frontend(){
$formlist = meta_list('metakey', 'posttype');
echo '<form id="optionSelect">';
echo '<select id="optionList" name="optionList">';
foreach($formlist as $fl => $val) {
echo '<option>' . $val . '</option>';
}
echo '</select>';
echo '<input name="action" type="hidden" value="the_ajax_hook" />
<input id="submit_button" value = "Search" type="button" onClick="fetch_meta();" />
</form>
<div id="meta_list">
Please select an option from the list
</div>';
}
foreach
toループスルーを使用しています。