Tax_meta_class分类字段脚本使用教程

Published
2022-10-31
浏览次数 :  19

用wp自带的term meta 可以自己写入字段,但是要涉及到图片上传等功能,要写的代码很多, 所以用字段框架是很好的选择(字段框架已经给你全部写好),强迫症患者除外。

分类字段脚本用的比较多的是这人写的:

bainternet/Tax-Meta-Class: A class for creating WordPress taxonomies custom fields (github.com)

使用教程:

因为他这个脚本是几年前的,现在的PHP代码迭代之后会出现错误。

首先要去tax-meta-class.php这个主要文件里去更改Js和css文件加载的路径,因为我们这里是和主题合并。

首先下载他的脚本文件,找到Tax_meta_class文件夹,引入他的css文件夹、js文件夹还有主要文件Tax-meta-class.php即可。(这里主要讲系统默认分类category下的使用自定义分类的以后再测试)

在文件夹创建这个脚本的配置文件,比方说我们给他命名ter_meta.php就好。

然后再functions.php里面引入term_meta.php。

在term_meta.php里面,我们先引入Tax-meta-class.php’这个主要文件。然后按照作者提供的模板来添加参数: 其中init meta boxes下面就是要配置的字段的内容。

defined( 'ABSPATH' ) || exit;

// Load main class.
require_once get_theme_file_path( '/inc/vendor/Tax-meta-class/Tax-meta-class.php' );

class Xn_Taxonomy_Meta_Box {

  /**
   * @var string
   */
  protected $prefix = 'xn_';

  /**
   * @var string
   */
  protected $lib_uri = '';

  /**
   * The7_Taxonomies_MetaBoxes constructor.
   */
  public function __construct() {
    $this->lib_uri = get_template_directory() . '/inc/vendor/Tax-meta-class';

    $this->add_tax_fancy_colors();
    //add_filter( 'manage_posts_columns', array($this,'cat_cover_column') );
  }

  public function cat_cover_column($columns) {
    $columns['cover'] = esc_html__( 'COVER', 'hablog' );

    return $columns;

  }

  /**
   * Add taxonomy fancy category bg and text color settings.
   *
   * @uses Tax_Meta_Class
   */
  public function add_tax_fancy_colors() {
    

    // Configure meta boxes.
    $config = array(
      'id'             => 'xn_cat_field',
      'pages'          => array('category'),
      'context'        => 'normal',
      'fields'         => array(),
      'local_images'   => false,
      'use_with_theme' => true
    );

    // Init meta boxes.
    $meta_box = new Tax_Meta_Class( $config );

    $meta_box->addColor( $this->prefix . 'fancy_bg_color', array( 'name' => _x( 'Fancy category background', 'backend', 'xmdn' ) ) );
    $meta_box->addColor( $this->prefix . 'fancy_text_color', array( 'name' => _x( 'Fancy category text color', 'backend', 'xmdn' ) ) );
    $meta_box->addImage($this->prefix.'cat_image_field',array('name'=> __('Category Cover ','xmdn')));

    // Finish meta mox declaration.
    $meta_box->Finish();
  }

}

new Xn_Taxonomy_Meta_Box();

所有字段的教程:

 /*
   * Initiate your meta box
   */
  $my_meta =  new Tax_Meta_Class($config);
  
  /*
   * Add fields to your meta box
   */
  
  //text field
  $my_meta->addText($prefix.'text_field_id',array('name'=> __('My Text ','tax-meta'),'desc' => 'this is a field desription'));
  //textarea field
  $my_meta->addTextarea($prefix.'textarea_field_id',array('name'=> __('My Textarea ','tax-meta')));
  //checkbox field
  $my_meta->addCheckbox($prefix.'checkbox_field_id',array('name'=> __('My Checkbox ','tax-meta')));
  //select field
  $my_meta->addSelect($prefix.'select_field_id',array('selectkey1'=>'Select Value1','selectkey2'=>'Select Value2'),array('name'=> __('My select ','tax-meta'), 'std'=> array('selectkey2')));
  //radio field
  $my_meta->addRadio($prefix.'radio_field_id',array('radiokey1'=>'Radio Value1','radiokey2'=>'Radio Value2'),array('name'=> __('My Radio Filed','tax-meta'), 'std'=> array('radionkey2')));
  //date field
  $my_meta->addDate($prefix.'date_field_id',array('name'=> __('My Date ','tax-meta')));
  //Time field
  $my_meta->addTime($prefix.'time_field_id',array('name'=> __('My Time ','tax-meta')));
  //Color field
  $my_meta->addColor($prefix.'color_field_id',array('name'=> __('My Color ','tax-meta')));
  //Image field
  $my_meta->addImage($prefix.'image_field_id',array('name'=> __('My Image ','tax-meta')));
  //file upload field
  $my_meta->addFile($prefix.'file_field_id',array('name'=> __('My File ','tax-meta')));
  //wysiwyg field
  $my_meta->addWysiwyg($prefix.'wysiwyg_field_id',array('name'=> __('My wysiwyg Editor ','tax-meta')));
  //taxonomy field
  $my_meta->addTaxonomy($prefix.'taxonomy_field_id',array('taxonomy' => 'category'),array('name'=> __('My Taxonomy ','tax-meta')));
  //posts field
  $my_meta->addPosts($prefix.'posts_field_id',array('args' => array('post_type' => 'page')),array('name'=> __('My Posts ','tax-meta')));
  
  /*
   * To Create a reapeater Block first create an array of fields
   * use the same functions as above but add true as a last param
   */
  
  $repeater_fields[] = $my_meta->addText($prefix.'re_text_field_id',array('name'=> __('My Text ','tax-meta')),true);
  $repeater_fields[] = $my_meta->addTextarea($prefix.'re_textarea_field_id',array('name'=> __('My Textarea ','tax-meta')),true);
  $repeater_fields[] = $my_meta->addCheckbox($prefix.'re_checkbox_field_id',array('name'=> __('My Checkbox ','tax-meta')),true);
  $repeater_fields[] = $my_meta->addImage($prefix.'image_field_id',array('name'=> __('My Image ','tax-meta')),true);
  
  /*
   * Then just add the fields to the repeater block
   */
  //repeater block
  $my_meta->addRepeaterBlock($prefix.'re_',array('inline' => true, 'name' => __('This is a Repeater Block','tax-meta'),'fields' => $repeater_fields));
  /*
   * Don't Forget to Close up the meta box decleration
   */

$prefix.’textarea_field_id’ 这个是真实的term_meta的id. 用get_term_meta就能获取到这个值, 注意最后的一个参数true和false输出的形式是不一样的。单数的话永远要用true.

添加分类字段到帖子管理列中, 注意第二个钩子的话传递三个参数,$string参数必须要有。


add_filter( 'manage_edit-category_columns', 'add_cat_cover_column' );

function add_cat_cover_column($columns)
{
  $columns['cover'] = esc_html__('COVER','hablog');
  return $columns;
}

add_action( 'manage_category_custom_column', 'cat_cover_custom_column_content',10,3 );
//add_filter('manage_category_custom_column','cat_cover_custom_column_content',1,2);
function cat_cover_custom_column_content($string,$columns,$term_id) {

  if (!empty(get_term_meta( $term_id, 'xn_cat_image_field', true ))) {
    $cat_cover = get_term_meta( $term_id, 'xn_cat_image_field', true );
  } else {
    $cat_cover = 'check to see';
  }
  switch ($columns) {

    case 'cover':
      // code...
      if (is_array($cat_cover)) {
        echo '<img width=50 height=50 src='.$cat_cover['url'].'>';
        
      } else {
        echo 'No cover found!';
      }

      break;
  }
}

Top