user391
  • 0
Новичок

Могу ли я установить некоторые страницы по умолчанию, которые будут создаваться при каждом создании нового блога

  • 0

Такие страницы, как «о нас», будут созданы автоматически при создании нового блога. Точно так же мне нужны некоторые другие страницы, которые должны автоматически появляться при создании блога на моих мультисайтах.

Как настроить страницы по умолчанию для создания нового блога на мультисайте?

Например: если у меня есть мультисайт на example.com . В каждом блоге, созданном на этом сайте, должны быть разделы «Главная», «О нас», «Мой магазин», «Мой адрес».

Share
  1. На самом деле я планирую создать плагин для этого. Я планирую определить легко создаваемый формат для сохранения и восстановления сообщения в текстовый файл и из него и даже создать сообщение в этом формате вручную человеком, не являющимся техническим специалистом. Но я еще не начал работу над ним, так что я могу только рассказать вам о том, что я себе представляю. Тем временем у @kevtrout есть разумное решение ниже.

    • 0
    • @MikeSchinkel: Я полагаю, было бы неплохо: а) создать шаблонные версии каждой страницы по умолчанию в качестве стандартной страницы и б) определить эти страницы как «по умолчанию», используя форму в разделе администратора. Когда активирован блог в стиле MU, страницы шаблона копируются в эту учетную запись блога. Кажется, это отличная идея для многосайтового использования WP. Мои потребности в прошлом требовали, чтобы контент по умолчанию отображался в текстовой области записи и публикации. Так и не понял… возможно, новый вопрос?

      • 0
    • @kevtrout — текстовое поле для записи и публикации? Вы имеете в виду post_content? Если нет, то да, новый вопрос. Вот для чего существует SE. 🙂

      • 0
    • Я взял код, который вы дали, и вставил в файл functions.php моей темы без каких-либо изменений. А позже я создал новый сайт, чтобы проверить, создается ли он с новыми добавленными страницами. Но, к сожалению, я не нашел изменений ни на новом, ни на основном сайте. Я думаю, что где-то совершил ошибку.

      • 0
    • Следуйте моей рекомендации, чтобы установить хук на wp_head выше, чтобы проверить, работает ли код для вас. Затем посмотрите, когда именно срабатывает хук «activate_blog».

      • 0
    • К сожалению ! Я все еще не могу понять, где использовать wp_head и как действовать. Я новичок в wordpress. Я немного знаю php и не очень знаком с кодированием.

      • 0
    • Изменить add_action('activate_blog','my_default_pages');, на add_action('wp_head','my_default_pages'); . Затем прочитайте об хуках действий и фильтров: codex.wordpress.org/Plugin_API/Action_Reference. В конце концов, вам нужно найти хук, который запускается при активации нового блога, чтобы страницы создавались в это время. Я считаю, что крючок есть, activate_blog но документация по нему в кодексе скудна. Попробуйте поискать в Google дополнительную информацию. Я предлагаю использовать wp_head только для проверки вышеописанной функции. Когда вы знаете, что это работает, и нашли правильный хук для использования, используйте его вместо этого.

      • 0
    • У меня это сработало, когда я добавил «wp_head» вместо «activate_blog». Вот что я сделал: я попытался добавить add_action(‘wp_head’,’my_default_pages’); Затем я создал новый подсайт. Страницы «О нас», «Главная», «Мой магазин», «Мой адрес» были созданы автоматически.

      • 0
  2. Я рекомендую создать в вашем файле functions.php функцию, связанную с хуком действия activate_blog . Используйте функцию WordPress get_pages(), чтобы узнать, существуют ли ваши страницы по умолчанию. Если нет, создайте их с помощью wp_insert_post.

    add_action('activate_blog','my_default_pages');
    
    function my_default_pages(){
        $default_pages = array('About','Home','My Store','My Address');
        $existing_pages = get_pages();
    
        foreach($existing_pages as $page){
            $temp[] = $page->post_title;
            }
    
    
        $pages_to_create = array_diff($default_pages,$temp);
    
        foreach($pages_to_create as $new_page_title){
    
                // Create post object
                $my_post = array();
                $my_post['post_title'] = $new_page_title;
                $my_post['post_content'] = 'This is my '.$new_page_title.' page.';
                $my_post['post_status'] = 'publish';
                $my_post['post_type'] = 'page';
    
    
    
                // Insert the post into the database
                $result = wp_insert_post( $my_post );
    
            }
            }
    

    Чтобы протестировать эту функцию на своем сайте, попробуйте установить для хука значение wp_head . Он будет запускаться при каждой загрузке страницы и вставлять несуществующие страницы с содержимым в $my_post[‘post_content’]. * Запускается ли хук activate_blog, когда блоги создаются в контексте нескольких сайтов? Я не знаю.*

    Обратитесь к странице кодекса для wp_insert_post, на которую я ссылаюсь, для получения полного списка доступных параметров по умолчанию.

    • 0
  3. используйте «wpmu_activate_blog» вместо «activate_blog». это сработало для меня. Спасибо

    • 0

Оставить ответ

You must login to add an answer.