Intereting Posts
как разместить логотип в центре других элементов в навигационной панели Страница WP и подкаталог с тем же именем Избранные изображения Неверный тип журнала WordPress результат поиска не отображается правильно Blogroll – Разный макет для первого сообщения get_results на больших наборах данных Переопределить dynamic_sidebar () в плагине? Какие проблемы могут возникнуть, если я удалю префикс «wp-» из папок и файлов WordPress? Как показывать сообщения только для последней подкатегории? Как предотвратить плагины от обнюхивания / кражи других параметров плагинов? Массовое редактирование изображений wordpress alt и атрибутов заголовка Настройка уведомлений по электронной почте о новых представлениях Должен использовать плагины автозагрузчика: как правильно использовать get_plugins ()? Структура Permalink, не работающая с пользовательской таксономией (URL как ./taxonomy/category/postname)

Настройки пользовательского блога

Каков наилучший способ добавить новые пользовательские настройки блога к общим настройкам WordPress (или к какой-либо другой странице настроек, если на то пошло), чтобы эти параметры были доступны для темы для использования?

Например, я хотел бы, чтобы простые настройки, такие как URL-адрес Twitter и URL-адрес страницы Facebook, настраивались, а не жестко закодированы в теме. Было бы неплохо, если бы я мог получить к ним доступ через bloginfo() , но любая другая функция будет делать то же самое.

Вот часть класса, который я недавно написал для клиента:

 if ( is_admin() ) RevenueCalculatorAdminSettings::init(); /** * Call this class with: * * RevenueCalculatorAdminSettings->init(); * * or * * RevenueCalculatorAdminSettings->init( 'text_domain' ); * */ class RevenueCalculatorAdminSettings { public static $text_domain = ''; /** * Add actions to produce new settings. * * @param string $text_domain The text domain to use for localization. Default is ''. */ public static function init( $text_domain = '' ) { self::$text_domain = $text_domain; add_action( 'admin_menu', array( __CLASS__, 'admin_settings_section' ) ); add_action( 'admin_init', array( __CLASS__, 'register_settings' ) ); } /** * Register new settings. */ public static function register_settings() { register_setting( 'general', 'commissions_calculator_commission', array( __CLASS__, 'validate_commission' ) ); register_setting( 'general', 'commissions_calculator_month_format', array( __CLASS__, 'validate_month_format' ) ); } /** * Adds new settings section to the Settings - General page. */ public static function admin_settings_section() { add_settings_section( 'commissions-calculator', __( 'Commissions Calculator', self::$text_domain ), array( __CLASS__, 'commissions_calculator_fields' ), 'general' ); } /** * Adds new settings field(s). */ public static function commissions_calculator_fields() { add_settings_field( 'commissions-calculator-commission', __( 'Commission', self::$text_domain ), array( __CLASS__, 'commission' ), 'general', 'commissions-calculator', array( 'label_for' => 'commissions-calculator-commission' ) ); add_settings_field( 'commissions-calculator-month_format', __( 'Month Format', self::$text_domain ), array( __CLASS__, 'month_format' ), 'general', 'commissions-calculator', array( 'label_for' => 'commissions-calculator-month-format' ) ); } /** * Echo markup for Commission setting field. */ public static function commission() { /** * id commissions-calculator-commission * value get_option( 'commissions_calculator_commission' ) */ printf( '<input id="commissions-calculator-commission" name="commissions_calculator_commission" type="text" value="%s" class="small-text" /><label for="commissions-calculator-commission">%s</label>', get_option( 'commissions_calculator_commission' ), __( ' For 60%, use 0.60.', self::$text_domain ) ); } /** * Validate Commission option. * * @param string|array $tainted_input Tainted input from the admin form. Do not use this data without cleaning. */ public static function validate_commission( $tainted_input ) { if ( is_numeric( $tainted_input ) ) return $tainted_input; add_settings_error( 'commissions-calculator', 'commissions-calculator-commission', __( 'Commission must be numeric. Defaulting to 60%', self::$text_domain ) ); return '0.60'; } /** * Echo markup for Month Format setting field. */ public static function month_format() { /** * id commissions-calculator-month_format * value get_option( 'commissions_calculator_month_format' ) */ /** Use 'F' in date for full long Month names. Use 'M' in date for short, 3-letter Month names. */ printf( '<label><input name="commissions_calculator_month_format" type="radio" value="F" %s/> <span>%s</span></label><br /> <label><input name="commissions_calculator_month_format" type="radio" value="M" %s/> <span>%s</span><label>', checked( get_option( 'commissions_calculator_month_format' ), 'F', false ), __( 'Full month names (January, Februrary, etc.) in top row.', self::$text_domain ), checked( get_option( 'commissions_calculator_month_format' ), 'M', false ), __( 'Short month names (Jan, Feb, etc.) in top row.', self::$text_domain ) ); } /** * Validate Month Format option. * * @param string|array $tainted_input Tainted input from the admin form. Do not use this data without cleaning. */ public static function validate_month_format( $tainted_input ) { /** Default to 'M'. Convert formats other than 'M' and 'F' to 'M'. */ if ( 'F' == $tainted_input ) return 'F'; else return 'M'; } } 

Хорошо, я, очевидно, искал не то место. API настроек предлагает все функции для регистрации новых настроек, добавления разделов, настройки форм настроек администратора и т. Д.

Из документации не ясно, как получить эти настройки, когда они вам нужны в вашей теме. Если я правильно get_option() функция get_option() выполняет трюк.