2017-01-27 19 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); 
}