我需要在编辑时限制属于特定类别的帖子的帖子磁贴长度。因此,我需要检查已为正在编辑的帖子分配了哪些类别,并决定是否限制其帖子标题。
我使用"wp_insert_post_data"来完成工作
add_filter( 'wp_insert_post_data' , 'limit_title_length' , '99', 2 );
但我发现从传递的$postarr
返回的类别是现有类别。不是最新的类别。因此,它不适用于新帖子或在编辑时更改类别。
$post_category = $postarr['post_category'];
我还检查了函数内部的get_the_category()
,如果类别分配发生变化,它还返回现有类别,而不是最新类别。
到目前为止我的代码...
function limit_title_length( $data, $postarr ) {
// set up variables like max length, category id to limit
...
// get post id, title and categories from $data and $postarr passed
$title = $data['post_title'];
$id = $postarr['ID'];
$post_category = $postarr['post_category'];
// check if the specified category exists in the categories assigned to this post
...
// process $title, reset $post_title in $data
...
$data['post_title'] = $title;
return $data;
}
add_filter( 'wp_insert_post_data' , 'limit_title_length' , '99', 2 );
wp_insert_post_data
在发布后期阶段大火。我希望从$postarr['post_category'];
获得最新的类别但这不是我的情况。有什么解决方案或替代方案吗?
所以要清楚 - 您想确定添加到帖子的最新类别吗?
如果是这种情况,您将很难这样做,因为 Wordpress 不会为添加的类别保存元。如果您足够熟练,则可以编写此类函数的脚本并将数据保存在自定义表中。然后检索它以供使用。
如果您知道要查找的类别的名称,则可以使用has_category!