我正在改变一个现有的基于WordPress的网站(一些javascript插件和一些用于Ajax目的的PHP脚本)。
是否有合适的目录,我应该把所有这些文件?我开始把它们放在根目录下的一个名为assets
的文件夹中,但后来决定也许它们应该与其他Wordpress模板和javascript文件一起使用?或者我应该将它们从wp-
目录中删除,并简单地将它们保存在assets
文件夹中?
我知道这是一个微不足道的问题,但我喜欢把事情做对——把它们放在有意义的目录中。
你可以把你所有的javascript保存在一个文件夹在你的主题的目录,即wp-content/themename/
。
关于Ajax,它在WordPress中的实现是不同的。您必须在ajax请求中添加一个名为action
的数据变量,然后将其与functions.php
文件中的函数挂钩。您的ajax url应该是wp-admin/admin-ajax.php
,通过admin_url( 'admin-ajax.php' )
在PHP中可用。
>
如果它是与演示相关的,我认为你应该把它放在相应的主题文件夹中。如果它是一个功能,你可以考虑把它包装在一个插件中,并把它放在一个插件文件夹中。
如果你不关心抽象这个变化,使其可用于其他主题,那么我将只是简单地添加到主题文件夹。您可以使用WP辅助函数来获取当前主题文件夹的web路径,或者从该文件夹中包含js。
在WordPress生态系统中适当的位置是wp-content
文件夹,因为这是您在进行WP升级,恢复或迁移时保留的文件夹。
在该文件夹中,它可以是主题(/themes
),插件(/plugins
),上传文件(/uploads
)的一部分,或者,如果情况需要,自定义文件夹(/my-custom-content
)。
/wp-content/themes/your-theme
这里,所有表示相关的代码。将一般功能代码放在主题的functions.php
中是一个常见的错误。在此文件中放置自定义函数之前要问的第一个问题是:
如果我改变我的主题,我需要这个函数吗?
参见:在哪里放置我的代码:plugin或functions.php?
/wp-content/plugins/your-plugin
假设你需要排队一些CSS或Javascript文件,这应该发生在任何主题被使用。
下面的示例插件将在Map页面和首页加载SWFObject(与WP捆绑),因为两者都包含SWF Flash嵌入。并且,在网站的其余部分,它将从Google CDN加载WebFont Loader和从插件文件夹中加载CSS文件。
<?php
/** Plugin Name: My Enqueue Plugin */
add_action( 'wp_enqueue_scripts', 'enqueue_so_16354990' );
function enqueue_so_16354990() {
global $post;
if( $post->post_name == 'map' || is_front_page() ) {
// Enqueue bundled script
wp_enqueue_script( 'swfobject' );
}
else {
// Enqueue from external location
wp_enqueue_script(
'my-web-font',
'//ajax.googleapis.com/ajax/libs/webfont/1.4.2/webfont.js',
array( 'jquery' ), // Dependencies
time(), // Version, use time to prevent caching
true // Enqueue on footer
);
// Enqueue from within plugin directory
wp_enqueue_style( 'my-css', plugins_url( 'css/my-plugin.css', __FILE__) );
}
}
/wp-content/uploads
在这里,你的主题或插件应该放置所有用户上传的内容,这样就可以通过WP媒体库屏幕进行管理。并且内容应该在任何主题交换或插件停用时都有效。
/wp-content/custom-folder
许多图片库插件使用这种方法来存储他们的自定义媒体库。
另一个用途是移动主题,自定义用户主题放在这个文件夹中,所以不要在插件更新时丢失它(因为插件或主题文件夹中的所有内容都在升级时被替换)。