Datum izvoza: 24. Mart 2026
Izvor: WordPress 6.9.4 + Elementor Pro
Cilj: Laravel aplikacija (nova.lusar.hr)
Tvoj zadatak je da importuješ sve stranice i sadržaj iz WordPress-a u novu Laravel aplikaciju. Sve potrebne podatke imaš u ovom docs/ folderu.
docs/pages/*.md (14 stranica)docs/media/ (812 fajlova, 41MB)docs/all_images.json (266 slika bez videa)docs/images/ (samo 3 stvarno korištene u content-u)manifest.json - Kompletan pregled svih stranica, postova, slikamedia_list.json - Lista svih media fajlova sa URL-ovimaall_images.json - Samo slike (bez videa)INDEX.md - Pregled stranica po veličini i kategorijamaSvaki .md fajl u pages/ ili posts/ ima:
---
title: Naziv stranice
slug: url-slug
id: 87
status: publish
date: 2026-01-27 11:30:01
modified: 2026-01-27 11:30:29
uses_elementor: yes
featured_image: https://lusar.hr/wp-content/uploads/2026/01/image.png
---
# Glavni Naslov
## Podnaslov
Tekst sadržaja...

- Lista item 1
- Lista item 2
**Bold text** i *italic text*
[Link tekst](https://url.com)
Ako ne postoji, kreiraj Page model sa:
title (string)slug (string, unique)content (text/longtext)excerpt (text, nullable)featured_image (string, nullable)meta_description (text, nullable)status (enum: draft/published)wordpress_id (integer, nullable) - za referencupublished_at (timestamp)Instaliraj potrebne pakete:
composer require spatie/yaml-front-matter
composer require league/commonmark
Kreiraj helper/service klasu za parsing:
use Spatie\YamlFrontMatter\YamlFrontMatter;
use League\CommonMark\CommonMarkConverter;
class WordPressImporter {
public function parseMarkdownFile($filePath) {
$object = YamlFrontMatter::parseFile($filePath);
return [
'title' => $object->matter('title'),
'slug' => $object->matter('slug'),
'wordpress_id' => $object->matter('id'),
'status' => $object->matter('status'),
'published_at' => $object->matter('date'),
'content' => $object->body(),
'uses_elementor' => $object->matter('uses_elementor'),
'featured_image' => $object->matter('featured_image'),
];
}
}
$converter = new CommonMarkConverter();
$html = $converter->convert($markdownContent);
Važno: WordPress URL-ovi moraju biti zamijenjeni Laravel URL-ovima
Plan:
docs/media/ u storage/app/public/images/php artisan storage:link$content = str_replace(
'https://lusar.hr/wp-content/uploads/',
'/storage/images/',
$content
);
Alternative: Možeš kreirati novi folder samo sa slikama koje su stvarno korištene:
Kreiraj command:
php artisan make:command ImportWordPressContent
// app/Console/Commands/ImportWordPressContent.php
class ImportWordPressContent extends Command
{
protected $signature = 'import:wordpress';
protected $description = 'Import WordPress pages from docs/pages/*.md';
public function handle()
{
$docsPath = base_path('docs/pages');
$files = File::glob($docsPath . '/*.md');
$this->info("Found " . count($files) . " pages to import");
foreach ($files as $file) {
$data = $this->parseMarkdownFile($file);
Page::updateOrCreate(
['slug' => $data['slug']],
$data
);
$this->info("✓ Imported: " . $data['title']);
}
$this->info("Import complete!");
}
}
Elementor Placeholder Slike:
// Ukloni Elementor placeholder slike
$content = str_replace(
'https://lusar.hr/wp-content/plugins/elementor/assets/images/placeholder.png',
'',
$content
);
// Ili zamijeni sa default slikom
$content = str_replace(
'https://lusar.hr/wp-content/plugins/elementor/assets/images/placeholder.png',
'/images/default-placeholder.jpg',
$content
);
HTML cleanup:
<p> tagoveNeke stranice imaju duplikat sadržaja jer Elementor čuva podatke na dva mjesta. To je OK - parser će izvući sve.
Većina stranica ima Elementor placeholder slike:
https://lusar.hr/wp-content/plugins/elementor/assets/images/placeholder.png
Ovo NISU prave slike - ukloni ih ili zamijeni.
WordPress koristi apsolutne URL-ove sa domenom. U Laravelu koristi relativne:
Staro: https://lusar.hr/wp-content/uploads/2026/01/image.jpg
Novo: /storage/images/image.jpg
Ako već imaš stranice u Laravelu, pazi na slug konflikte.
Fajlovi NE sadrže SEO meta description. Trebaš ih kreirati ručno ili izvući excerpt iz content-a.
Nakon importa:
Provjeri sve stranice:
php artisan tinker
>>> Page::count()
>>> Page::pluck('title', 'slug')
Provjeri slike:
Provjeri linkove:
Responsive:
Za referencu:
ls -lh docs/pages/
grep -r "SMART FILM" docs/pages/
find docs/media/ -type f -iname "*.jpg" -o -iname "*.png" | wc -l
cat docs/manifest.json | head -50
Uspješan import! 🚀