* docs: Add onboarding documentation for new developers Add four comprehensive guides to help new developers get started with the VDI-Starter-v5 WordPress theme: - docs/getting-started.md: Setup from zero, local WordPress options, env config, theme activation warnings, troubleshooting - docs/architecture.md: Bootstrap flow, 7 architectural layers, namespace conventions, WP hooks cleanup, enqueue system, theme.json - docs/creating-blocks.md: Step-by-step ACF block creation tutorial, helper functions, parent-child patterns, Tailwind integration - docs/reference.md: Hooks/filters tables, design tokens, CSS import tree, JS module graph, class reference, CLI commands, deployment Update README.md: trim deep-dive API docs (moved to reference), add documentation links section, fix CSS paths (views/styles/ → styles/), add missing contact-info block, fix deployment filename typo (wpengine,yml → wpengine.yml), add backToTop.js and enqEditorAssets(), add namespace conventions table. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * docs: language graph * docs: Update readme * 🔵 other: Rename project and publish * 🔵 other: Update .gitignore
87 lines
2.0 KiB
PHP
87 lines
2.0 KiB
PHP
<?php
|
|
/**
|
|
* Single Posts
|
|
*
|
|
* @package SoloFrameEvo
|
|
* @since 1.0.0
|
|
*/
|
|
|
|
namespace SoloFrameEvo;
|
|
|
|
get_header();
|
|
|
|
// Determine classes based on sidebar presence
|
|
if ( hasSidebar() ) {
|
|
$classes = 'container grid grid-cols-1 lg:grid-cols-4 gap-8 xl:gap-16 my-section mx-auto';
|
|
$clsEntry = 'lg:col-span-3';
|
|
} else {
|
|
$classes = 'container my-section lg:my-0 mx-auto';
|
|
}
|
|
?>
|
|
|
|
<article class="<?php echo esc_attr( $classes ); ?>">
|
|
<div class="entry-content <?php echo esc_attr( $clsEntry ); ?>">
|
|
<?php
|
|
if ( have_posts() ) {
|
|
while ( have_posts() ) {
|
|
the_post();
|
|
?>
|
|
|
|
<div class="post-title mb-0">
|
|
<h1 class="mb-0"><?php the_title(); ?></h1>
|
|
</div>
|
|
|
|
<div class="post-meta text-14px italic mb-6">
|
|
<div class="">
|
|
<span class="post-date">Posted: <?php the_date(); ?></span> | <span class="post-author">Posted by: <?php echo esc_html( ucfirst( get_the_author() ) ); ?></span>
|
|
</div>
|
|
|
|
<div class="">
|
|
<span class="post-categories">
|
|
<?php
|
|
$categories = get_the_category();
|
|
if ( ! empty( $categories ) ) {
|
|
echo '<span>Posted in: ';
|
|
foreach ( $categories as $ct ) {
|
|
echo '<a href="' . esc_url( get_category_link( $ct->cat_ID ) ) . '">' . esc_html( $ct->name ) . '</a>';
|
|
if ( count( $categories ) > 1 && $ct !== end( $categories ) ) {
|
|
echo ', ';
|
|
}
|
|
}
|
|
echo '</span>';
|
|
}
|
|
?>
|
|
</span>
|
|
|
|
|
<span class="post-tags">
|
|
<?php
|
|
$tags = get_the_tags();
|
|
if ( ! empty( $tags ) ) {
|
|
echo '<span>Tagged: ';
|
|
foreach ( $tags as $tg ) {
|
|
echo '<a href="' . esc_url( get_tag_link( $tg->term_id ) ) . '">' . esc_html( $tg->name ) . '</a>';
|
|
if ( count( $tags ) > 1 && $tg !== end( $tags ) ) {
|
|
echo ', ';
|
|
}
|
|
}
|
|
echo '</span>';
|
|
}
|
|
?>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
|
|
<?php
|
|
the_content();
|
|
}
|
|
}
|
|
?>
|
|
</div>
|
|
|
|
<?php if ( hasSidebar() ) : ?>
|
|
<?php get_sidebar(); ?>
|
|
<?php endif; ?>
|
|
</article>
|
|
|
|
<?php get_footer(); ?>
|