¿Puedo usar un espacio en el nombre / clave de una opción?

2

¿Hay alguna razón para no usar un espacio en el nombre / clave de una opción de WP? Ex.

update_option( 'my option name', 'abc' );

No puedo encontrar nada que indique que no puedo, pero cada ejemplo usa un guión bajo. Quiero saber si usar un espacio realmente romperá algo ahora o en el futuro.

    
pregunta ggutenberg 28.11.2013 - 19:27

3 respuestas

2

Además de la práctica general de WordPress ( enlace ) que fomenta que los espacios se reemplacen siempre con - en los nombres de archivo y _ para otros fines, no hay una razón establecida por la que no pueda usar espacios en el nombre de una opción.

De mis pruebas, no hay ninguna razón técnica para limitarte a usar un espacio.

(editar) Mirando más lejos, el SQL es: $ row = $ wpdb- > get_row ($ wpdb- > prepare ("SELECT autoload FROM DE $ wpdb- > options DONDE option_name =% s", $ option));

por lo que cualquier valor de escape debería funcionar pero solo para estar seguro, siempre debes usar esc_sql () ya que no lo hace específicamente.

    
respondido por el Christopher Ross 28.11.2013 - 21:02
2

Puedes usar un espacio, pero es un poco molesto seleccionar esta tecla por teclado. Normalmente, puede utilizar Ctrl + Shift + Arrow para seleccionar una cadena. Los guiones y los espacios son puntos de parada para este tipo de selección.

    
respondido por el fuxia 28.11.2013 - 20:08
1

Puede usar cualquier carácter en la configuración (excepto quizás comillas). Estos son todos los nombres de opciones válidos:

"my option name"
"my:option name"
"MY->OPTION_NAME"
"My/Option/Name"
"my-option-name"

Limitaciones importantes

  1. Los nombres de las opciones deben tener un máximo de 64 caracteres de longitud!

Si especifica un nombre más largo, el nombre de la opción se truncará para que se ajuste a 64 caracteres en DB (no en el código). Así que esto hace que sea imposible recuperar el valor de la opción de nuevo. Siempre asegúrese de que el nombre de su opción tenga un máximo de 64 caracteres.

  1. Los nombres de las opciones no distinguen entre mayúsculas y minúsculas.

Si guarda una opción APIKEY también puede acceder a ella a través de apikey

  1. ¡Tenga cuidado de no usar accidentalmente los nombres de las opciones principales de WP! Siempre debe prefijar los nombres de sus opciones.

Mi sugerencia

Cree una pequeña función que use para prefijar / sanear sus teclas de opción en cada plugin / tema, que se encargue de las restricciones, como esta aquí:

// Makes sure that all option names have same structure.
function sanitize_option_key( $name ) {
    $prefix = 'my_';
    // Basic sanitation: Trim and make option name lower case.
    $name = strtolower( trim( $name ) );
    // Ensure the option does not contain spaces
    $name = str_replace( array( '-', ' ' ), '_', $name ); 
    // Prefix prevents any collisions with WP
    $name = $prefix . $name;
    // Also check the max-length
    if ( strlen( $name ) > 64 ) { 
        error_log( 'WARNING - Option name is too long and was truncated: ' . $name );
        $name = substr( $name, 0, 64 ); 
    }
    return $name;
}

// Using this function:

update_option( sanitize_option_key( 'option value' ), 'test' );
// option is saved in DB as 'my_option_value'

echo get_option( sanitize_option_key( 'Option_Value' ) ); 
// will output 'test';
    
respondido por el Philipp 28.08.2016 - 20:11

Lea otras preguntas en las etiquetas