PHP Wordpress代码echo的slug不是术语?

时间:2013-02-26 19:29:49

标签: php wordpress taxonomy custom-fields

有没有人知道如何更改我的自定义分类法(在Magic Fields 2插件中创建)的下面代码来解决我的问题。我希望它能回显所选值的name而不是slug格式。例如我想回复Client 1Client 2而不是client-1client-2

我想显示带有空格和正确大小写的多字名称,例如Joe Bloggs Associates不是joe-bloggs-associates

project_statistics_client是在Magic Fields中创建的字段的名称。自定义字段的类型为Term下拉列表,并使用名为Clients的自定义分类法中的值填充。此字段位于名为project_statistics的字段组内,但我不确定组名是否会影响代码?

另请注意,以上所有内容均采用名为Projects的自定义帖子类型。

我已查看plugin帮助,但仍不确定:

以下是代码:

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

2 个答案:

答案 0 :(得分:0)

好的,所以过了一会儿我记得我从论坛帖子粘贴了一些代码,这些代码允许我用分类/类别选项填充Term下拉字段。我现在认为这就是问题所在,为什么它输出slug而不是名字?我还决定使用类别而不是分类法,因为我想根据选定的值过滤帖子的循环,从我读到的内容更容易用类别来实现。我在下面添加了我添加到functions.php的代码,因为a)其他人可能想要将它与Magic Fields一起使用,但b)希望有人可能知道我需要更改什么才能输出名称而不是slug?

/**
* 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;
}
}

答案 1 :(得分: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 taxomony功能提供了一个很好的GUI,因此可以使用所有的WordPress分类功能。特别是,get_the_terms()可用于获取帖子的类别。这将返回一个对象数组(一个帖子可能有多个类别)。此外,您需要从对象中提取“名称”字段。