update
This commit is contained in:
272
wp-content/themes/ostal_WP/migrate-2707.php
Normal file
272
wp-content/themes/ostal_WP/migrate-2707.php
Normal file
@@ -0,0 +1,272 @@
|
||||
<?php
|
||||
/**
|
||||
* One-time migration script for page 2707 (Ogrody zimowe - klienci indywidualni)
|
||||
* Populates ACF Flexible Content fields with hardcoded content.
|
||||
*
|
||||
* Usage: Visit /wp-content/themes/ostal_WP/migrate-2707.php?run=migrate-2707
|
||||
* Or via WP-CLI: wp eval-file wp-content/themes/ostal_WP/migrate-2707.php --run=migrate-2707
|
||||
*
|
||||
* ⚠️ DELETE THIS FILE AFTER MIGRATION!
|
||||
*/
|
||||
|
||||
// Bootstrap WordPress
|
||||
require_once dirname(__FILE__) . '/../../../wp-load.php';
|
||||
|
||||
// Safety check: require explicit parameter
|
||||
if (!isset($_GET['run']) || $_GET['run'] !== 'migrate-2707') {
|
||||
die('Safety check failed. Use ?run=migrate-2707 to execute.');
|
||||
}
|
||||
|
||||
// Safety check: only admins
|
||||
if (!current_user_can('manage_options')) {
|
||||
die('Admin access required. Please log in first.');
|
||||
}
|
||||
|
||||
$page_id = 2707;
|
||||
|
||||
// Safety check: don't overwrite existing data
|
||||
$existing = get_field('sections', $page_id);
|
||||
if (!empty($existing)) {
|
||||
die('Page 2707 already has sections data (' . count($existing) . ' layouts). Aborting to prevent overwrite. Delete existing sections first if you want to re-run.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper: find attachment ID by image URL
|
||||
*/
|
||||
function get_attachment_id_by_url($url) {
|
||||
global $wpdb;
|
||||
$path = parse_url($url, PHP_URL_PATH);
|
||||
// Remove size suffix (e.g., -1024x576)
|
||||
$path = preg_replace('/-\d+x\d+(?=\.\w+$)/', '', $path);
|
||||
$filename = basename($path);
|
||||
$sql = $wpdb->prepare(
|
||||
"SELECT ID FROM $wpdb->posts WHERE post_type = 'attachment' AND guid LIKE %s LIMIT 1",
|
||||
'%' . $wpdb->esc_like($filename) . '%'
|
||||
);
|
||||
return (int) $wpdb->get_var($sql);
|
||||
}
|
||||
|
||||
// Build sections array
|
||||
$sections = [];
|
||||
|
||||
// ── Layout 1: Hero with form ──────────────────────────────────────────
|
||||
$sections[] = [
|
||||
'acf_fc_layout' => 'hero_with_form',
|
||||
'section_id' => 'hero_box',
|
||||
'heading' => 'Całoroczne ogrody zimowe klasy premium',
|
||||
'text' => '<p class="hero-text text-white m-0">Projektujemy i realizujemy indywidualne ogrody zimowe, które zwiększają komfort domu i pozwalają korzystać z przestrzeni przez cały rok - niezależnie od pogody.</p>
|
||||
<p class="hero-text text-white m-0"><strong>Izolowane systemy aluminiowe<br>
|
||||
Szyby Ug=1,1 lub 0,5<br>
|
||||
Zintegrowane osłony przeciwsłoneczne</strong></p>
|
||||
<p class="hero-text text-white m-0">Sprawdź orientacyjny budżet projektu<br>
|
||||
Porozmawiajmy o twoim ogrodzie zimowym.</p>',
|
||||
'form_shortcode' => '[contact-form-7 id="21a1143" title="Formularz kontaktowy"]',
|
||||
'background_image' => '/wp-content/uploads/2023/10/ogrody-zimowe.jpg',
|
||||
];
|
||||
|
||||
// ── Layout 2: Two-col — intro ─────────────────────────────────────────
|
||||
$sections[] = [
|
||||
'acf_fc_layout' => 'two_col_section',
|
||||
'section_heading' => 'Nasze ogrody zimowe powstają z myślą o klientach, którzy szukają trwałego,<br>elastycznego i bezpiecznego rozwiązania na lata, a nie tymczasowej zabudowy.',
|
||||
'text' => '<p>Każda realizacja jest projektowana indywidualnie - z uwzględnieniem architektury budynku, warunków technicznych i sposobu użytkowania.</p>
|
||||
<p>Realizacje całorocznych ogrodów zimowych rozpoczynają się od około 100 000 zł netto.</p>',
|
||||
'image' => 'https://ostal.pl/wp-content/uploads/2026/01/IMG_2832-scaled.jpg',
|
||||
'choose_heading' => 'h2',
|
||||
'heading_position' => 'textRight',
|
||||
'additional_class' => 'imageLeft',
|
||||
'additional_section_class' => 'bg-light',
|
||||
'additional_wrapper_class' => '',
|
||||
'cta' => '',
|
||||
'cta_text' => '',
|
||||
];
|
||||
|
||||
// ── Layout 3: Two-col — cechy wyróżniające ────────────────────────────
|
||||
$sections[] = [
|
||||
'acf_fc_layout' => 'two_col_section',
|
||||
'section_heading' => 'Co wyróżnia nasze ogrody zimowe',
|
||||
'text' => '<ul style="list-style: none; padding: 0;">
|
||||
<li>- Komfort użytkowania przez cały rok.</li>
|
||||
<li>- Stabilna izolowana termicznie konstrukcja aluminiowa.</li>
|
||||
<li>- Wysokie parametry cieplne przeszkleń (Ug=1,1 - Ug=0,5)</li>
|
||||
<li>- Ochrona przed słońcem dzięki zintegrowanym markizom i żaluzjom.</li>
|
||||
<li>- Estetyka dopasowana do architektury budynku</li>
|
||||
</ul>
|
||||
<p>Nie pracujemy na gotowych schematach - każdy ogród zimowy powstaje jako spójny element domu, a nie dobudowany „dodatek".</p>',
|
||||
'image' => 'https://ostal.pl/wp-content/uploads/2026/01/199-f27gxxl.jpg',
|
||||
'choose_heading' => 'h2',
|
||||
'heading_position' => 'textRight',
|
||||
'additional_class' => '',
|
||||
'additional_section_class' => 'bg-light',
|
||||
'additional_wrapper_class' => '',
|
||||
'cta' => '',
|
||||
'cta_text' => '',
|
||||
];
|
||||
|
||||
// ── Layout 4: Collaboration steps ─────────────────────────────────────
|
||||
$sections[] = [
|
||||
'acf_fc_layout' => 'collaboration_steps',
|
||||
'section_heading' => 'Jak wygląda współpraca?',
|
||||
'steps' => [
|
||||
['step_title' => 'Rozmowa i analiza potrzeb.'],
|
||||
['step_title' => 'Koncepcja i dobór rozwiązań'],
|
||||
['step_title' => 'Indywidualna oferta i harmonogram'],
|
||||
['step_title' => 'Umowa i zaliczka rezerwująca termin'],
|
||||
['step_title' => 'Produkcja i montaż'],
|
||||
],
|
||||
'bottom_text' => 'Prowadzimy klienta przez cały proces - spokojnie krok po kroku.',
|
||||
];
|
||||
|
||||
// ── Layout 5: Two-col — doświadczenie ─────────────────────────────────
|
||||
$sections[] = [
|
||||
'acf_fc_layout' => 'two_col_section',
|
||||
'section_heading' => 'Doświadczenie w systemach aluminiowych',
|
||||
'text' => '<p>Od wielu lat pracujemy na systemach aluminiowych stosowanych zarówno w budownictwie jednorodzinnym, jak i obiektach komercyjnych.</p>
|
||||
<p>Realizujemy m.in. stolarkę okienną i drzwiową, żaluzje fasadowe, i rolety zewnętrzne, a ogrody zimowe są naturalnym rozszerzeniem tych rozwiązań w tym samym standardzie technicznym i wykonawczym.</p>',
|
||||
'image' => '/wp-content/uploads/2026/02/att_698c47679eb9b4.14191582.jpeg',
|
||||
'choose_heading' => 'h2',
|
||||
'heading_position' => 'textRight',
|
||||
'additional_class' => 'imageLeft',
|
||||
'additional_section_class' => 'bg-light',
|
||||
'additional_wrapper_class' => '',
|
||||
'cta' => '',
|
||||
'cta_text' => '',
|
||||
];
|
||||
|
||||
// ── Layout 6: Two-col — planowanie ────────────────────────────────────
|
||||
$sections[] = [
|
||||
'acf_fc_layout' => 'two_col_section',
|
||||
'section_heading' => 'Planowanie realizacji bez pośpiechu',
|
||||
'text' => '<p>Wielu naszych klientów decyduje się na zaplanowanie ogrodu zimowego z wyprzedzeniem.<br>
|
||||
Pozwala to spokojnie przygotować projekt i zarezerwować dogodny termin realizacji na wiosnę lub lato.</p>',
|
||||
'image' => '/wp-content/uploads/2026/02/att_698c4767a04c46.41417006.jpg',
|
||||
'choose_heading' => 'h2',
|
||||
'heading_position' => 'textRight',
|
||||
'additional_class' => 'imageLeft',
|
||||
'additional_section_class' => 'bg-light',
|
||||
'additional_wrapper_class' => '',
|
||||
'cta' => '',
|
||||
'cta_text' => '',
|
||||
];
|
||||
|
||||
// ── Layout 7: Two-col — kontakt ───────────────────────────────────────
|
||||
$sections[] = [
|
||||
'acf_fc_layout' => 'two_col_section',
|
||||
'section_heading' => 'Porozmawiajmy o twoim projekcie',
|
||||
'text' => '<p>Jeśli rozważasz budowę całorocznego ogrodu zimowego i chcesz sprawdzić, czy to rozwiązanie ma sens w Twoim przypadku - zapraszamy do kontaktu.</p>',
|
||||
'image' => '/wp-content/uploads/2026/02/att_698c47679ad0a0.33546122.jpeg',
|
||||
'choose_heading' => 'h2',
|
||||
'heading_position' => 'textRight',
|
||||
'additional_class' => 'imageLeft',
|
||||
'additional_section_class' => 'bg-light',
|
||||
'additional_wrapper_class' => '',
|
||||
'cta' => '',
|
||||
'cta_text' => '',
|
||||
];
|
||||
|
||||
// ── Layout 8: Two-col with BG — CTA ──────────────────────────────────
|
||||
$sections[] = [
|
||||
'acf_fc_layout' => 'two_col_section_with_bg',
|
||||
'section_heading' => 'Sprawdź orientacyjny budżet projektu',
|
||||
'text' => '',
|
||||
'cta' => '#hero_box',
|
||||
'cta_text' => 'Umów rozmowę',
|
||||
'background_image' => 'https://ostal.pl/wp-content/uploads/2021/05/hero-about.jpg',
|
||||
'image' => '',
|
||||
'heading_position' => '',
|
||||
'additional_class' => '',
|
||||
'additional_section_class' => 'bg-dark',
|
||||
'additional_wrapper_class' => '',
|
||||
];
|
||||
|
||||
// ── Layout 9: Two-col — funkcje ogrodów ───────────────────────────────
|
||||
$sections[] = [
|
||||
'acf_fc_layout' => 'two_col_section',
|
||||
'section_heading' => 'Funkcje ogrodów zimowych',
|
||||
'text' => '<p>Nowoczesny ogród zimowy to nie tylko dodatkowe pomieszczenie wypoczynkowe – pokój zimowy, w którym możesz przyjmować gości lub relaksować się po ciężkim dniu w otoczeniu ulubionych roślin. Przez cały rok i w każdą pogodę. Konstrukcja jaką posiada nowoczesny ogród zimowy:<br>
|
||||
– stanowi efektowne dopełnienie bryły domu, nadając mu nowoczesnego charakteru,<br>
|
||||
– chroni przed hałasem, który dochodzi z zewnątrz,<br>
|
||||
– ze względu na szczelność utrzymuje ciepło i pomaga obniżyć bilans energetyczny domu.</p>',
|
||||
'image' => 'https://ostal.pl/wp-content/uploads/2023/10/DECORATION-PHOTO-1.jpg',
|
||||
'choose_heading' => 'h2',
|
||||
'heading_position' => 'textRight',
|
||||
'additional_class' => 'imageLeft',
|
||||
'additional_section_class' => 'bg-light',
|
||||
'additional_wrapper_class' => '',
|
||||
'cta' => '',
|
||||
'cta_text' => '',
|
||||
];
|
||||
|
||||
// ── Layout 10: Gallery ────────────────────────────────────────────────
|
||||
$gallery_urls = [
|
||||
'https://ostal.pl/wp-content/uploads/2023/10/202-4c7gxxl.jpg',
|
||||
'https://ostal.pl/wp-content/uploads/2023/10/199-f27gxxl.jpg',
|
||||
'https://ostal.pl/wp-content/uploads/2023/10/20170608_142315-1024x576.jpg',
|
||||
'https://ostal.pl/wp-content/uploads/2023/10/IMG_0535-1-1024x768.jpg',
|
||||
'https://ostal.pl/wp-content/uploads/2023/10/IMG_3754-1-1-1024x768.jpg',
|
||||
'https://ostal.pl/wp-content/uploads/2023/10/Frame-36-1-1024x728.jpg',
|
||||
];
|
||||
|
||||
$gallery_ids = [];
|
||||
$gallery_warnings = [];
|
||||
foreach ($gallery_urls as $url) {
|
||||
$id = get_attachment_id_by_url($url);
|
||||
if ($id > 0) {
|
||||
$gallery_ids[] = $id;
|
||||
} else {
|
||||
$gallery_warnings[] = "Warning: Could not find attachment for: $url";
|
||||
}
|
||||
}
|
||||
|
||||
$sections[] = [
|
||||
'acf_fc_layout' => 'gallery',
|
||||
'section_id' => 'galeria',
|
||||
'section_heading' => 'Nasze realizacje ogrodów zimowych',
|
||||
'gallery' => $gallery_ids,
|
||||
'additional_class' => '',
|
||||
'additional_section_class' => '',
|
||||
'additional_wrapper_class' => '',
|
||||
];
|
||||
|
||||
// ── Execute migration ─────────────────────────────────────────────────
|
||||
$result = update_field('sections', $sections, $page_id);
|
||||
|
||||
if ($result) {
|
||||
echo "<h1 style='color: green;'>Migration successful!</h1>";
|
||||
echo "<p>Created " . count($sections) . " layouts for page $page_id.</p>";
|
||||
echo "<ul>";
|
||||
echo "<li>1. hero_with_form</li>";
|
||||
echo "<li>2. two_col_section (intro)</li>";
|
||||
echo "<li>3. two_col_section (cechy)</li>";
|
||||
echo "<li>4. collaboration_steps (5 kroków)</li>";
|
||||
echo "<li>5. two_col_section (doświadczenie)</li>";
|
||||
echo "<li>6. two_col_section (planowanie)</li>";
|
||||
echo "<li>7. two_col_section (kontakt)</li>";
|
||||
echo "<li>8. two_col_section_with_bg (CTA)</li>";
|
||||
echo "<li>9. two_col_section (funkcje)</li>";
|
||||
echo "<li>10. gallery (" . count($gallery_ids) . " images)</li>";
|
||||
echo "</ul>";
|
||||
|
||||
if (!empty($gallery_warnings)) {
|
||||
echo "<h3 style='color: orange;'>Gallery warnings:</h3>";
|
||||
echo "<ul>";
|
||||
foreach ($gallery_warnings as $w) {
|
||||
echo "<li>$w</li>";
|
||||
}
|
||||
echo "</ul>";
|
||||
echo "<p>Missing gallery images need to be added manually in WP admin.</p>";
|
||||
}
|
||||
|
||||
echo "<hr>";
|
||||
echo "<h2 style='color: red;'>⚠️ DELETE THIS FILE NOW!</h2>";
|
||||
echo "<p>File location: " . __FILE__ . "</p>";
|
||||
echo "<p><a href='/wp-admin/post.php?post=$page_id&action=edit'>Edit page $page_id in admin</a></p>";
|
||||
echo "<p><a href='/?page_id=$page_id'>Preview page $page_id</a></p>";
|
||||
} else {
|
||||
echo "<h1 style='color: red;'>Migration failed!</h1>";
|
||||
echo "<p>update_field() returned false. Check that:</p>";
|
||||
echo "<ul>";
|
||||
echo "<li>ACF Pro is active</li>";
|
||||
echo "<li>The 'sections' field group exists and is assigned to page $page_id</li>";
|
||||
echo "<li>The field group contains all required layouts (hero_with_form, two_col_section, two_col_section_with_bg, collaboration_steps, gallery)</li>";
|
||||
echo "</ul>";
|
||||
}
|
||||
Reference in New Issue
Block a user