আমি যথাসম্ভব স্বয়ংক্রিয় করার চেষ্টা করছি, সেটিংস এপিআই ফাংশন প্রতিটি প্লাগইনে প্রতিটি সেটিংয়ের জন্য কল করে। বিকল্প অ্যারের মাধ্যমে লুপিং, এবং আউটপুটিং add_settings_section()
এবং add_settings_field()
যথেষ্ট সহজ:
add_settings_section()
:
$oenology_hooks_tabs = oenology_hooks_get_settings_page_tabs();
foreach ( $oenology_hooks_tabs as $tab ) {
$tabname = $tab['name'];
$tabtitle = $tab['title'];
$tabsections = $tab['sections'];
foreach ( $tabsections as $section ) {
$sectionname = $section['name'];
$sectiontitle = $section['title'];
$sectiondescription = $section['description'];
// Add settings section
add_settings_section(
'oenology_hooks_' . $sectionname . '_section',
$sectiontitle,
'oenology_hooks_' . $sectionname . '_text',
'oenology_hooks_' . $tabname . '_tab'
);
}
}
এবং `add_settings_field ():
global $oenology_hooks;
$oenology_hooks = oenology_hooks_get_hooks();
foreach ( $oenology_hooks as $hook ) {
$hookname = $hook['name'];
$hooktitle = $hook['title'];
$hooktab = $hook['tab'];
$hooksection = $hook['section'];
add_settings_field(
'oenology_hooks_' . $hookname,
$hooktitle,
'oenology_hooks_setting_callback',
'oenology_hooks_' . $hooktab . '_tab',
'oenology_hooks_' . $hooksection . '_section',
$hook
);
}
সাথে add_settings_field()
, আমি সহজেই $hook
ফাংশন কলের পঞ্চম প্যারামিটার হিসাবে কলব্যাকটিতে ভেরিয়েবলটি পাস করে একটি জেনেরিক কলব্যাক লিখতে পারি :
function oenology_hooks_setting_callback( $hook ) {
$oenology_hooks_options = get_option( 'plugin_oenology_hooks_settings' );
$hookname = $hook['name'];
$hooktitle = $hook['title'];
$hookdescription = $hook['description'];
$hooktype = $hook['type'];
$hooktab = $hook['tab'];
$hooksection = $hook['section'];
$inputvalue = $hookname . '_hide';
$inputname = 'plugin_oenology_hooks_settings[' . $inputvalue . ']';
$textareaname = 'plugin_oenology_hooks_settings[' . $hookname . ']';
$textareavalue = $oenology_hooks_options[$hookname];
if ( 'Filter' == $hooktype ) {
?>
<input type="checkbox" name="<?php echo $inputname; ?>" value="<?php echo $inputvalue;?>" <?php checked( true == $oenology_hooks_options[$inputvalue] ); ?> />
<span>Hide <?php echo $hooktitle; ?> content?</span><br />
<?php
}
?>
<span class="description"><?php echo $hooktype; ?> Hook: <?php echo $hookdescription; ?></span><br />
<textarea name="<?php echo $textareaname; ?>" cols="80" rows="3" ><?php
echo esc_textarea( $textareavalue );
?></textarea>
<?php
}
যাইহোক, এটি উপস্থিত হয় যে add_settings_section()
একটি অভিন্ন $args
পরামিতি নেই; সুতরাং, $section
কলব্যাকটিতে ভেরিয়েবলটি পাস করতে আমি একই পদ্ধতিটি ব্যবহার করতে পারি না ।
সুতরাং, আমার প্রশ্ন: add_settings_section()
কলব্যাকের সাথে কোনও ভেরিয়েবল পাস করার কোনও উপায় আছে , বা আমি যা করছি তার সাথে সামঞ্জস্যপূর্ণ কলব্যাক তৈরির কোনও উপায় আছে add_settings_field()
?
সম্পাদনা করুন:
@ বেনারনেট এটি পেরেক! এখানে আমার কার্য কোড:
/**
* Callback for add_settings_section()
*
* Generic callback to output the section text
* for each Plugin settings section.
*
* @param array $section_passed Array passed from add_settings_section()
*/
function oenology_hooks_sections_callback( $section_passed ) {
global $oenology_hooks_tabs;
$oenology_hooks_tabs = oenology_hooks_get_settings_page_tabs();
foreach ( $oenology_hooks_tabs as $tab ) {
$tabname = $tab['name'];
$tabsections = $tab['sections'];
foreach ( $tabsections as $section ) {
$sectionname = $section['name'];
$sectiondescription = $section['description'];
$section_callback_id = 'oenology_hooks_' . $sectionname . '_section';
if ( $section_callback_id == $section_passed['id'] ) {
?>
<p><?php echo $sectiondescription; ?></p>
<?php
}
}
}
}
extract( $args, EXTR_SKIP );
শুরুতে নয়oenology_hooks_setting_callback()
, তাই আপনাকে অ্যারের প্রতিটি অংশ একটি নতুন রূপে সংরক্ষণ করতে হবে না$var
? এগুলি তখন$'name_inside_the_array
প্রাক্তন হিসাবে উপলব্ধ হবে। '$ শিরোনাম,
$ tab`, ইত্যাদি