我使用面向对象的方法来完成创建CPT及其元框的所有工作。出于管理样式的目的,我想为特定的自定义帖子类型做一些更重的样式。My object方法创建以下HTML结果:
<div id="client_info" class="postbox ">
<button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: Client Info</span><span class="toggle-indicator" aria-hidden="true"></span></button>
<h2 class=\'hndle\'><span>Client Info</span></h2>
<div class="inside">
<label for="client_info_client_first_name">Client First Name</label>
<input type="text" name="custom_meta[client_info_client_first_name]" id="client_info_client_first_name" value="" />
<label for="client_info_client_last_name">Client Last Name</label>
<input type="text" name="custom_meta[client_info_client_last_name]" id="client_info_client_last_name" value="" />
<label for="client_info_client_age">Client Age</label>
<input type="number" name="custom_meta[client_info_client_age]" id="client_info_client_age" value="" />
</div>
</div>
我要做的是向
<div>
元素,以便
class
属性类似于:
class="postbox my-class"
我试过使用add_filter()
为了做到这一点,但问题是我能找到的唯一相关挂钩是postbox_classes_{$page}_{$id}
我想让我的对象的方法来处理注册过滤器的问题,但我不知道如何使其成为动态的。我已尝试将串联用于.
和Herdeoc风格:
function meta_box_add_class( $classes ) {
array_push( $classes, \'jldc-fitcase-meta\' );
return $classes;
}
add_filter( \'postbox_classes_custom-post-type_\' . $box_id, \'meta_box_add_class\' );
add_filter( \'postbox_classes_custom-post-type_{$box_id}\', \'meta_box_add_class\' );
是否有一种方法可以在创建每个metabox时动态添加此挂钩?
最合适的回答,由SO网友:Cedon 整理而成
在做了一些尝试之后,我发现这实际上可以通过定义我想通过变量添加过滤器的钩子的名称来实现。
所以如果我的$post_type_name
是portfolio
还有我的$box_id
是piece_info
, 我可以制作如下过滤器:
function add_meta_box_class( $classes ) {
array_push( $classes, \'custom-class\');
return $classes;
}
$filter_name = \'postbox_classes_\' . $post_type_name . \'_\' . $box_id;
add_filter( $filter_name , \'add_meta_box_class\' );
这将导致使用
postbox_classes_{$page}_{$id}
挂钩组件
postbox_classes_portfolio_piece_info
.