1238 | | * @param string $id Slug-name to identify the field. Used in the 'id' attribute of tags. |
1239 | | * @param string $title Formatted title of the field. Shown as the label for the field |
1240 | | * during output. |
1241 | | * @param callable $callback Function that fills the field with the desired form inputs. The |
1242 | | * function should echo its output. |
1243 | | * @param string $page The slug-name of the settings page on which to show the section |
1244 | | * (general, reading, writing, ...). |
1245 | | * @param string $section Optional. The slug-name of the section of the settings page |
1246 | | * in which to show the box. Default 'default'. |
1247 | | * @param array $args { |
| 1238 | * @param string $id Slug-name to identify the field. Used in the 'id' attribute of tags. |
| 1239 | * @param string $title Formatted title of the field. Shown as the label for the field |
| 1240 | * during output. |
| 1241 | * @param callable|string $callback Function that fills the field with the desired form inputs. The |
| 1242 | * function should echo its output. May instead be one out of 'text', |
| 1243 | * 'number', 'email', 'url', 'tel', 'textarea', 'select', 'checkbox' |
| 1244 | * or 'radio' to use a default function to render the form input. |
| 1245 | * @param string $page The slug-name of the settings page on which to show the section |
| 1246 | * (general, reading, writing, ...). |
| 1247 | * @param string $section Optional. The slug-name of the section of the settings page |
| 1248 | * in which to show the box. Default 'default'. |
| 1249 | * @param array $args { |
1250 | | * @type string $label_for When supplied, the setting title will be wrapped |
1251 | | * in a `<label>` element, its `for` attribute populated |
1252 | | * with this value. |
1253 | | * @type string $class CSS Class to be added to the `<tr>` element when the |
1254 | | * field is output. |
| 1252 | * @type string $input_id The 'id' attribute of the input field. Default is the |
| 1253 | * value of $id. |
| 1254 | * @type string $input_name The `name` attribute of the input field. Default is the |
| 1255 | * value of $id. |
| 1256 | * @type string $label_for When supplied, the setting title will be wrapped |
| 1257 | * in a `<label>` element, its `for` attribute populated |
| 1258 | * with this value. Default is the value of $id. |
| 1259 | * @type string $class CSS Class to be added to the `<tr>` element when the |
| 1260 | * field is output. Default empty. |
| 1261 | * @type string $description When supplied, this description will be shown below the |
| 1262 | * input field when using a default callback function. |
| 1263 | * @type callable $value_callback Callback to retrieve the value. Default is |
| 1264 | * 'get_settings_field_option', which calls get_option() |
| 1265 | * based on the $input_name argument. |
| 1396 | * Renders a text input for a settings field. |
| 1397 | * |
| 1398 | * This function is used as a default callback when specifying 'text', |
| 1399 | * 'number', 'email', 'url' or 'tel' for the $callback parameter in |
| 1400 | * `add_settings_field()`. |
| 1401 | * |
| 1402 | * @since 4.8.0 |
| 1403 | * |
| 1404 | * @param array $field_args Field arguments. See the documentation for the |
| 1405 | * $args parameter of `add_settings_field()` for a |
| 1406 | * list of default arguments. |
| 1407 | */ |
| 1408 | function render_settings_field_text( $field_args ) { |
| 1409 | $type = ! empty( $field_args['type'] ) ? $field_args['type'] : 'text'; |
| 1410 | |
| 1411 | $id = ! empty( $field_args['input_id'] ) ? ' id="' . esc_attr( $field_args['input_id'] ) . '"' : ''; |
| 1412 | $name = ! empty( $field_args['input_name'] ) ? ' name="' . esc_attr( $field_args['input_name'] ) . '"' : ''; |
| 1413 | $value = ! empty( $field_args['value'] ) ? ' value="' . esc_attr( $field_args['value'] ) . '"' : ''; |
| 1414 | |
| 1415 | echo '<input type="' . esc_attr( $type ) . '"' . $id . $name . $value . '>'; |
| 1416 | |
| 1417 | if ( ! empty( $field_args['description'] ) ) { |
| 1418 | echo '<p class="description">' . $field_args['description'] . '</p>'; |
| 1419 | } |
| 1420 | } |
| 1421 | |
| 1422 | /** |
| 1423 | * Renders a textarea input for a settings field. |
| 1424 | * |
| 1425 | * This function is used as a default callback when specifying 'textarea' |
| 1426 | * for the $callback parameter in `add_settings_field()`. |
| 1427 | * |
| 1428 | * @since 4.8.0 |
| 1429 | * |
| 1430 | * @param array $field_args Field arguments. See the documentation for the |
| 1431 | * $args parameter of `add_settings_field()` for a |
| 1432 | * list of default arguments. |
| 1433 | */ |
| 1434 | function render_settings_field_textarea( $field_args ) { |
| 1435 | //TODO: Implement this. |
| 1436 | } |
| 1437 | |
| 1438 | /** |
| 1439 | * Renders a dropdown input for a settings field. |
| 1440 | * |
| 1441 | * This function is used as a default callback when specifying 'select' |
| 1442 | * for the $callback parameter in `add_settings_field()`. |
| 1443 | * |
| 1444 | * @since 4.8.0 |
| 1445 | * |
| 1446 | * @param array $field_args Field arguments. See the documentation for the |
| 1447 | * $args parameter of `add_settings_field()` for a |
| 1448 | * list of default arguments. |
| 1449 | */ |
| 1450 | function render_settings_field_select( $field_args ) { |
| 1451 | //TODO: Implement this. |
| 1452 | } |
| 1453 | |
| 1454 | /** |
| 1455 | * Renders a checkbox input for a settings field. |
| 1456 | * |
| 1457 | * This function is used as a default callback when specifying 'checkbox' |
| 1458 | * for the $callback parameter in `add_settings_field()`. |
| 1459 | * |
| 1460 | * @since 4.8.0 |
| 1461 | * |
| 1462 | * @param array $field_args Field arguments. See the documentation for the |
| 1463 | * $args parameter of `add_settings_field()` for a |
| 1464 | * list of default arguments. |
| 1465 | */ |
| 1466 | function render_settings_field_checkbox( $field_args ) { |
| 1467 | //TODO: Implement this. |
| 1468 | } |
| 1469 | |
| 1470 | /** |
| 1471 | * Renders a radio input for a settings field. |
| 1472 | * |
| 1473 | * This function is used as a default callback when specifying 'radio' |
| 1474 | * for the $callback parameter in `add_settings_field()`. |
| 1475 | * |
| 1476 | * @since 4.8.0 |
| 1477 | * |
| 1478 | * @param array $field_args Field arguments. See the documentation for the |
| 1479 | * $args parameter of `add_settings_field()` for a |
| 1480 | * list of default arguments. |
| 1481 | */ |
| 1482 | function render_settings_field_radio( $field_args ) { |
| 1483 | //TODO: Implement this. |
| 1484 | } |
| 1485 | |
| 1486 | /** |
| 1487 | * Retrieves the value for a settings field, based on the field arguments. |
| 1488 | * |
| 1489 | * The function will call `get_option()` based on the 'input_name' argument |
| 1490 | * passed. It will automatically look for the correct key if an array option |
| 1491 | * is used for the field. |
| 1492 | * |
| 1493 | * This is the default callback function used when registering a field with |
| 1494 | * `add_settings_field()`. |
| 1495 | * |
| 1496 | * @since 4.8.0 |
| 1497 | * |
| 1498 | * @param array $field_args Field arguments. See the documentation for the |
| 1499 | * $args parameter of `add_settings_field()` for a |
| 1500 | * list of default arguments. |
| 1501 | * @return mixed The value for the settings field, or null if no value set. |
| 1502 | */ |
| 1503 | function get_settings_field_option( $field_args ) { |
| 1504 | if ( empty( $field_args['input_name'] ) ) { |
| 1505 | return null; |
| 1506 | } |
| 1507 | |
| 1508 | $keys = preg_split( '/\[/', str_replace( ']', '', $field_args['input_name'] ) ); |
| 1509 | $base = array_shift( $keys ); |
| 1510 | |
| 1511 | $value = get_option( $base, null ); |
| 1512 | while ( ! empty( $keys ) ) { |
| 1513 | $current_key = array_shift( $keys ); |
| 1514 | if ( ! isset( $value[ $current_key ] ) ) { |
| 1515 | return null; |
| 1516 | } |
| 1517 | |
| 1518 | $value = $value[ $current_key ]; |
| 1519 | } |
| 1520 | |
| 1521 | return $value; |
| 1522 | } |
| 1523 | |
| 1524 | /** |