web/wp-content/themes/mozilla-new-products/functions.php (56 lines of code) (raw):

<?php /** * WP Theme constants and setup functions * * @package MozillaNewProducts */ use MozillaNewProducts\Managers; use MozillaNewProducts\Models\PostType\Article; use Timber\Timber; use Dotenv\Dotenv; define( 'MOZILLA_BUILDERS_THEME_URL', get_stylesheet_directory_uri() ); define( 'MOZILLA_BUILDERS_THEME_PATH', __DIR__ . '/' ); define( 'MOZILLA_BUILDERS_DOMAIN', get_site_url() ); define( 'MOZILLA_BUILDERS_SITE_NAME', get_bloginfo( 'name' ) ); define( 'MOZILLA_BUILDERS_THEME_VERSION', wp_get_theme()->get( 'Version' ) ); /** * Read in a .env file for environment variables. */ $dotenv = Dotenv::createImmutable( ABSPATH . '..' )->safeLoad(); /** * Set up our global environment constant and load its config first * Default: production */ define( 'WP_ENV', $_ENV['WP_ENV'] ?? 'production' ); Timber::init(); Timber::$dirname = array( 'templates', 'blocks' ); $managers = array( new Managers\WordPressManager(), new Managers\ContextManager(), new Managers\BlockManager(), ); if ( function_exists( 'acf_add_local_field_group' ) ) { $managers[] = new Managers\ACFManager(); } $theme_manager = new Managers\ThemeManager( $managers ); add_action( 'after_setup_theme', array( $theme_manager, 'setup_theme' ) ); /** * Add a Twig filter to convert WP_Post objects to Article objects * This allows "Post Object" fields in ACF to be used alongside standard * Timber post query results, which return Article class objects. */ add_filter( 'timber/twig', function ( $twig ) { $twig->addFilter( new \Twig\TwigFilter( 'as_article', function ( $post ) { if ( is_array( $post ) ) { return array_map( function ( $p ) { return Timber::get_post( $p ); }, $post ); } return Timber::get_post( $post ); } ) ); return $twig; } ); /** * Customize error reporting settings */ function custom_error_reporting() { // Set the error reporting level to hide warnings but show other errors. error_reporting( E_ALL & ~E_WARNING & ~E_NOTICE & ~E_DEPRECATED ); // Log errors to a file. ini_set( 'error_log', WP_CONTENT_DIR . '/debug.log' ); } add_action( 'init', 'custom_error_reporting' ); /** * Log given values to logs/error.log * * @param array ...$values values to log. */ function print_log( ...$values ): void { foreach ( $values as $v ) { error_log( print_r( $v, true ) ); } }