Как вызвать функции WordPress в пользовательском Сценарии PHP

У меня есть Сценарий PHP, который я хочу использовать для создания нового блога в WPMU. Я испытываю затруднения при вызывании функций WordPress как wpmu_create_user и wpmu_create_blog.

Моя надежда состоит в том, чтобы получить этот сценарий, работающий как задание крона из командной строки, и поднять новые запросы создания блога с внешнего дб, создать новый блог с помощью функций WordPress и обновить базу данных с новой информацией о блоге.

33
задан Peter Mortensen 25 November 2019 в 01:30
поделиться

2 ответа

Я недавно создал один, который довольно прост в использовании:

https://github.com/lookfirst/sardine

-121--1487793-

Примечание: это решение работает только в том случае, если столбцы GridView известны раньше времени.

Похоже, что используется GridView с AutoGenerateColumns = true , что является значением по умолчанию. Рекомендуется установить значение AutoGenerateColumns = false и добавить столбцы вручную:

<asp:GridView runat="server" ID="MyGridView"
    AutoGenerateColumns="false" DataSourceID="MySqlDataSource">
    <Columns>
        <asp:BoundField DataField="Column1" />
        <asp:BoundField DataField="Column2" />
        <asp:BoundField DataField="Column3" />
    </Columns>
</asp:GridView>

И включать только значение BoundField для каждого поля, которое требуется отобразить. Это обеспечит максимальную гибкость отображения данных.

-121--1855216-

включить файл wp-load.php (в корне установки wordpress) в файл скрипта php, как это,

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

вы должны будете предоставить отклик файла wp-load, теперь вы можете использовать все функции wordpress в сценарии php

41
ответ дан 27 November 2019 в 17:38
поделиться

Ниже приводится код, который я использую:


<?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);

?>

2
ответ дан 27 November 2019 в 17:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: