在创建新自定义帖子时定义Menu_order?
-
16-10-2019 - |
题
我创建了一种自定义帖子类型,称为 video
我正在使用一个名为的插件 Playlist_Order
(哪个改变 menu_order
字段)允许用户使用拖放接口在播放列表中订购其视频。
但是,当添加新帖子时,视频出现在播放列表的顶部,因为它被给出了默认值 menu_order
的价值 0
.
关于创建新视频帖子,我希望它出现在播放列表中 - 即查询所有内容 video
帖子类型,找到最大的 menu_order
价值,然后设置此 +1
对于新帖子。
我该如何实施?
解决方案
你好 @fxfuture:
我认为您正在寻找的是 wp_insert_post_data
钩。您可以将此代码添加到主题的底部 functions.php
文件和/或您可以将其添加到插件:
add_filter('wp_insert_post_data','my_wp_insert_post_data',10,2);
function my_wp_insert_post_data($data, $postarr) {
$post_type = 'video';
if ($data['post_type']==$post_type && get_post($postarr['ID'])->post_status=='draft') {
global $wpdb;
$data['menu_order'] = $wpdb->get_var("SELECT MAX(menu_order)+1 AS menu_order FROM {$wpdb->posts} WHERE post_type='{$post_type}'");
}
return $data;
}
其他提示
add_filter方法末尾的10&2参数是:执行的优先级(可选默认值= 10)和新函数接收到的参数数(可选默认值= 1)
它在上面的代码中出现的唯一原因是更改默认的参数数。
在这里阅读更多http://codex.wordpress.org/function_reference/add_filter