add: php composer libraries
This commit is contained in:
@@ -26,7 +26,24 @@ require implode(
|
|||||||
);
|
);
|
||||||
|
|
||||||
use \HackeamosOrg\HackeamosWP\MediaSizes;
|
use \HackeamosOrg\HackeamosWP\MediaSizes;
|
||||||
|
use \HackeamosOrg\HackeamosWP\DefaultSiteLogo;
|
||||||
|
use \HackeamosOrg\HackeamosWP\DefaultFavicon;
|
||||||
|
use \HackeamosOrg\HackeamosWP\FixThemeJsonFontSizes;
|
||||||
|
use \HackeamosOrg\HackeamosWP\CustomBlockStyles;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the logo to this theme's file when no option is available
|
||||||
|
*/
|
||||||
|
DefaultSiteLogo::setDefaultLogoUrl(
|
||||||
|
get_theme_file_uri('assets/images/logo.svg')
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the favicon from theme assets if none is found at database
|
||||||
|
*/
|
||||||
|
DefaultFavicon::setDefaultFaviconUrl(
|
||||||
|
get_theme_file_uri('assets/images/favicon.png')
|
||||||
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set site's media sizes
|
* Set site's media sizes
|
||||||
@@ -59,9 +76,17 @@ MediaSizes::setMediaSizes(
|
|||||||
'crop' => true
|
'crop' => true
|
||||||
],
|
],
|
||||||
'post-thumbnail' => [
|
'post-thumbnail' => [
|
||||||
# null sizes avoid actually changing size, but this will add support to featured-images
|
/*
|
||||||
|
* null sizes avoid actually changing size,
|
||||||
|
* but this will add support to featured-images
|
||||||
|
*/
|
||||||
'size_w' => null,
|
'size_w' => null,
|
||||||
'size_h' => null
|
'size_h' => null
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load custom block styles
|
||||||
|
*/
|
||||||
|
CustomBlockStyles::enqueueStyles();
|
||||||
|
|||||||
144
src/HackeamosWP/CustomBlockStyles.php
Normal file
144
src/HackeamosWP/CustomBlockStyles.php
Normal file
@@ -0,0 +1,144 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Set media sizes in Wordpress
|
||||||
|
*
|
||||||
|
* PHP VERSION 8
|
||||||
|
*
|
||||||
|
* @package HackeamosOrg/HackeamosWP/CustomBlockStyles
|
||||||
|
* @author Lucilio Correia <lucilio@lucilio.net>
|
||||||
|
* @license GPL-3 https://www.gnu.org/licenses/gpl-3.0.pt-br.html
|
||||||
|
* @link https://hackeamos.org/projetos/HackeamosWP
|
||||||
|
*/
|
||||||
|
namespace HackeamosOrg\HackeamosWP;
|
||||||
|
use \HackeamosOrg\SingletonPattern;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set reasonable media sizes
|
||||||
|
*
|
||||||
|
* @package HackeamosOrg/HackeamosWP/CustomBlockStyles
|
||||||
|
* @author Lucilio Correia <lucilio@lucilio.net>
|
||||||
|
* @license GPL-3 https://www.gnu.org/licenses/gpl-3.0.pt-br.html
|
||||||
|
* @link https://hackeamos.org/projetos/HackeamosWP
|
||||||
|
*/
|
||||||
|
class CustomBlockStyles extends SingletonPattern {
|
||||||
|
/**
|
||||||
|
* The path for the custom stylesheets
|
||||||
|
*/
|
||||||
|
static $stylesheetDirectory=null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the custom stylesheet directory path
|
||||||
|
*
|
||||||
|
* @param string The new path
|
||||||
|
*
|
||||||
|
* @return none
|
||||||
|
*/
|
||||||
|
static function setStylesheetDir(string $path)
|
||||||
|
{
|
||||||
|
if (! is_dir($path)) {
|
||||||
|
throw new Exception(
|
||||||
|
sptintf(
|
||||||
|
'direcotry not found: %',
|
||||||
|
$path
|
||||||
|
),
|
||||||
|
1
|
||||||
|
);
|
||||||
|
}
|
||||||
|
self::$stylesheetDirectory=$path;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the custom stylesheet directory path
|
||||||
|
*
|
||||||
|
* @return none
|
||||||
|
*/
|
||||||
|
static function getStylesheetDir()
|
||||||
|
{
|
||||||
|
$path=self::$stylesheetDirectory;
|
||||||
|
if (empty($path)) {
|
||||||
|
return implode(
|
||||||
|
DIRECTORY_SEPARATOR,
|
||||||
|
[
|
||||||
|
get_stylesheet_directory(),
|
||||||
|
'assets',
|
||||||
|
'styles',
|
||||||
|
'blocks'
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return $path;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enqueue custom styles for blocks
|
||||||
|
*
|
||||||
|
* Enqueue a list of stylesheets conditionally when respective blocks
|
||||||
|
* are in use.
|
||||||
|
*
|
||||||
|
* @return bool Whether the enqueue was or not successful
|
||||||
|
*/
|
||||||
|
static function enqueueStyles()
|
||||||
|
{
|
||||||
|
add_action(
|
||||||
|
'after_setup_theme',
|
||||||
|
[
|
||||||
|
get_class(),
|
||||||
|
'enqueueFoundStylesheets'
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Enqueue a list of custom styles for blocks
|
||||||
|
*
|
||||||
|
* This method is meant to be hooked on 'after_theme_setup'
|
||||||
|
*
|
||||||
|
* @return bool Whether the enqueue was or not successful
|
||||||
|
*/
|
||||||
|
static function enqueueFoundStylesheets()
|
||||||
|
{
|
||||||
|
$stylesheetDir=self::getStylesheetDir();
|
||||||
|
$stylesheetList=array_map(
|
||||||
|
function ($relPath) use ($stylesheetDir) {
|
||||||
|
return implode(
|
||||||
|
DIRECTORY_SEPARATOR,
|
||||||
|
[
|
||||||
|
$stylesheetDir,
|
||||||
|
$relPath
|
||||||
|
]
|
||||||
|
);
|
||||||
|
},
|
||||||
|
array_filter(
|
||||||
|
scandir($stylesheetDir),
|
||||||
|
function ($dirEntry) use ($stylesheetDir) {
|
||||||
|
return substr($dirEntry, 0, 1) != '.';
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
foreach ($stylesheetList as $stylesheet) {
|
||||||
|
$block_name=str_replace(
|
||||||
|
'--',
|
||||||
|
'/',
|
||||||
|
explode(
|
||||||
|
'.',
|
||||||
|
basename($stylesheet)
|
||||||
|
)[0]
|
||||||
|
);
|
||||||
|
$args=[
|
||||||
|
'handle' => 'custom-style--' . str_replace(
|
||||||
|
'/',
|
||||||
|
'--',
|
||||||
|
$block_name
|
||||||
|
),
|
||||||
|
'src' => str_replace(
|
||||||
|
get_stylesheet_directory(),
|
||||||
|
get_stylesheet_directory_uri(),
|
||||||
|
$stylesheet
|
||||||
|
)
|
||||||
|
];
|
||||||
|
wp_enqueue_block_style(
|
||||||
|
"$block_name",
|
||||||
|
$args
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
80
src/HackeamosWP/DefaultFavicon.php
Normal file
80
src/HackeamosWP/DefaultFavicon.php
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Set site favicon if none is defined yet on database
|
||||||
|
*
|
||||||
|
* PHP VERSION 8
|
||||||
|
*
|
||||||
|
* @package HackeamosOrg/HackeamosWP/MediaSizes
|
||||||
|
* @author Lucilio Correia <lucilio@lucilio.net>
|
||||||
|
* @license GPL-3 https://www.gnu.org/licenses/gpl-3.0.pt-br.html
|
||||||
|
* @link https://hackeamos.org/projetos/HackeamosWP
|
||||||
|
*/
|
||||||
|
namespace HackeamosOrg\HackeamosWP;
|
||||||
|
use \HackeamosOrg\SingletonPattern;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set a default favicon if none is uploaded
|
||||||
|
*
|
||||||
|
* @package HackeamosOrg/HackeamosWP/DefaultSiteLogo
|
||||||
|
* @author Lucilio Correia <lucilio@lucilio.net>
|
||||||
|
* @license GPL-3 https://www.gnu.org/licenses/gpl-3.0.pt-br.html
|
||||||
|
* @link https://hackeamos.org/projetos/HackeamosWP
|
||||||
|
*/
|
||||||
|
class DefaultFavicon extends SingletonPattern
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Store default custom icon URL
|
||||||
|
*
|
||||||
|
* @todo check if it's safe for multisite network
|
||||||
|
*/
|
||||||
|
protected static $defaultFaviconUrl;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Replace icon url when it is empty
|
||||||
|
*
|
||||||
|
* @param string $defaultFaviconUrl The URL desired for the default logo.
|
||||||
|
*
|
||||||
|
* @return none
|
||||||
|
*
|
||||||
|
* @todo Check if it is network (wpmu) safe
|
||||||
|
*/
|
||||||
|
static function setDefaultFaviconUrl(string $defaultFaviconUrl)
|
||||||
|
{
|
||||||
|
// do nothing if favicon is set
|
||||||
|
$faviconId=get_option('site_icon');
|
||||||
|
if ($faviconId) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
// throw error if no URL was set on class calling
|
||||||
|
if (empty($defaultFaviconUrl)) {
|
||||||
|
throw new Exception("Missing default favicon URL", 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// keep the custom logo url
|
||||||
|
self::$defaultFaviconUrl=$defaultFaviconUrl;
|
||||||
|
|
||||||
|
// set a filter to replace logo HTML
|
||||||
|
add_filter(
|
||||||
|
'get_site_icon_url',
|
||||||
|
[
|
||||||
|
get_class(),
|
||||||
|
'getFaviconUrl'
|
||||||
|
],
|
||||||
|
10,
|
||||||
|
1
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Debug
|
||||||
|
*
|
||||||
|
* @param string $faviconUrl Value for output.
|
||||||
|
*
|
||||||
|
* @return none
|
||||||
|
*/
|
||||||
|
static function getFaviconUrl(string $faviconUrl)
|
||||||
|
{
|
||||||
|
$defaultFaviconUrl=self::$defaultFaviconUrl;
|
||||||
|
return $defaultFaviconUrl;
|
||||||
|
}
|
||||||
|
}
|
||||||
108
src/HackeamosWP/DefaultSiteLogo.php
Normal file
108
src/HackeamosWP/DefaultSiteLogo.php
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Set media sizes in Wordpress
|
||||||
|
*
|
||||||
|
* PHP VERSION 8
|
||||||
|
*
|
||||||
|
* @package HackeamosOrg/HackeamosWP/MediaSizes
|
||||||
|
* @author Lucilio Correia <lucilio@lucilio.net>
|
||||||
|
* @license GPL-3 https://www.gnu.org/licenses/gpl-3.0.pt-br.html
|
||||||
|
* @link https://hackeamos.org/projetos/HackeamosWP
|
||||||
|
*/
|
||||||
|
namespace HackeamosOrg\HackeamosWP;
|
||||||
|
use \HackeamosOrg\SingletonPattern;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set a default logo if none is uploaded
|
||||||
|
*
|
||||||
|
* @package HackeamosOrg/HackeamosWP/DefaultSiteLogo
|
||||||
|
* @author Lucilio Correia <lucilio@lucilio.net>
|
||||||
|
* @license GPL-3 https://www.gnu.org/licenses/gpl-3.0.pt-br.html
|
||||||
|
* @link https://hackeamos.org/projetos/HackeamosWP
|
||||||
|
*/
|
||||||
|
class DefaultSiteLogo extends SingletonPattern
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Store default custom logo URL
|
||||||
|
*
|
||||||
|
* @todo check if it's safe for multisite network
|
||||||
|
*/
|
||||||
|
protected static $defaultLogoUrl;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Store default custom logo Attributes
|
||||||
|
*
|
||||||
|
* @todo check if it's safe for multisite network
|
||||||
|
*/
|
||||||
|
protected static $defaultLogoAttrs;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Replace logo url when it is wmpty
|
||||||
|
*
|
||||||
|
* @param string $defaultLogoUrl The URL desired for the default logo.
|
||||||
|
*
|
||||||
|
* @return none
|
||||||
|
*
|
||||||
|
* @todo Check if it is network (wpmu) safe
|
||||||
|
*/
|
||||||
|
static function setDefaultLogoUrl(
|
||||||
|
string $defaultLogoUrl
|
||||||
|
) {
|
||||||
|
// do nothing if custom logo is set
|
||||||
|
$customLogoId=get_theme_mod('custom_logo');
|
||||||
|
if ($customLogoId) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// throw error if no URL was set on class calling
|
||||||
|
if (empty($defaultLogoUrl)) {
|
||||||
|
throw new Exception("Missing default logo URL", 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// keep the custom logo url
|
||||||
|
self::$defaultLogoUrl=$defaultLogoUrl;
|
||||||
|
|
||||||
|
// set a filter to replace logo HTML
|
||||||
|
add_filter(
|
||||||
|
'get_custom_logo',
|
||||||
|
[
|
||||||
|
get_class(),
|
||||||
|
'getCustomLogoHtml'
|
||||||
|
],
|
||||||
|
10,
|
||||||
|
1
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Debug
|
||||||
|
*
|
||||||
|
* @param string $logoHtml Value for output.
|
||||||
|
*
|
||||||
|
* @return none
|
||||||
|
*/
|
||||||
|
static function getCustomLogoHtml(string $logoHtml)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
$unlink_homepage_logo = (bool) get_theme_support(
|
||||||
|
'custom-logo',
|
||||||
|
'unlink-homepage-logo'
|
||||||
|
);
|
||||||
|
// html to filter should be empty
|
||||||
|
if (empty($logoHtml)) {
|
||||||
|
$logoHtml=sprintf(
|
||||||
|
'<img src="%s" alt="%s"',
|
||||||
|
self::$defaultLogoUrl,
|
||||||
|
get_bloginfo('name', 'display')
|
||||||
|
);
|
||||||
|
if (! $unlink_homepage_logo) {
|
||||||
|
$logoHtml=sprintf(
|
||||||
|
'<a href="%s">%s</a>',
|
||||||
|
get_home_url(),
|
||||||
|
$logoHtml
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $logoHtml;
|
||||||
|
}
|
||||||
|
}
|
||||||
93
src/HackeamosWP/FixThemeJsonFontSizes.php
Normal file
93
src/HackeamosWP/FixThemeJsonFontSizes.php
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Set site favicon if none is defined yet on database
|
||||||
|
*
|
||||||
|
* PHP VERSION 8
|
||||||
|
*
|
||||||
|
* @package HackeamosOrg/HackeamosWP/MediaSizes
|
||||||
|
* @author Lucilio Correia <lucilio@lucilio.net>
|
||||||
|
* @license GPL-3 https://www.gnu.org/licenses/gpl-3.0.pt-br.html
|
||||||
|
* @link https://hackeamos.org/projetos/HackeamosWP
|
||||||
|
*/
|
||||||
|
namespace HackeamosOrg\HackeamosWP;
|
||||||
|
use \HackeamosOrg\SingletonPattern;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set a default favicon if none is uploaded
|
||||||
|
*
|
||||||
|
* @package HackeamosOrg/HackeamosWP/DefaultSiteLogo
|
||||||
|
* @author Lucilio Correia <lucilio@lucilio.net>
|
||||||
|
* @license GPL-3 https://www.gnu.org/licenses/gpl-3.0.pt-br.html
|
||||||
|
* @link https://hackeamos.org/projetos/HackeamosWP
|
||||||
|
*/
|
||||||
|
class FixThemeJsonFontSizes extends SingletonPattern
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Store default custom icon URL
|
||||||
|
*
|
||||||
|
* @todo check if it's safe for multisite network
|
||||||
|
*/
|
||||||
|
protected static $themeFontSizes;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Replace icon url when it is empty
|
||||||
|
*
|
||||||
|
* @return none
|
||||||
|
*
|
||||||
|
* @todo Check if it is network (wpmu) safe
|
||||||
|
*/
|
||||||
|
static function fix()
|
||||||
|
{
|
||||||
|
add_filter(
|
||||||
|
'wp_theme_json_data_theme',
|
||||||
|
[
|
||||||
|
get_class(),
|
||||||
|
'saveThemeFontSizes'
|
||||||
|
]
|
||||||
|
);
|
||||||
|
add_filter(
|
||||||
|
'wp_theme_json_data_default',
|
||||||
|
[
|
||||||
|
get_class(),
|
||||||
|
'overwriteDefaultFontSizes'
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Save font sizes declared on theme.json file
|
||||||
|
*
|
||||||
|
* @param WP_Theme_JSON_Data $themeJsonObject Theme json object
|
||||||
|
* representation.
|
||||||
|
*
|
||||||
|
* @return WP_Theme_JSON_Data Unmodified theme.json object.
|
||||||
|
*
|
||||||
|
* @todo Check if it is network (wpmu) safe
|
||||||
|
*/
|
||||||
|
static function saveThemeFontSizes($themeJsonObject)
|
||||||
|
{
|
||||||
|
$themeJson=$themeJsonObject->get_data();
|
||||||
|
self::$themeFontSizes=$themeJson['settings']['typography']['fontSizes'];
|
||||||
|
return $themeJsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Overwrite default values with theme.json's values
|
||||||
|
*
|
||||||
|
* @param WP_Theme_JSON_Data $themeJsonObject Theme json object
|
||||||
|
* representation.
|
||||||
|
*
|
||||||
|
* @return none
|
||||||
|
*
|
||||||
|
* @todo Check if it is network (wpmu) safe
|
||||||
|
*/
|
||||||
|
static function overwriteDefaultFontSizes($themeJsonObject)
|
||||||
|
{
|
||||||
|
$themeJson=$themeJsonObject->get_data();
|
||||||
|
$fontSizes=self::$themeFontSizes;
|
||||||
|
$debug=self::$themeFontSizes;
|
||||||
|
die(var_export(compact('themeJson', 'fontSizes', 'debug')));
|
||||||
|
return $themeJsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user