我创建了一种自定义帖子类型,称为 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

许可以下: CC-BY-SA归因
scroll top