ed-itsolutions / cmb2-field-ajax-search
CMB2
Requires
- php: ^5.3.3 || ^7.0
This package is auto-updated.
Last update: 2024-08-29 05:43:21 UTC
README
为 CMB2 定制的字段,可以将帖子、用户或术语相互关联。
由 https://github.com/rubengc/cmb2-field-ajax-search 衍生而来。
此分支删除了将其用作插件的需要,而是允许您使用 composer 依赖它。
一旦激活,此插件将添加三个新的字段类型 post_ajax_search
、user_ajax_search
和 term_ajax_search
。
此插件是 CMB2 Field Type: Post Search Ajax 的更新,由 Magina 提供,并支持关联帖子、用户或术语。
安装
通过 composer 安装
composer require ed-itsolutions/cmb2-field-ajax-search
确保您的 functions.php
文件加载了 composer
require_once('vendor/autoload.php');
如果资源无法加载,您可以使用过滤器 cmb2_field_ajax_search_url
来设置它。
add_filter('cmb2_field_ajax_search_url', function(){ return (get_template_directory_uri() . '/cmb2-ajax-search/'); });
参数
选项
multiple
(bool, 默认 = false) : 将字段转换为多个附加对象limit
(int, 默认 = -1 : 单一选择) : 限制可选择的帖子数量 (-1 为无限)sortable
(bool, 默认 = false) : 允许选定的项目排序(只有当 multiple = true 时)query_args
(array) : 传递到每个请求的查询参数
查询参数
- query_args 接受与 WP_Query 相同的参数,用于
post_ajax_search
- query_args 接受与 WP_User_Query 相同的参数,用于
user_ajax_search
- query_args 接受与 WP_Term_Query 相同的参数,用于
term_ajax_search
示例
add_action('cmb2_admin_init', 'cmb2_ajax_search_metabox'); function cmb2_ajax_search_metabox(){ $prefix = 'your_prefix_demo_'; $cmb_demo = new_cmb2_box(array( 'id' => $prefix . 'metabox', 'title' => __( 'Attached posts Metabox', 'cmb2' ), 'object_types' => array( 'page', 'post' ), // Post type ) ); // Single post $cmb_demo->add_field( array( 'name' => __( 'Attached post', 'cmb2' ), 'desc' => __( 'Field description (optional)', 'cmb2' ), 'id' => $prefix . 'post', 'type' => 'post_ajax_search', 'query_args' => array( 'post_type' => array( 'post' ), 'posts_per_page' => -1 ) ) ); // Multiple posts $cmb_demo->add_field( array( 'name' => __( 'Multiple posts', 'cmb2' ), 'desc' => __( 'Field description (optional)', 'cmb2' ), 'id' => $prefix . 'posts', 'type' => 'post_ajax_search', 'multiple-items' => true, 'limit' => 10, 'query_args' => array( 'post_type' => array( 'post', 'page' ), 'post_status' => array( 'publish', 'pending' ) ) ) ); // Single user $cmb_demo->add_field( array( 'name' => __( 'Attached user', 'cmb2' ), 'desc' => __( 'Field description (optional)', 'cmb2' ), 'id' => $prefix . 'user', 'type' => 'user_ajax_search', 'query_args' => array( 'role' => array( 'Subscriber' ), 'search_columns' => array( 'user_login', 'user_email' ) ) ) ); // Multiple users $cmb_demo->add_field( array( 'name' => __( 'Multiple users', 'cmb2' ), 'desc' => __( 'Field description (optional)', 'cmb2' ), 'id' => $prefix . 'users', 'type' => 'user_ajax_search', 'multiple-items' => true, 'limit' => 5, 'query_args' => array( 'role__not_in' => array( 'Administrator', 'Editor' ), ) ) ); // Single term $cmb_demo->add_field( array( 'name' => __( 'Attached term', 'cmb2' ), 'desc' => __( 'Field description (optional)', 'cmb2' ), 'id' => $prefix . 'term', 'type' => 'term_ajax_search', 'query_args' => array( 'taxonomy' => 'category', 'childless' => true ) ) ); // Multiple terms $cmb_demo->add_field( array( 'name' => __( 'Multiple terms', 'cmb2' ), 'desc' => __( 'Field description (optional)', 'cmb2' ), 'id' => $prefix . 'terms', 'type' => 'term_ajax_search', 'multiple-items'=> true, 'limit' => -1, 'query_args' => array( 'taxonomy' => 'post_tag', 'hide_empty' => false ) ) ); }
自定义结果输出
您可以使用 cmb_{$field_id}_ajax_search_result_text
来自定义从 AJAX 搜索返回的文本,并使用 cmb_{$field_id}_ajax_search_result_link
来自定义链接,请查看下一个示例
add_filter( 'cmb_your_prefix_demo_posts_ajax_search_result_text', 'cmb2_ajax_search_custom_field_text', 10, 3 ); function cmb2_ajax_search_custom_field_text( $text, $object_id, $object_type ) { $text = sprintf( '#%s - %s', $object_id, $text ); // #123 - Post title return $text; } add_filter( 'cmb_your_prefix_demo_posts_ajax_search_result_link', 'cmb2_ajax_search_custom_field_link', 10, 3 ); function cmb2_ajax_search_custom_field_link( $link, $object_id, $object_type ) { if( $object_id == 123 ) { $link = '#'; } return $link; }
检索字段值
如果 multiple == false 将返回附加对象的 ID:get_post_meta( get_the_ID(), 'your_field_id', true );
如果 multiple == true 将返回附加对象的 ID 数组:get_post_meta( get_the_ID(), 'your_field_id', false );
变更日志
2.0.0
Ed-IT Solutions 分支从这里开始
- 可以从 composer 安装(这将破坏插件样式代码)。
- 实现 rubengc#14
1.0.2
- 更新 devbridgeAutocomplete 库
1.0.1
- 支持分组字段
- 支持小工具区域
- 使用 devbridgeAutocomplete() 而不是 autocomplete() 来避免错误
1.0.0
- 初始提交