Значится есть на сайте иконки соц. сетей, а в админке настройки урлов. для них. Вот пытаюсь добавить ещё одну соц.иконку. Вот полез в темный лес файлов темы (для меня темный, для кого-то - ясная полянка). Распутав эти цепочки файлов-классов нашел нужные: customizer.php data-trait.php и customizer-defaults.php. Добавляю по аналогии в них ещё одну соц.иконку и всё работает!
Но, я так понимаю, правильно дорабатывать темы используя дочернию, поэтому скопировал файлы. Всякие хедеры в дочерней работают, а вот вроде таких файлов: data-trait.php и customizer-defaults.php - вордпрес всё равно из родительской подхватывает.
Направьте, плиз, на путь истинный:
1. Норм делать без дочерней, сразу в родительской? Отключить обновления темы, хотя конечно если найдётся какая-нибудь дыра в безопасности, или это маловероятно?
2. Как вообще дорабатываются темы с дочерней? Не простые изменения шаблонов какого-нибудь single.php а вот таких настроек темы и прочего. Не найдётся примера глянуть? ))
3. Как у вас получается себя остановить, когда ни хрена не получаешься и засиживаешься до поздна за компом, например создавая вопрос на хабре три часа?
Вот
ссылка на тему, или простыня ниже, где указал код из различных файлов:
spoiler
<?php /*** FILE header-4.php ***/
namespace radiustheme\roofix;
$rdtheme_socials = Helper::socials();
?>
<?php foreach ( $rdtheme_socials as $rdtheme_social ): ?>
<a target="_blank" href="<?php echo esc_url( $rdtheme_social['url'] );?>">
<i class="fab <?php echo esc_attr( $rdtheme_social['icon'] );?>"></i>
</a>
<?php endforeach; ?>
<?php /*** FILE includes.php ***/
namespace radiustheme\roofix;
require_once ROOFIX_THEME_INC_DIR . 'helper-traits/data-trait.php';
require_once ROOFIX_THEME_INC_DIR . 'helper.php';
?>
<?php /*** FILE helper.php ***/
namespace radiustheme\roofix;
use radiustheme\roofix\DataTrait;
class Helper {
use DataTrait;
}
?>
<?php /*** FILE data-trait.php ***/
namespace radiustheme\roofix;
trait DataTrait {
public static function socials(){
$rdtheme_socials = array(
'social_facebook' => array(
'icon' => 'fa-facebook-f',
'url' => RDTheme::$options['social_facebook'],
),
'social_twitter' => array(
'icon' => 'fa-twitter',
'url' => RDTheme::$options['social_twitter'],
),
);
return array_filter( $rdtheme_socials, array( __CLASS__ , 'filter_social' ) );
}
public static function filter_social( $args ){
return ( $args['url'] != '' );
}
}
?>
<?php /*** FILE rdtheme.php ***/
namespace radiustheme\roofix;
if (!class_exists(NS . 'RDTheme')) {
class RDTheme
{
protected static $instance = null;
// Sitewide static variables
public static $options = null;
private function __construct()
{
add_action('after_setup_theme', array($this, 'set_options'));
add_action('customize_preview_init', array($this, 'set_options'));
}
public static function instance()
{
if (null == self::$instance) {
self::$instance = new self;
}
return self::$instance;
}
public function set_options()
{
$defaults = rttheme_generate_defaults();
$newData = [];
foreach ($defaults as $key => $dValue) {
$value = get_theme_mod($key, $defaults[$key]);
$newData[$key] = $value;
}
self::$options = $newData;
}
}
}
RDTheme::instance();
?>
<?php /*** FILE customizer-defaults.php ***/
if (!function_exists('rttheme_generate_defaults')) {
function rttheme_generate_defaults() {
$customizer_defaults = array(
'social_facebook' => '#',
'social_twitter' => '#',
);
return apply_filters('rttheme_customizer_defaults', $customizer_defaults);
}
}
?>
<?php /*** FILE customizer.php ***/
use radiustheme\roofix\Helper;
class rttheme_initialise_customizer_settings {
private $defaults;
public function __construct() {
$this->defaults = rttheme_generate_defaults();
add_action('customize_register', array($this, 'rttheme_register_contact_socials_controls'));
}
public function rttheme_register_contact_socials_controls($wp_customize) {
$wp_customize->add_setting('social_facebook',
array(
'default' => $this->defaults['social_facebook'],
'transport' => 'refresh',
'sanitize_callback' => 'esc_url_raw'
)
);
$wp_customize->add_control('social_facebook',
array(
'label' => esc_html__('Facebook', 'roofix'),
'section' => 'contact_socials_section',
'type' => 'url'
)
);
$wp_customize->add_setting('social_twitter',
array(
'default' => $this->defaults['social_twitter'],
'transport' => 'refresh',
'sanitize_callback' => 'esc_url_raw'
)
);
$wp_customize->add_control('social_twitter',
array(
'label' => esc_html__('Twitter', 'roofix'),
'section' => 'contact_socials_section',
'type' => 'url'
)
);
}
}
if (class_exists('WP_Customize_Control')) {
$rttheme_settings = new rttheme_initialise_customizer_settings();
}
?>