0

私の問題を解決するために、カスタム分類 (Magic Fields 2 プラグインで作成) の以下のコードを変更する方法を知っている人はいますか? nameフォーマットではなく、選択した値をエコーし​​たいと思いslugます。たとえば、現在のClient 1andClient 2の代わりにclient-1andをエコーし​​たいと思います。client-2

スペースを含む複数単語の名前を表示し、大文字を正しく使用したいと思いJoe Bloggs Associatesますjoe-bloggs-associates

project_statistics_clientMagic Fields で作成されたフィールドの名前です。カスタム フィールドのタイプはTermドロップダウンで、 というカスタム タクソノミーの値が入力されClientsます。このフィールドは、名前が付けられたフィールド グループ内にありますがproject_statistics、グループ名がコードに影響を与えるかどうかはわかりません。

また、上記はすべて というカスタム投稿タイプにあることに注意してくださいProjects

プラグインのヘルプを確認しましたが、まだわかりません:

コードは次のとおりです。

<?php $clients = get_field('project_statistics_client');
    foreach($clients as $client){
        echo '<div>' . $client . '</div>';
    } ?>
4

2 に答える 2

0

さて、しばらくして、フォーラムの投稿からいくつかのコードを貼り付けたことを思い出しました。これにより、Term ドロップダウン フィールドに分類法/カテゴリ オプションを設定できました。これが問題の原因であり、名前ではなくスラッグを出力しているのはなぜだと思いますか? また、選択した値に基づいて投稿のループをフィルタリングしたいので、分類法ではなくカテゴリを使用することにしました。これを読んだところ、カテゴリを使用すると達成しやすくなりました。functions.php に追加したコードを下に添付します。なぜなら、a) 他の人が Magic Fields でそれを使用したいかもしれないが、b) スラグの代わりに名前を出力するために何を変更する必要があるかを誰かが知っていることを期待して?

/**
* Custom Taxonomy Dropdown
*/



// initialisation
global $mf_domain;

// class with static properties encapsulating functions for the field type

class term_field extends mf_custom_fields {

public $allow_multiple = TRUE;
public $has_properties = TRUE;

public function _update_description(){
global $mf_domain;
$this->description = __("This field allows to do relations with taxonomie terms",$mf_domain);
}

public function _options(){
global $mf_domain;

// Get the taxonomie as dropdownoption
$select = array();
$tax = get_taxonomies();
foreach($tax as $k => $v){
$select[] = $v;
}

$data = array(
 'option' => array(
    'term' => array(
      'type' => 'select',
      'id' => 'term',
      'label' => __('related taxonomy: ',$mf_domain),
      'name' => 'mf_field[option][term]',
      'default' => '',
      'options' => $select,
      'add_empty' => false,
      'description' => '',
      'value' => '',
      'div_class' => '',
      'class' => ''
    ),
  )
);
return $data;
}

public function display_field( $field, $group_index = 1, $field_index = 1 ) {
global $mf_domain;

// If is not required this field be added a None value
$notype = "";
if( !$field['required_field'] ) {
  $notype = ( !empty($field['options']['notype']) ) ? $field['options']['notype'] : __( "-- None --" , $mf_domain );
}

$output = '';

// Get the taxonomie as dropdownoption
$select = array();
$tax = get_taxonomies();
foreach($tax as $k => $v){
$select[] = $v;
}

$option_from_term_array = $field['options']['term'];
$options = get_terms($select[$option_from_term_array], array('hide_empty' => false));
$output = '<div class="mf-dropdown-box">';
$value = $field['input_value'];

$output .= sprintf('<select class="dropdown_mf" id="%s" name="%s" >',$field['input_id'],$field['input_name']);

if( $notype != "" ) {
  $output .= "<option value=''>$notype</option>";
}

foreach($options as $option) {

  $check = ($option->slug == $value) ? 'selected="selected"' : '';
  $output .= sprintf('<option value="%s" %s >%s</option>',
    esc_attr($option->slug),
    $check,
    esc_attr($option->name)
  );
}
$output .= '</select>';
$output .= '</div>';

return $output;
}
}
于 2013-02-28T13:03:59.607 に答える
0
    global $post;
    $taxonomy = 'your taxonomy';
    $terms = get_the_terms($post->ID, $taxonomy);
    if ( is_array($terms) ) {
        echo(implode(',', wp_list_pluck($terms, 'name')));
    }

Magic Fields 2 は、WordPress の基本的な分類機能に優れた GUI を提供するだけなので、WordPress のすべての分類機能を使用できます。特に、 get_the_terms() は、投稿のカテゴリを取得するために使用できます。これはオブジェクトの配列を返します (投稿は複数のカテゴリにある場合があります)。また、オブジェクトから「名前」フィールドを抽出する必要があります。

于 2013-02-28T20:49:36.693 に答える