javascript 有没有一种方法可以在WordPress中制作“封装”的可重用组件

lyr7nygr  于 2023-03-06  发布在  Java
关注(0)|答案(1)|浏览(144)

我一直在寻找WordPress主题开发的新方法,并遇到了一系列不同的选择,让您遵循最多样化的方法,例如“根圣人”启动主题或“Themosis框架”,甚至“Flynt”。但这些,尽管事实上,他们解决了非常有趣的问题,并不完全是我所需要的。
我正在寻找一种方法来创建定制的可伸缩和可重用的组件,将生活在一个php文件,并将所有的逻辑,html和样式在他们里面(SCSS、HTML、Javascript和PHP)。在现代Javascript框架中,例如在Vue中,我们有一个结构,你可以使用<script><template><style>标签在同一个文件中包含与组件相关的所有内容。
你知道我有什么方法可以遵循这些框架的相同原则,例如能够实现这样的东西吗?
custom-faq-block.php

<style>
//here we would have the sass that would need to be compiled in some way.
</style>

<template>
// here we would have the html and for example fetch a custom post type using php
</template>

<script>
//here we would use any jQuery or vanilla javascript to be used in this component
</script>

然后使用wordpress的标准get_template_part()函数加载该组件。
这样做有意义吗?你知道我可以用什么方法来做到这一点吗?或者有没有任何扩展可以以某种方式读取我的内联sass并将其附加到一个全局.css样式表中?
任何帮助将不胜感激!
非常感谢!

z9smfwbn

z9smfwbn1#

与此同时,我一直在尝试,经过一些试验和错误,我想出了一个小脚本,让人们有一个类似于我在我的第一个问题问的结构。我已经创建了一个回购,但请在下面找到详细的描述。我知道这是还没有完善,但可能是一些有趣的开始。
因此,我创建了一个小脚本,它依赖于GulpSCSSPHP来编译在PHP文件中定义的组件中使用的sass,这些组件遵循类似于Vue.Js组件定义样式的样式。
Link for the Github repo of Compomatic
这将允许您拥有这样的东西:
my-component.php

<!-- ##### COMPONENT STYLES ##### -->
<style>
//Here I will define all my sass for the component
#my-component{
   
 h3{
   color:red;
  }

 p{
   font-size: 12px;
  }
}
</style>

<!-- ##### COMPONENT BODY ##### -->
<div id="#my-component">
<h3>Hello!</h3>
<p><?php echo somefunction(foo);?></p>
</div>

<!-- ##### COMPONENT SCRIPTS ##### -->
<script>
//some component specific javascript will be here....
</script>

这些文件应该在你的wordpress主题的./components文件夹中创建。

如何使用-说明

    • 1**-确保系统中安装了composer和npm。
    • 2**-转到你想要安装编译器的wordpress主题并运行:

composer require scssphp/scssphp

    • 3**-将compomatic.phpgulpfile.js文件复制到主题根目录。另外,创建一个名为components的新文件夹,在其中放置您的组件。
    • 4**-在主题的functions.php中包含以下行:
require_once(“compomatic.php”)
    • 5**-运行以下命令:npm init
    • 6**-运行以下命令:npm install gulp gulp-phpunit gulp-shell gulp-watch --save-dev
    • 7**-然后运行gulp watch

从那时起,在开发过程中,对components目录的所有更改都将触发sass编译器。输出的编译后的css文件夹以及附加的scss include文件夹(例如您自己的mixin集合、变量、通用样式等)将根据您的喜好在compomatic.php文件中进行修改。
以下是可以修改的变量:

/*******************************************
* CUSTOMIZE THESE VARIABLES TO YOUR LIKING *
********************************************/

$output_file  =  './assets/css/test.css';  // Define output file
$output_dir  =  dirname($output_file);  // Get the directory of the output file
$additional_includes  =  './src/scss/test.scss';  //add any additional includes, fo example a set of mixins, variables or general styles...

如何加载组件?

Compomatic有一个helper函数来加载组件,这个helper函数所做的就是获取组件并删除<style>标签中的所有内容,这样标签的内容就不会污染DOM,因为这些样式已经从编译后的css中提供了。
要使用helper函数,您只需按如下方式操作:

load_component("/components/my-component");

备注:

不要忘记将生成的CSS文件加入队列。Compomatic保存输出文件的默认位置是:./assets/css/components.css

wp_register_style('components',get_template_directory_uri() .  '/assets/css/components.css',array(),'1.0');
// Enqueue components stylesheet.
wp_enqueue_style('components');

相关问题