将类添加到自定义帖子类型的所有元框中

时间:2017-12-18 作者:Cedon

我使用面向对象的方法来完成创建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时动态添加此挂钩?

1 个回复
最合适的回答,由SO网友:Cedon 整理而成

在做了一些尝试之后,我发现这实际上可以通过定义我想通过变量添加过滤器的钩子的名称来实现。

所以如果我的$post_type_nameportfolio 还有我的$box_idpiece_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.

结束

相关推荐

使用自己的php脚本从wp标题批量生成wp分类标签

我想使用插件将wp标题生成到标签中,https://wordpress.org/plugins/wp-full-auto-tags-manager/,因为我有数百万个帖子,所以日程表/cronjob工作不正常。所以我想用self-php脚本手动执行,我可以使用插件中的一段代码并在ssh终端上独立运行它吗,这是一段代码:$nsw_sql_gen_tags = $wpdb - > prepare(\" SELECT ID, post_title FROM $wpdb->posts WHERE po