2017-01-27 16 views
0

有没有一种方法可以在我的模板文件中动态设置一个CSS类名到BBPress论坛下拉菜单?WordPress如何动态设置一个CSS类到bbp_form_topic_type_dropdown

我已将BBPressform-topic.php复制到我的主题,现在我试图自定义元素的样式。

Create New Topic区域的两个下拉菜单,即主题类型主题状态分别使用以下功能正在渲染 - bbp_get_form_topic_type_dropdown()bbp_get_form_topic_status_dropdown();,其驻留在wp-content/plugins/bbpress/includes/topics/template.php

在上述功能我可以加我的类名,其中下面的代码片段是:

$r = bbp_parse_args($args, array(
    'select_id' => 'bbp_stick_topic', 
    'default_css_class' => 'form-control', 
    'tab'   => bbp_get_tab_index(), 
    'topic_id'  => 0, 
    'selected'  => false 
), 'topic_type_select'); 

但问题是我的变化将在情况下,我需要升级的bbPress丢失!

两件事情我已经尝试避免上述情况:

  1. 通过复制template.php我的主题文件夹并更改它:WP说功能已经被定义,这是正确的,所以我只好放弃这个想法

  2. 通过复制template.php和创造新的功能:像bbp_get_form_topic_type_dropdown_custom()bbp_get_form_topic_status_dropdown_custom()创建新的功能,增加我的CSS类给他们。但是根本没有下拉菜单!

我已经开始WP最近很抱歉,如果问题看起来很愚蠢。任何建议都会非常有帮助。

回答

0

经过几次搜索后,我终于得到了答案here。感谢Robkk

我在functions.php文件中创建一个新的功能,增加我的CSS类,然后使用apply_filters这样的:

return apply_filters('bbp_get_form_topic_status_dropdown_tp', ob_get_clean(), $r); 

在我function.php现在我有这样的:

function bbp_form_topic_status_dropdown_custom($args = '') { 
     echo bbp_get_form_topic_status_dropdown_custom($args); 
} 

function bbp_get_form_topic_status_dropdown_custom($args = '') { 
    // Parse arguments against default values 
    $r = bbp_parse_args($args, array(
     'select_id' => 'bbp_topic_status', 
     'default_css_class' => 'form-control', 
     'tab'  => bbp_get_tab_index(), 
     'topic_id' => 0, 
     'selected' => false 
    ), 'topic_open_close_select'); 
    ... 
    ... 
    <select class="<?php echo esc_attr($r['default_css_class']) ?>" name="<?php echo esc_attr($r['select_id']) ?>" id="<?php echo esc_attr($r['select_id']); ?>_select"<?php echo $tab; ?>> 
     <?php foreach (bbp_get_topic_statuses($r['topic_id']) as $key => $label) : ?> 
      <option value="<?php echo esc_attr($key); ?>"<?php selected($key, $r['selected']); ?>><?php echo esc_html($label); ?></option> 
     <?php endforeach; ?> 
    </select> 

    return apply_filters('bbp_get_form_topic_status_dropdown_custom', ob_get_clean(), $r); 
}