Skip to content

PHP Structure

This guide explains PHP file organization and conventions in LamaPress.

Table of Contents


Overview

LamaPress organizes PHP files into logical directories: functions for core functionality, config for settings, and components for templates.

Directory Structure

Functions Directory

functions/ contains core functionality:

functions/
├── bootstrap.php              # Theme initialization
├── includes.php               # Core helper functions
├── register-section-fields.php  # ACF field registration
├── post-types.php             # Post type registration
├── taxonomies.php             # Taxonomy registration
├── media.php                  # Media handling
├── vite.php                   # Vite integration
├── admin/                     # Admin functionality
└── bunny/                     # Bunny.net integration

Config Directory

config/ contains configuration files:

config/
├── post-types.php        # Post type definitions
├── taxonomies.php        # Taxonomy definitions
├── post-templates.php   # Template mappings
├── media.php            # Media settings
├── fields/              # Global ACF fields
└── plugins.php          # Plugin configuration

Components Directory

components/ contains component templates:

components/
├── sections/            # Section components
├── blocks/              # Block components
├── parts/               # Part components
└── templates/           # Page templates

File Organization

Function Files

Function files are organized by purpose:

  • Core functions - includes.php, bootstrap.php
  • Feature functions - post-types.php, media.php
  • Integration functions - vite.php, bunny/

Example structure:

php
<?php

/**
 * File description
 */

defined('ABSPATH') || exit;

// Function definitions

Configuration Files

Configuration files return arrays:

php
<?php

return [
    'key' => 'value',
    // ...
];

Examples:

  • config/post-types.php - Post type definitions
  • config/taxonomies.php - Taxonomy definitions
  • config/media.php - Media settings

Component Files

Component files follow component structure:

components/sections/hero_basic/
├── index.php    # Template
├── acf.php      # ACF fields
├── index.js     # JavaScript (optional)
└── style.scss   # Styles (optional)

Naming Conventions

Function Names

Functions use ll prefix:

php
function llSection($name, $key) { }
function llField($name, $key, $section) { }
function llBlock($name, $props) { }

File Names

Files use snake_case:

php
register-section-fields.php
post-types.php
hero_basic.php

Variable Names

Variables use camelCase:

php
$sectionName = 'hero_basic';
$fieldKey = 'homepage_hero';
$groupFields = [];

Best Practices

1. Modular Functions

Keep functions modular and focused:

php
// Good - focused function
function llGetImageSrc($image, $size) {
    // ...
}

// Avoid - doing too much
function llDoEverything() {
    // ...
}

2. Configuration Files

Use configuration files for settings:

php
// config/post-types.php
return [
    'article' => [
        'name' => 'Articles',
        // ...
    ],
];

3. Component Organization

Organize components by type:

  • Sections in components/sections/
  • Blocks in components/blocks/
  • Parts in components/parts/

Next Steps:

Released under the MIT License.