新增右側欄可帶入參數的項目,帶有一個 $param
,同樣是 Metabox
物件,由於我希望可以帶入特定表單的欄位,因此使用 Fluent Form 提供的 fluentFormApi
裡面的 labels()
方法,就能取得表單欄位的值與標籤,程式碼範例如下:
<?php
/**
* 新增可帶入參數
*/
add_action(
'wc_notify_param',
function( $param ) {
$forms = get_fluent_forms();
if ( ! $forms ) {
return false;
}
$html = '';
foreach ( $forms as $form ) {
$form_api = fluentFormApi( 'forms' )->form( $formId = $form->id );
$form_name = $form->title;
$labels = $form_api->labels();
$html .= '<div class="p:5|10 bg:white wc-notify-params-toggle min-h:140">';
$html .= '
<div>
<ul class="d:flex flex-wrap:wrap mb:0" data-show-by="wc_notify_trigger_form" data-show-value="' . $form->id . '">';
foreach ( $labels as $input => $label ) {
$html .= '
<li class="mr:10">
<button class="btn-copy cursor:pointer rel border:0 p:5|8 r:4 bg:#eee bg:#ddd:hover" data-clipboard-text="{{' . $input . '}}">' . ucwords( str_replace( '_', ' ', $label ) ) . '
<span class="opacity:0 pointer-events:none abs bottom:-20 bg:#2271b1 f:white p:3|5 f:12 r:2 left:50% translate(-50%,0) z:10 white-space:nowrap">' . __( 'Copied!', 'wc-notify' ) . '
<i class="abs bottom:18 left:50% translate(-50%,0) w:0 h:0 border-style:solid; border-width:0|8px|10px|8px border-color:transparent|transparent|#2271b1|transparent z:5"></i>
</span>
</button>
</li>';
}
$html .= '</ul></div>';
$html .= '</div>';
}
$param->addHtml(
array(
'id' => 'metabox_fluent_form_field',
'html' => '<div class="data-show">' . $html . '</div>',
),
);
}
);
這邊的作法是使用迴圈取得所有表單的所有欄位,然後再透過前端根據目前所選的表單來顯示,可以看到 $labels
變數存的就是欄位的值與標籤。