有没有更好的方式来定义管理面板中自定义域的选项?

时间:2014-07-17 作者:Johnny

我现在有这个:

$num = 1;

while($num < 6) {

  register_setting( \'front_page_options\', \'slide_title_\'.$num );
  register_setting( \'front_page_options\', \'slide_description_\'.$num );
  register_setting( \'front_page_options\', \'slide_button_1_text_\'.$num );
  register_setting( \'front_page_options\', \'slide_button_1_url_\'.$num );
  register_setting( \'front_page_options\', \'slide_button_2_text_\'.$num );
  register_setting( \'front_page_options\', \'slide_button_2_url_\'.$num );
  register_setting( \'front_page_options\', \'slide_bg_\'.$num );
  register_setting( \'front_page_options\', \'slide_in_img_\'.$num );

  ++$num;
}
但是有没有更好的方法来写这个呢?

2 个回复
最合适的回答,由SO网友:Radley Sustaire 整理而成

看起来您正在使用设置API将图像添加到图库或幻灯片中。正如@kuchenundkakao所建议的,帖子类型将是一个不错的选择,尤其是如果你有多张幻灯片,或者如果你将在不同的图库中使用不同的幻灯片。

如果您不需要自定义post类型(这很容易过度),那么使用add_menu_page. 使用您自己的HTML表单,并使用update_option(). 使用检索幻灯片get_option().

WordPress中的选项可以保存为数组,并自动作为数组返回。它在数据库中被序列化,但您不必担心它。WordPress会为您处理。

以下是从HTML表单保存值时可能需要使用的示例:

$all_slides = array();

// Get our form data, from fields like: <input name="slides[0][name]">
$submitted_slides = stripslashes_deep($_POST[\'slides\']);

// Get our images that were uploaded using a file input
$slide_files =  $_FILES[\'slides\'];

foreach($submitted_slides as $i => $slide) {
  // Add a slide to our array
  $all_slides[] = array(
    \'title\' => $slide[\'title\'],
    \'description\' => $slide[\'description\'],
    \'image\' => wp_handle_upload( $slide_files[$i] ),
  );
}

// Save our slides to the database
update_option(\'mytheme-gallery\', $all_slides);
您将要使用admin_post 处理表单提交的操作,您将希望使用nonce verification 确保您专门为该页面保存表单。使用该示例,您可以使用get_option(\'mytheme-gallery\').

我也可以建议Options Framework 由Devin Price插件创建自定义管理页面。如果您只需要一个页面来管理滑块,那就太过分了。主要的好处是它利用媒体上传器上传图像,并为您处理验证。

SO网友:HU ist Sebastian

你似乎在尝试编写自己的滑块插件,对吗?

你可以去注册一个自定义的帖子类型“幻灯片”,然后给它一些元框。

这样,您就不必固定幻灯片的数量,只需使用“get\\u posts”功能即可检索幻灯片。

只是一个想法^^

结束

相关推荐