Tax_meta_class分类字段脚本使用教程
Published
2022-10-31
浏览次数 : 211
用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;
}
}