php 我如何在wordpress儿童主题中扩展类?

siotufzp  于 2023-01-16  发布在  PHP
关注(0)|答案(1)|浏览(146)

我使用付费主题,不幸的是它不提供从字体使用自己的图标的可能性。因为我必须遵守GDPR,不能使用谷歌图标,我想使用本Map标。唯一的可能性是导入我自己的CSS文件,并定义图标的unicode。我已经使用了一个子主题,并已成功地在父主题中定义了我的本Map标字体,但我不知道如何将我的自定义转移到儿童主题。

父文件:/themes/mytheme/includes/assets.php

  • 这里我没有做任何修改。我只是将字体的css定义添加到现有的icons.css中。但我的目标是将其分离。所以这里我必须在register_scripts函数中添加另一行,以便加载我的CSS。wp_register_style( 'local-icons', c27()->template_uri( 'assets/dist/local-icons'.$suffix.'.css' ), [], \MyTheme\get_assets_version() ); *
class Assets {
  ...
  ...
  public function register_scripts() {
  ...
  ...
  ...
  wp_register_style( 'mytheme-icons', c27()->template_uri( 'assets/dist/icons'.$suffix.'.css' ), [], \MyTheme\get_assets_version() );
  ...
  ...
  }
}
  ...
public function enqueue_scripts() {
        global $wp_query;
  ...
  ...
  wp_enqueue_style( 'mytheme-icons' );
  ...
}

什么是c27

function c27() {
    return mytheme()->helpers();
}

父节点:/themes/mytheme/includes/源代码/管理员/管理员.php

  • 在这里,我向enqueue_scripts()函数添加了以下内容:
wp_enqueue_style( 'mytheme-local-icons' );

在wp_send_json返回的get_icon_packs()函数中,我添加了以下内容:'local-icons' => array_values( \MyTheme\Utils\Icons\Local_Icons::get() ), *

class Admin {
  ...
  ...
  public function enqueue_scripts() {
    ...
    ...
    wp_enqueue_style( 'mytheme-icons' );
    ...
  }
  ...
  ...
  public function get_icon_packs() {
        if ( ! is_user_logged_in() ) {
            return;
        }
     return wp_send_json( [
            'mytheme-icons' => array_values( \MyTheme\Utils\Icons\mytheme_Icons::get() ),
            'font-awesome' => array_values( \MyTheme\Utils\Icons\Font_Awesome::get() ),
        ] );
     
  }
    ....
    ....
}

父文件:/themes/mytheme/includes/实用程序/图标/主题图标.php

  • 这里我创建了一个新文件,并为我的字体做了Map。*
<?php
namespace MyTheme\Utils\Icons;
if ( ! defined('ABSPATH') ) {
    exit;
}
class Theme_Icons {
    public static function get() {
        return [
            '&#xe900' => 'icon-add-circle-1',
            '&#xe901' => 'icon-airplane',
            '&#xe902' => 'icon-alien',
            ...
            ...
        ];
    }
}

我已经在上面的每个文件中做了修改,一切都按预期运行。但是将来安装主题更新时会出现问题。我如何扩展子主题中的类,以便使用我自己的本Map标?
希望有人能帮我一点忙。
PS:我不是开发人员,但懂一点编程

rxztt3cl

rxztt3cl1#

创建子主题并添加文件custom-icons.css
然后将以下代码添加到文件functions.php中

add_action('wp_enqueue_scripts', 'enqueue_custom_icons', 20);
function enqueue_custom_icons(){
    wp_enqueue_style('custom-icons', get_stylesheet_directory_uri() . '/custom-icons.css', [], '1.0.0');
}

这会正确地将你的CSS文件添加到你的主题中。并且拥有一个子主题允许你更新父主题(主主题)而不必在更新时重新添加代码。

相关问题