$line) {
if (strpos(trim($line), '# ') === 0) {
unset($markdownLines[$key]);
break;
}
}
$cleanedMarkdown = implode("\n", $markdownLines);
echo "Markdown processed successfully.\n\n";
// Save results
echo "Saving results to files...\n";
file_put_contents('test-output-metadata.json', $jsonOutput);
file_put_contents('test-output-content.md', $cleanedMarkdown);
echo "Results saved successfully.\n\n";
// Simulate mapping JSON to post fields
echo "Simulating JSON to post fields mapping...\n";
$postFields = [
'post_title' => $parsedYaml['title'] ?? $parsedYaml['name'] ?? 'Imported Post',
'post_excerpt' => $parsedYaml['summary'] ?? $parsedYaml['description'] ?? '',
'post_date' => $parsedYaml['datePublished'] ?? date('Y-m-d'),
'post_name' => $parsedYaml['url'] ?? sanitize_title($parsedYaml['title'] ?? ''),
];
echo "Post fields mapped:\n";
print_r($postFields);
echo "\n";
// Simulate mapping JSON to post meta
echo "Simulating JSON to post meta mapping...\n";
$postMeta = [
'_markdown_parser_original_metadata' => $parsedYaml,
'_markdown_parser_license' => $parsedYaml['license'] ?? '',
'_markdown_parser_original_id' => $parsedYaml['id'] ?? '',
'_markdown_parser_status' => $parsedYaml['creativeWorkStatus'] ?? '',
'_markdown_parser_type' => $parsedYaml['type'] ?? '',
'_markdown_parser_language' => $parsedYaml['inLanguage'] ?? '',
'_markdown_parser_date_published' => $parsedYaml['datePublished'] ?? '',
'_markdown_parser_context' => $parsedYaml['@context'] ?? '',
];
echo "Post meta mapped (sample):\n";
foreach (array_slice($postMeta, 0, 5, true) as $key => $value) {
if (is_array($value)) {
echo "$key => [Array]\n";
} else {
echo "$key => $value\n";
}
}
echo "...\n\n";
// Simulate mapping JSON to taxonomies
echo "Simulating JSON to taxonomies mapping...\n";
$taxonomies = [];
if (isset($parsedYaml['keywords']) && is_array($parsedYaml['keywords'])) {
$taxonomies['post_tag'] = $parsedYaml['keywords'];
}
echo "Taxonomies mapped:\n";
print_r($taxonomies);
echo "\n";
// Simulate converting markdown to Gutenberg blocks
echo "Simulating markdown to Gutenberg blocks conversion...\n";
// For testing purposes, we'll just convert a small portion
$sampleMarkdown = substr($cleanedMarkdown, 0, 500);
$blocks = [];
// Simple heading detection
preg_match_all('/^(#{2,6})\s+(.+)$/m', $sampleMarkdown, $headings, PREG_SET_ORDER);
foreach ($headings as $heading) {
$level = strlen($heading[1]);
$blocks[] = "\n
{$paragraph[1]}
\n"; } } echo "Generated " . count($blocks) . " blocks (sample):\n"; echo implode("\n\n", array_slice($blocks, 0, 2)) . "\n...\n\n"; // Simulate featured image handling echo "Simulating featured image handling...\n"; $featuredImage = null; if (isset($parsedYaml['image'])) { $featuredImage = $parsedYaml['image']; } elseif (isset($parsedYaml['cover']) && isset($parsedYaml['cover']['image'])) { $featuredImage = $parsedYaml['cover']['image']; if (isset($parsedYaml['cover']['relative']) && $parsedYaml['cover']['relative'] === true) { $baseUrl = dirname($url) . '/'; $featuredImage = $baseUrl . $featuredImage; } } if ($featuredImage) { echo "Featured image found: $featuredImage\n"; echo "Would import to media library and set as featured image.\n\n"; } else { echo "No featured image found.\n\n"; } echo "Test completed successfully!\n"; echo "The enhanced plugin would create a WordPress post with:\n"; echo "- Title: " . $postFields['post_title'] . "\n"; echo "- Excerpt: " . substr($postFields['post_excerpt'], 0, 50) . "...\n"; echo "- Content: " . count($blocks) . " Gutenberg blocks\n"; echo "- Featured Image: " . ($featuredImage ? "Yes" : "No") . "\n"; echo "- Tags: " . (isset($taxonomies['post_tag']) ? implode(", ", array_slice($taxonomies['post_tag'], 0, 3)) . "..." : "None") . "\n"; } catch (Exception $e) { echo "ERROR: " . $e->getMessage() . "\n"; exit(1); }