1

I know there are other, maybe better ways to do what I want to achieve, but I have to use this solution.

I have two stylesheets:

  • style.css - normal stylesheet
  • style-dynamic.php - dynamic stylesheet linked to the first one

I'm using some PHP code in the second one, like:

#body {
    background-color: <?php echo get_option('theme_background'); ?>;
}

Now the point is that the style-dynamic.php file doesn't know WordPress functions, and the code above gives:

Fatal error: Call to undefined function get_option() in C:\xampp\htdocs\wordpress\wp-content\themes\mytheme\style-dynamic.php on line 12

I guess I have to load wp_load.php (only?) and that's tricky, because I'm not sure how exactly? I was trying require_once, but I'm not sure I'll be able to jump from theme directory right to the WordPress main dir where wp-load.php file is?

Edit

Of course

require_once(ABSPATH . 'wp-load.php');

Outputs another error:

Use of undefined constant ABSPATH - assumed 'ABSPATH'

  • thank you this is my problem when want to create plugin for wordpress i forget to copy my last version we need to have template of plugin for development – saber tabatabaee yazdi Dec 12 '18 at 13:15
5

Christ, once again I was fighting with something for a few days straight and found a solution 20 minutes after asking on StackExchange. WHY?

require_once('../../../wp-load.php');
0

Hopefully better late than never; in case the solution above (by Wordpressor) is not working, you can load wp-load.php like this:

// allow us to use core wordpress functions
    $oldURL = dirname(__FILE__);
    $newURL = str_replace(DIRECTORY_SEPARATOR . 'wp-content' . DIRECTORY_SEPARATOR . 'themes' . DIRECTORY_SEPARATOR . 'THEME_NAME' . DIRECTORY_SEPARATOR . 'assets', '', $oldURL);
    include($newURL . DIRECTORY_SEPARATOR . 'wp-load.php');

Make sure to replace THEME_NAME with your theme's name.

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.