Как получить идентификатор сайта в той же функции, которая создала сайт?

Я пишу некоторые функции php для работы с конечными точками, в частности, ту, которая принимает ввод формы для создания сайта на мультисайте wp. С точки зрения прогресса, приведенный ниже код примет ввод и создаст сайт с правильным путем и доменом, но никакая метаинформация не добавляется.

  public function create_endpoint($request) {
        $key = $request['key'];

//Capturing user-input from form 
        if ($this->validate_key($key)) {
              $title = $request['name'];
              $slug = $request['slug'];
              $admin_user = $request['admin_user'];
              $site_owner = $request['site_owner'];
              $site_ouc = $request['site_ouc'];
              $registered = $request['registered'];
              $service_tier = $request['service_tier'];
              $service_offering = $request['service_offering'];
              
//Site creation process
                $domain = 'localhost';
                $path = 'wordpress/'.$request['slug'];

                $user_id = get_user_by( 'login', $this->admin_user );

                $network_id = get_network()->id;

                if ( !empty($title) and !empty($domain) and !empty($path) ) {
                  wpmu_create_blog($domain, $path, $title, $user_id);


                  $site_id = get_blog_id_from_url( $domain, $path);

                  //Adding in meta-data
                      update_site_meta( $site_id, 'site_owner' , $site_owner);
                      update_site_meta( $site_id, 'site_ouc' , $site_ouc);
                      update_site_meta( $site_id, 'registered' , $registered);
                      update_site_meta( $site_id, 'service_tier' , $service_tier);
                      update_site_meta( $site_id, 'service_offering' , $service_offering);

                  return $site_id;

                }
                else {
                  return "Not enough information";
                }

        }
         else {
            return $this->invalid_key_message;
        }
    }

Основная проблема заключается в том, что когда я возвращаю $site_id, я всегда получаю 0, поэтому функциям update_site_meta не с чем работать.

if ( !empty($title) and !empty($domain) and !empty($path) ) {
                  wpmu_create_blog($domain, $path, $title, $user_id);

                  return $site_id;

Любое понимание или мысли приветствуются, я работаю против стены.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
106
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Глядя на его документы, кажется, что wpmu_create_blog должен возвращать идентификатор блога... так что вы можете обновить эту часть своего кода ниже:

// save id returned from creating the new site
$site_id = wpmu_create_blog($domain, $path, $title, $user_id);

// delete this line
// $site_id = get_blog_id_from_url( $domain, $path);

//Adding in meta-data

Согласно документации WordPress, wpmu_create_blog возвращает идентификатор сайта, если создание прошло успешно:

https://developer.wordpress.org/reference/functions/wpmu_create_blog/#return

Я не проверял это, но это изменение в вашем фрагменте кода должно работать:

   public function create_endpoint($request)
    {
        $key = $request['key'];

        //Capturing user-input from form 
        if ($this->validate_key($key)) {
            $title = $request['name'];
            $slug = $request['slug'];
            $admin_user = $request['admin_user'];
            $site_owner = $request['site_owner'];
            $site_ouc = $request['site_ouc'];
            $registered = $request['registered'];
            $service_tier = $request['service_tier'];
            $service_offering = $request['service_offering'];

            //Site creation process
            $domain = 'localhost';
            $path = 'wordpress/' . $request['slug'];

            $user_id = get_user_by('login', $this->admin_user);

            $network_id = get_network()->id;

            if (!empty($title) and !empty($domain) and !empty($path)) {
                $site_id = wpmu_create_blog($domain, $path, $title, $user_id);

                //Adding in meta-data
                update_site_meta($site_id, 'site_owner', $site_owner);
                update_site_meta($site_id, 'site_ouc', $site_ouc);
                update_site_meta($site_id, 'registered', $registered);
                update_site_meta($site_id, 'service_tier', $service_tier);
                update_site_meta($site_id, 'service_offering', $service_offering);

                return $site_id;
            } else {
                return "Not enough information";
            }
        } else {
            return $this->invalid_key_message;
        }
    }

Другие вопросы по теме