我一直在寻找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样式表中?
任何帮助将不胜感激!
非常感谢!
1条答案
按热度按时间z9smfwbn1#
与此同时,我一直在尝试,经过一些试验和错误,我想出了一个小脚本,让人们有一个类似于我在我的第一个问题问的结构。我已经创建了一个回购,但请在下面找到详细的描述。我知道这是还没有完善,但可能是一些有趣的开始。
因此,我创建了一个小脚本,它依赖于Gulp和SCSSPHP来编译在PHP文件中定义的组件中使用的sass,这些组件遵循类似于Vue.Js组件定义样式的样式。
Link for the Github repo of Compomatic
这将允许您拥有这样的东西:
my-component.php
这些文件应该在你的wordpress主题的
./components
文件夹中创建。如何使用-说明
composer require scssphp/scssphp
compomatic.php
和gulpfile.js
文件复制到主题根目录。另外,创建一个名为components
的新文件夹,在其中放置您的组件。functions.php
中包含以下行:npm init
npm install gulp gulp-phpunit gulp-shell gulp-watch --save-dev
gulp watch
从那时起,在开发过程中,对components目录的所有更改都将触发sass编译器。输出的编译后的css文件夹以及附加的scss include文件夹(例如您自己的mixin集合、变量、通用样式等)将根据您的喜好在
compomatic.php
文件中进行修改。以下是可以修改的变量:
如何加载组件?
Compomatic有一个helper函数来加载组件,这个helper函数所做的就是获取组件并删除
<style>
标签中的所有内容,这样标签的内容就不会污染DOM,因为这些样式已经从编译后的css中提供了。要使用helper函数,您只需按如下方式操作:
备注:
不要忘记将生成的CSS文件加入队列。Compomatic保存输出文件的默认位置是:
./assets/css/components.css