【问题标题】:Enqueue Wordpress Plugin Admin Stylesheet In Another Directory(Up One)在另一个目录中排队 Wordpress 插件管理样式表(上一个)
【发布时间】:2017-06-23 03:05:37
【问题描述】:

我正在尝试为我的管理插件页面排队一个样式表。我正在使用的文件有这个当前路径,

\plugins\my-plugin-name\includes\fileiamworkingon.php

我要做的就是将一个样式表排入队列,该样式表位于我当前所在目录的上一个目录。该样式表的路径是这样的,

\plugins\my-plugin-name\css\styles.css

我目前通过在我的类构造函数中调用添加操作挂钩来使其工作,如下所示:

add_action('admin_enqueue_scripts', array($this, 'pluginStyles'));

如您所见,它随后调用了一个 pluginStyles 函数,我在其中执行以下代码,

public function pluginStyles() {
    wp_register_style('my_plugin_stylesheet',  plugin_dir_url(__FILE__) . '../css/styles.css' );
    wp_enqueue_style('my_plugin_stylesheet');
}

目前这是我可以让它工作的唯一方法,因为在文件路径中添加了那个微妙的“../”。否则,它会尝试从 'includes' 目录中访问 c​​ss 文件夹,其中显然不存在 css 文件夹。

这似乎不是最好的解决方案,也许有一个更“Wordpress 方式”来解决这个问题。

【问题讨论】:

    标签: php wordpress


    【解决方案1】:

    这是我过去所做的 - 在主 \plugins\my-plugin-name\my-plugin-name.php 文件中定义一个常量:

    /** Define plugin path constant */
    if (!defined('PLUGIN_PATH')) {
        define('PLUGIN_PATH', plugin_dir_url(__FILE__));
    }
    

    并在您的\includes\fileiamworkingon.php 文件中排队:

    /** Enqueue from any other file in the plugin directory */
    wp_register_style('my_plugin_stylesheet',  PLUGIN_PATH . 'css/styles.css' );
    wp_enqueue_style('my_plugin_stylesheet');
    

    【讨论】:

    • 感谢您的解决方案。我现在还在看东西。
    • 这对我不起作用,但我可能使用不正确。我也用新的细节完全改写了我的问题,因为我觉得它缺乏。
    • 似乎我在代码中犯了一个小错误。我刚刚编辑为有plugin_dir_url 而不是plugin_dir_path
    • 谢谢。我将接受这个作为我用例的答案,因为当我开始编写更多代码时,为该路径设置一个全局变量可能会派上用场。我会看看约翰内斯是否有什么要补充或有任何反对意见,因为我对他的问题有所改变。
    【解决方案2】:

    可以使用plugin_dir_url( __FILE__ );获取插件目录路径

    所以你应该可以通过这种方式注册你的样式表:

    function my_plugin_scripts() {
        wp_register_style( 'my_plugin_stylesheet',  plugin_dir_url( __FILE__ ) . 'my-plugin-name/css/styles.css' );
        wp_enqueue_style( 'my_plugin_stylesheet' );
    }
    add_action( 'wp_enqueue_scripts', 'my_plugin_scripts' );
    

    【讨论】:

    • 感谢您的解决方案。我现在还在看东西。
    • 我使用了您的解决方案,大部分时间都到达了那里,但是如果您看到了,我重新表述了我的问题,因为我觉得它非常平淡(并且没有真正解释我在做什么)出色地)。我现在可以使用它,但是如果您看到我的问题编辑,则只有在我将“../”添加到路径时它才有效
    【解决方案3】:

    在 'fileiamworkingon.php' 中尝试以下操作:

     wp_enqueue_style('styles', plugin_dir_path() . '../css/styles.css', array(), null);
    

    “../”会将您移回目录。

    【讨论】:

    • 这可能不是要走的路,你是从 WP 文档那里得到的吗?
    • 另外,只是想让您知道,我的代码中的复制和粘贴最终会尝试从路径“sitename.com/css/styles.css”加载styles.css 文件。
    猜你喜欢
    • 2014-08-25
    • 1970-01-01
    • 2012-01-21
    • 2021-10-04
    • 1970-01-01
    • 2015-06-12
    • 2021-09-19
    • 2015-06-26
    • 1970-01-01
    相关资源
    最近更新 更多