Appearance
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 integrationConfig 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 configurationComponents Directory
components/ contains component templates:
components/
├── sections/ # Section components
├── blocks/ # Block components
├── parts/ # Part components
└── templates/ # Page templatesFile 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 definitionsConfiguration Files
Configuration files return arrays:
php
<?php
return [
'key' => 'value',
// ...
];Examples:
config/post-types.php- Post type definitionsconfig/taxonomies.php- Taxonomy definitionsconfig/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.phpVariable 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/
Related Documentation
- File Organization - File organization standards
- Naming Conventions - Naming conventions
- PHP Functions Reference - Helper functions
Next Steps:
- Review File Organization for organization standards
- Check Naming Conventions for naming rules
- See PHP Functions Reference for available functions