I have a standalone PHP script in my WordPress theme’s directory that I run once every hour through a cron job (or manually if needed). All other WordPress functions are working except the update_option()
function.
A simplified version of my script looks like this:
require_once('/path/to/site/wp-load.php');
$value = my_function();
update_option('my_option', $value);
and in one of my theme’s files, I am running the following code:
echo get_option('my_option');
Nothing is printed, and a var_dump
shows that the returned value is false
.
My wp-admin/options.php
page doesn’t list my_option
either.
I’m at a loss, because below those lines, I am using the following WordPress functions to interact with my WordPress database successfully:
- get_posts
- delete_post_meta
- add_post_meta
Debugging my script, my_function
returns a string (about 10 characters) and no errors are thrown with my PHP error settings at E_ALL
.
Do I need to include other WordPress core files? I thought that wp-load.php
was all you needed.
WordPress version: 3.7
I’m not sure why it does’t work for you, but the following works in the file
wp-content/test.php
:Add this two line in your file top
It loads all of WordPress, but doesn’t call wp() or invoke the template loader (used by themes) .
It sounds you need some kinda of bootstrap for your code. WordPress has already bootstrap such as
index.php
orwp-load.php
or evenwp-blog-header.php
.This :
is not recommanded because path can be modified. What you can do to have some bootstrap is :
In this way you’ll be able to load WordPress almost in any case.
This is very old question but I will still comment on it.
Now you have multiple options: WP-CLI should work in almost all of the cases.
Another option is to create a custom plugin that hooks into ‘init’ event and it does something.