在快速编辑中添加自定义字段,通常我们不需要在 WordPress 后台文章列表的“快速编辑”菜单中进行更改,但有的时候如果可以把常用的设置添加到“快速编辑”菜单里,可以节省您很多时间。如下方 gif 的操作,在列表快速编辑排序。

添加列

这里以 WebStack 导航主题的自定义文章类型“sites”(网址)为例,注意修改下面代码的sites字眼为自己的。

一为:WordPress导航主题-WebStack导航主题​zhuanlan.zhihu.com

这里添加两个选项-排序和可见性选项。下面的代码是针对sites自定义类型的,记得修改。

/*** 文章列表添加自定义字段* https://www.iowen.cn/wordpress-quick-edit*/
//如果是默认文章,请使用 manage_post_posts_columns 钩子,这里是自定义文章类型 sites
add_filter('manage_edit-sites_columns', 'io_ordinal_manage_posts_columns');
function io_ordinal_manage_posts_columns($columns){$columns['ordinal']    = '排序'; $columns['visible']    = '可见性'; return $columns;
}
add_action('manage_posts_custom_column','io_ordinal_manage_posts_custom_column',10,2);
function io_ordinal_manage_posts_custom_column($column_name,$id){ switch( $column_name ) :case 'ordinal': {echo get_post_meta($id, '_sites_order', true);break;}case 'visible': {echo get_post_meta($id, '_visible', true)? "管理员" : "所有人";break;}endswitch;
}

添加了列之后,你也可以使用CSS来使其中的一些列变得更宽或更窄。如下示例

add_action( 'admin_head', 'io_custom_css' );
function io_custom_css(){echo '<style>#ordinal{/*名称与上方代码对应*/width:80px;} </style>';
}

2. 添加快速编辑表单

使用quick_edit_custom_box钩子。

add_action('quick_edit_custom_box',  'io_add_quick_edit', 10, 2);
function io_add_quick_edit($column_name, $post_type) {if ($column_name == 'ordinal') {//值与前方代码对应//请注意:<fieldset>类可以是://inline-edit-col-left,inline-edit-col-center,inline-edit-col-right//所有列均为float:left,//因此,如果要在左列,请使用clear:both元素echo '<fieldset class="inline-edit-col-left" style="clear: both;"><div class="inline-edit-col"> <label class="alignleft"><span class="title">排序</span><span class="input-text-wrap"><input type="number" name="ordinal" class="ptitle" value=""></span></label> <em class="alignleft inline-edit-or"> 越大越靠前</em></div></fieldset>';}
}

完成此步骤后,字段应出现在“快速编辑”中。不用担心这些字段的值是否为空,我们将在最后一步中填充它们。

3. 保存字段

/** * 文章列表添加自定义字段 * https://www.iowen.cn/wordpress-quick-edit*/
add_action('save_post', 'io_save_quick_edit_data');
function io_save_quick_edit_data($post_id) {//如果是自动保存日志,并非我们所提交数据,那就不处理if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE )return $post_id;// 验证权限,'sites' 为文章类型,默认为 'post' ,这里为我自定义的文章类型'sites'if ( 'sites' == $_POST['post_type'] ) {if ( !current_user_can( 'edit_page', $post_id ) )return $post_id;} else {if ( !current_user_can( 'edit_post', $post_id ) )return $post_id;}  $post = get_post($post_id); // 'ordinal' 与前方代码对应if (isset($_POST['ordinal']) && ($post->post_type != 'revision')) {$left_menu_id = esc_attr($_POST['ordinal']);if ($left_menu_id)update_post_meta( $post_id, '_sites_order', $left_menu_id);// ‘_sites_order’为自定义字段}
}

完成此步骤后,单击“更新”按钮,应在自定义列中已经更新了“快速编辑”字段。

4. 加载默认数据

因为第2步添加的表单不能获取文章的默认值,为了编辑方便,所有需要将默认值赋予表单

/*** 文章列表添加自定义字段* https://www.iowen.cn/wordpress-quick-edit*/
add_action('admin_footer', 'ashuwp_quick_edit_javascript');
function ashuwp_quick_edit_javascript() {$current_screen = get_current_screen(); //条件判断,注意修改为对应值if (!is_object($current_screen) || ($current_screen->post_type != 'sites'))return;if($current_screen->id == 'edit-sites'){//修改下方 js 代码中的 ordinal 为前方代码对应的值echo"<script type='text/javascript'>jQuery(function($){var wp_inline_edit_function = inlineEditPost.edit;inlineEditPost.edit = function( post_id ) {wp_inline_edit_function.apply( this, arguments );var id = 0;if ( typeof( post_id ) == 'object' ) {id = parseInt( this.getId( post_id ) );}if ( id > 0 ) {var specific_post_edit_row = $( '#edit-' + id ),specific_post_row = $( '#post-' + id ),product_price = $( '.column-ordinal', specific_post_row ).text(); $('input[name="ordinal"]', specific_post_edit_row ).val( product_price ); }}});</script>";}
}

好了,现在可以快速编辑排序了,还可以为列表添加分类过滤器,选择分类单独调整分类下网址的排序。添加方法下面继续

5. 添加分类过滤器

/*** 文章列表添加自定义字段* https://www.iowen.cn/wordpress-quick-edit*/
//此部分功能是生成分类下拉菜单
add_action('restrict_manage_posts','io_post_type_filter',10,2);
function io_post_type_filter($post_type, $which){if('sites' !== $post_type){ //这里为自定义文章类型,需修改return; //检查是否是我们需要的文章类型}$taxonomy_slug     = 'favorites'; //这里为自定义分类法,需修改$taxonomy          = get_taxonomy($taxonomy_slug);$selected          = '';$request_attr      = 'favorites'; //这里为自定义分类法,需修改if ( isset($_REQUEST[$request_attr] ) ) {$selected = $_REQUEST[$request_attr];}wp_dropdown_categories(array('show_option_all' =>  __("所有{$taxonomy->label}"),'taxonomy'        =>  $taxonomy_slug,'name'            =>  $request_attr,'orderby'         =>  'name','selected'        =>  $selected,'hierarchical'    =>  true,'depth'           =>  5,'show_count'      =>  true,  'hide_empty'      =>  false,  ));
}
//此部分功能是列出指定分类下的所有文章
add_filter('parse_query','io_work_convert_restrict');
function io_work_convert_restrict($query) {  global $pagenow;  global $typenow;  if ($pagenow=='edit.php') {  $filters = get_object_taxonomies($typenow);  foreach ($filters as $tax_slug) {  $var = &$query->query_vars[$tax_slug];  if ( isset($var) && $var>0) {  $term = get_term_by('id',$var,$tax_slug);  $var = $term->slug;  }  }  }  return $query;
}

分类列表

分类列表也是可以这样编辑的,使用manage_edit-分类法名_columnsmanage_分类法名_custom_column这两个钩子完成第1步,第2步和上方相同,第3步使用add_action('edit_分类法名','function',10,1);钩子,第4步js代码中的inlineEditPost改为inlineEditTax和一些标签的修改,就可以实现分类列表的快速编辑了。

alter table add column多个字段_WordPress 在文章列表快速编辑中编辑自定义字段相关推荐

  1. MySQL 新增字段(alter table add column),报错:Duplicate entry

    问题 执行一个增加字段的DDL语句脚本时,报错,错误如下: Error 1062: Duplicate entry 'c51d3db8-59a5 2022-06-28 17:59:59' for ke ...

  2. alter table add column多个字段_SQL对表中字段的操作 alter

    ALTER TABLE 语句用于在现有表中添加.删除或修改列. 注意不同的数据库的语句有所不一样 增加和删除都基本一致. 进行修改表中字段的时候注意: 本文主要介绍 sqlserver/mysql/o ...

  3. alter table add column多个字段_ElementUI表格el-table表头固定自适应高度解决方案

    一.前言 ElementUI.iView都以相同的方式提供了表格组件表头固定的方法,即设置组件的height属性.表头固定很重要,就在于当表格数据项很多时,滚动条出现在表格组件内,而不是出现在表格组件 ...

  4. alter table add column多个字段_利用Python将多个excel合并到一个文件中

    数据岗位的小伙伴可能经常会遇到这样一个问题:多个来源返回的数据怎么整合到一个文件中?手动经常会出错,下面介绍一种利用Python处理的方式: 前期准备: 1.多个excel需要进行数据整理,保证文件的 ...

  5. impala中 alter table add partition 对HDFS文件权限的影响

    偶然的机会发现用其他用户重写impala用户下的分区数据时有些表报错,有些表不报错,重写报错信息(Error while processing statement: FAILED: Execution ...

  6. 【总结】alter table *** add constraint *** 用法 . 建立约束 ,主键、外键的SQL语句写法

    [总结]alter table *** add constraint *** 用法 2010年08月26日 星期四 08:31 1.主键约束: 要对一个列加主键约束的话,这列就必须要满足的条件就是分空 ...

  7. v$lock之alter table drop column与alter table set unused column区别系列五

    背景 之前文章:   http://blog.itpub.net/9240380/viewspace-1814709/,涉及过如何删除表的某列,本文我们讨论下不同的删除表列语法参数,持锁模式的不同,便 ...

  8. 如何用WordPress中的自定义字段重写来宾作者姓名

    Have you ever had a guest post on your blog? How do you go about giving the author full credit? We h ...

  9. dede taglist模板中调用自定义字段

    dede taglist模板中调用自定义字段 [field:id runphp="yes"]global $dsql; $query = "SELECT 自定义字段 FR ...

最新文章

  1. Date, TimeZone, MongoDB, java中date的时区问题
  2. R语言ggplot2可视化改变图中线条的透明度级别实战
  3. Oracle数据库日期范围查询的两种实现方式
  4. python reshape transpose
  5. 敲黑板了!网络推广软件教你如何有效提高网站权重?
  6. 《从零开始学Swift》学习笔记(Day 6)——哎呀常量和变量都该什么时候用啊?...
  7. 创业三年来的一些感想 - 创业篇1
  8. C语言课后习题(63)
  9. OpenShift 4 - DevSecOps Workshop (6) - 为Pipeline增加SonarQube实现SAST
  10. Python利用openpyxl来操作Excel(一)
  11. 如何使用BetterZip的压缩密码管理器?
  12. springcloud使用LCN分布式事务
  13. 安装Google play 服务等四件套
  14. SD/TF卡驱动(一)--------SD卡相关简介
  15. 苹果cms码支付接口
  16. C语言中标量变量,如何从标量变量A,B,C和D中产生总线BusQ[0:3]?如何从两条总线B usA[0:3]和BusY[20:15]形成新的总线BusR[10:1...
  17. 系统激活成功仍显示水印,取消激活方法
  18. Ubuntu的shell脚本踩keng-unexpected operator
  19. 找出知晓秘密的所有专家
  20. pymssql连接sql server报错Unable to connect: Adaptive Server is unavailable

热门文章

  1. 【图像处理opencv】_Jupyter 更改文件默认保存目录
  2. python字符编码导致dict中key不同
  3. Python编程基础:第五十五节 map函数Map
  4. 剖析Elasticsearch集群系列第一篇 Elasticsearch的存储模型和读写操作
  5. nodejs安装node-rsa遇到的问题及解决
  6. apache kafka技术分享系列(目录索引)--转载
  7. 根据 UserAgent 判断网页是在浏览器、或在微信、或在APP中
  8. 【联邦学习】FATE 集群部署 step3
  9. YEP共享平台释放宜人贷无限潜力
  10. Learning to rank在淘宝的应用