1

I need to provide a list of all options set via plugins etc to remote calls. There is a plugin WP API Options but it hardly does the job.

There are two possible ways (that I know of) to get a list of all options set in the blog/site:

  • Use $wpdb to run a query like so:

    $option_names = $wpdb->get_col( "SELECT DISTINCT option_name FROM $wpdb->options WHERE option_name NOT LIKE '_transient_%'" );

  • Use wp_load_alloptions()

Which one of these two would be the best way to retrieve all the options? Is there a cleaner way than either of these two?

Edit: In a perfect world, I would like to use an inbuilt function for this, instead of writing MySql queries. Also, by all options I am implying any option set by a plugin using add_option or update_option functions.

  • How do you define "best" and "all" ? – birgire Jun 20 '16 at 11:25
  • Does the edit make sense @birgire? – CandyCoated Jun 20 '16 at 11:35
  • It's better, because what's "best" can be very opinion-based ;-) It's usually better to include as much relevant information in the question to increase the change of someone pointing you in the right direction. (It looks like you're avoiding transients.. Also it looks like you're not only looking for autoloaded options. There are also add/update hooks available when writing options, if you need a logger.) – birgire Jun 20 '16 at 11:47
0

I think it is always better to use the API, the functions of WP in this context. The function wp_load_alloptions() is under maintain and a custom select must always tested and maintain. Also the function use the Cache, if the installation support this. A good point for performance. The function supports also the Multisite installation, maybe this also a point for maintain effort.

But the function have no filters to enhance the sql statement or output. That's the point, that you must filter after the returned values.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.