¿Alguna forma de particionar wp_options?

2

Me gustaría permitir que algunas funciones en mi archivo functions.php usen update_option () para guardar algunos datos locales, pero la tabla wp_options parece ser global para cada pieza de software en mi sitio, así que tengo que dar mis datos algún nombre largo para asegurarse de que no coincida con un nombre que otra persona haya elegido para sus datos. ¿Hay alguna forma de evitar esto?

Gracias

    
pregunta Steve 22.01.2017 - 22:32

4 respuestas

2

No, y te recomiendo encarecidamente que no cambies el esquema de la tabla de opciones de WordPress, te encontrarás con muchos problemas, como:

  • Ya no tiene un proceso de actualización confiable
  • Código no portátil
  • No podrá usar el conjunto de funciones get_options y el almacenamiento en caché de objetos y las optimizaciones que vienen con ellos

Si lograba que funcionara con get_options , volvería si empezara

Mi sugerencia? $prefix.'_option_name'

    
respondido por el Tom J Nowell 24.01.2017 - 04:11
2
  

¿Hay alguna manera de evitar esto?

Respuesta corta: Sí, técnicamente es posible, pero no se recomienda . Lea a continuación la respuesta larga:

Uso de la base de datos personalizada table :

Obviamente, puede implementar una tabla de base de datos personalizada para manejar sus datos. Sin embargo, para operaciones simples, este proceso no se recomienda . Algunas razones son:

  • Se vuelve difícil de mantener. Por ejemplo, ¿qué sucede si diez complementos más que está utilizando deciden tener su propio table ? Su base de datos se llenará con tables que probablemente no estén bien definidos.

  • Tendrá que monitorear de cerca las actualizaciones futuras de WordPress & Base de datos y asegúrese personalmente de que sus funciones de base de datos personalizadas sigan siendo compatibles.

  • La API de opciones se ha optimizado por años de experiencia & las actualizaciones, obtener el mismo nivel de optimización con su base de datos personalizada no será fácil.

Por lo tanto, utilizar el núcleo Options API es tu mejor opción (a menos que sus datos estén relacionados con posts o usuarios . En esos casos, debe usar post meta o usuario meta respectivamente).

Para evitar conflictos de nombre de opción si los datos son específicos del sitio :

  • Use el nombre de dominio del sitio como prefijo de nombre de opción. Por ejemplo, si su sitio es example.com , use example_com_option_name (reemplace option_name con el nombre apropiado) para el nombre de su opción. Nadie más usará su nombre de dominio para su prefijo.

  • En este caso, es mejor si no escribes las funciones de datos en functions.php del tema. En su lugar, cree un complemento personalizado para manejar estos datos específicos del sitio con Options API . De esta manera, incluso si cambia de tema, las opciones específicas del sitio permanecerán intactas. Consulte este artículo sobre por qué no debe usar functions.php para este tipo de casos .

Para evitar conflictos de nombre de opción si los datos son específicos de tema :

¿Qué sucede si los datos en cuestión son específicos del tema, de modo que, si usa ese tema en otros sitios, esos sitios tendrán datos similares? O, si cambia el tema, ¿puede o no necesitar los datos? En tales casos:

  • Use el nombre del tema como prefijo del nombre de la opción. Por ejemplo, si el nombre de su tema es steve , puede usar steve_option_name . Si piensa que el nombre del tema puede no ser único, entonces combine su nombre de dominio principal en el nombre de la opción: example_com_steve_option_name .

  • En este caso, implementa las funciones Options API en el archivo functions.php de tu tema.

Para evitar el conflicto de nombres de opciones si los datos no son específicos de theme ni de site :

¿Qué sucede si tiene varios sitios & ¿Utilizan diferentes temas y todos estos sitios necesitan los mismos datos de opciones?

  • En este caso, implemente las funciones Options API en un complemento personalizado y use el nombre del complemento como prefijo del nombre de la opción. Al igual que anteriormente, combine su nombre de dominio primario con el nombre del complemento para evitar todos los posibles conflictos de nombres.

[Bonus] Evita agregar opciones múltiples:

En la mayoría de los casos, en realidad no es necesario crear múltiples opciones. A menos que la mayoría de las opciones se utilicen exclusivamente en diferentes partes de su sitio, generalmente es mejor crear una sola opción y colocar todas las opciones personalizadas específicas de su sitio en una matriz. Este documento describe cómo puede hacerlo. Como se indica en el documento WP:

  

El acceso a los datos como opciones individuales puede resultar en muchas transacciones de base de datos individuales, y como regla, las transacciones de base de datos son operaciones costosas (en términos de tiempo y recursos del servidor). Cuando almacena o recupera una variedad de opciones, sucede en una sola transacción, lo que es ideal.

Entonces, si usar solo una opción es correcto para su caso de uso, ¿por qué molestarse en crear una tabla de base de datos personalizada? Con un solo nombre de opción, la baja posibilidad de conflicto (después de seguir las recomendaciones anteriores) se reduce aún más & Incluso si se produce un conflicto, la solución es muy simple, ya que solo tendrá que cambiar una opción en la base de datos.

    
respondido por el Fayaz 25.01.2017 - 07:59
1

Puedes crear una nueva tabla solo para tus opciones.

En mis complementos que guardan opciones, simplemente me aseguro de que la opción 'nombre' no sea una palabra común, nombrando la opción con las iniciales de mi nombre de complemento. Entonces, si mi plugin se llamara "My Really Neat Plugin", el nombre de las opciones sería "mrnp_options".

Si le preocupa colisionar con otra opción similar, el código de activación de su complemento podría tener varios nombres de opciones alternativas. Pero entonces tendrías que almacenar el nombre de la opción ese en algún lugar. Por lo tanto, no es una buena opción, pensaría.

También puse las iniciales del complemento como parte de todas las funciones en el complemento, por lo que mis funciones no chocan con las de otra persona.

    
respondido por el Rick Hellewell 24.01.2017 - 03:49
0

Estoy totalmente de acuerdo con Tom J Newell y Rick Hellewell, ya que es la mejor práctica para WordPress.

Esta página en el Códice de WordPress ayudará a crear tablas de base de datos si ese es un nuevo territorio para usted.

    
respondido por el Kenneth Odle 25.01.2017 - 03:44

Lea otras preguntas en las etiquetas