How to call WordPress functions in a custom PHP script

后端 未结 7 465
小蘑菇
小蘑菇 2020-12-07 16:52

I have a PHP script I want to use for creating a new blog in WPMU. I am having trouble calling WordPress functions like wpmu_create_user and wpmu_create_blog.

My hop

相关标签:
7条回答
  • 2020-12-07 17:17
    require_once('../../../wp-load.php');
    

    I think you have to add this line before any usage of wordpress function in your custom file. and make sure i have add ../ 3 times as per my wordpress installation structure.It's depends on your structure checks manually. ex. if your custom file is inside your themes/yourtheme/custom.php then above code will works perfectly and if not then add ../ or remove one or more ../ as per your path.

    0 讨论(0)
  • 2020-12-07 17:19

    For wordpress 3.1, I had to specify the host/domain because wp-includes/ms-settings.php:100 needs it or it dies. So my script looks something like (note I am using it for a network/multiblog site):

    #!/usr/bin/php -q
    
    <?php 
    #for multi-blog only
    $blog_id = 1;
    
    #specify host or domain (needed for wp-includes/ms-settings.php:100)
    $_SERVER[ 'HTTP_HOST' ] = 'localhost';
    
    #location of wp-load.php so we have access to database and $wpdb object
    $wp_load_loc = "/path/to/wordpress/wp-load.php";
    
    require_once($wp_load_loc);
    
    #for multi-blog only
    switch_to_blog($blog_id);
    
    #test to make sure we can access database
    echo $wpdb->prefix; 
    ?>
    
    0 讨论(0)
  • 2020-12-07 17:21

    WordPress uses a phpass function.

    This worked for me as I had a password, and the hash in a table (migrated WordPress users) and had to find a way to check login details.

    Grab this download here - https://github.com/sunnysingh/phpass-starter

    All you need is this basic function to check a text password to a WordPress hash:

    <?php
    require_once("PasswordHash.php");
    $hasher = new PasswordHash(8, false);
    
    // Check that the password is correct
    $check = $hasher->CheckPassword($password, $stored_hash);
    
    if ($check) {
    
      // Password good
    
    } else {
    
     // Password wrong
    
    }
    
    ?>
    

    All credits to Sunny Singh!

    0 讨论(0)
  • 2020-12-07 17:30

    Following is the code I am using:


    <?PHP
    
    require_once ('/path/to/wordpress/wp-load.php');
    require_once ('/path/to/wordpress/wp-blog-header.php');
    require_once ('/path/to/wordpress/wp-includes/registration.php');
    
    do_action('wpmuadminedit', '');
    
    //Code to Connect and Select the external database
    
    //Code to Connect to the external DB and get the new order details: 
    NewBlogName=$name and AdminEmail=$email
    
    if ( !email_exists($email) )
            {
                    // email does exist, create a new user
                    $name = create_name_from_email($email);
                    $password = "use a default password";
                    $user_id=wpmu_create_user($name, $password, $email);
                    create_blog($email, $title, $user_id, $password);
            }
            else
            {
                    // user exists, create new blog
                    $user_id=email_exists($email);
                    $password = "use existing wordpress password";
                    create_blog($email, $title, $user_id, $password);
      }
    
    function create_name_from_email ($email) {
     preg_match('/[^@]+)@/',$email,$matches);
     $name = $matches[1];
     return $name;
    }
    
    //Creates a new blog, expects user to already exist.
    function create_blog($email, $title, $user_id, $password)
    {
    //Code to Update external DB that the order is in process
    
        $public = array("public" => 1);
        if (constant('VHOST') == 'yes')
        {
                $newdomain = $domain . "." . $current_site->domain;
                $path = $base;
        }
        else
        {
                $newdomain = $current_site->domain; $path = $base . $domain . '/';
        }
        $domain = strtolower($domain);
        $newdomain = strtolower($newdomain);
        $path = strtolower($path);
        $meta = apply_filters('signup_create_blog_meta', array('lang_id' => 1, $public));
        $meta = apply_filters("add_singup_meta", $meta);
        wpmu_create_blog($newdomain, $path, $title, $user_id , $meta, $current_site->id);
        do_action('wpmu_activate_blog', $blog_id, $user_id, $password, $title, $meta);
    
    
        // Update external DB  with BlogUrl, NewBlogName, AdminPassword, 
    
    OrderStatus=Complete.
    
    mysql_close($con);
    
    ?>
    

    0 讨论(0)
  • 2020-12-07 17:33

    include wp-load.php file (in the root of your wordpress installation) in your php script file like so,

    require_once("/path/to/wordpress/wp-load.php");
    

    you will have to provide the abspath of the wp-load file, now you can use all the functions of wordpress in your php script

    0 讨论(0)
  • 2020-12-07 17:33

    This should work:

    require_once($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');
    

    i.e. When the php script is on the same server and WP is installed on the root. As most cases are.

    0 讨论(0)
提交回复
热议问题