【问题标题】:How do I fix a wordpress custom theme to work with plugins?如何修复 wordpress 自定义主题以使用插件?
【发布时间】:2012-03-28 06:20:08
【问题描述】:

这是我第一次尝试编写自定义 wordpress 主题,我快完成了。任何东西都有一些错误,但我尝试了几种不同的方法来修复它们,但都没有成功。

链接是 www.studiosimplicit.com/wp。

我的第一个问题是事件页面 (Www.studiosimplicit.com/wp/events) 上的 nivo 滑块。最初我遇到了插件本身的问题,图像被堆叠在一起。为了纠正这个问题,我手动输入代码来调用 nivo .js 文件,这似乎解决了这个问题。但是现在加载图像在那里,但图像没有加载。

我检查了图片的 URL,这不是问题所在。我还启用了“后缩略图”功能(如 nivoslider 网站上建议的那样,作为我的问题的常见修复),但这似乎并没有解决它。毫无价值的是,当我切换到默认主题时,滑块可以正常工作。当我激活我的自定义主题时,它会中断。

我的第二个问题是一个插件,它应该设置一个全屏背景图像,自动调整大小以适应浏览器宽度。同样,当我切换到默认主题时该插件可以工作,但当我切换到自定义主题时它会中断。

请帮忙!

【问题讨论】:

    标签: wordpress wordpress-theming


    【解决方案1】:

    听起来,您的自定义主题缺少允许插件更改/输出其代码的常用钩子。

    举个简单的例子,每个主题都应该在输出页面的<head> 部分的某处调用wp_head()。这允许插件“挂钩”到您的<head>,例如,输出代码以加载其 Javascript。

    这是一个真实的例子。 WordPress Twenty11 主题在其 header.php 文件中包含此内容(传统上是主题的一部分,输出任何页面的 <head> 部分):

    ... other <head> stuff
        wp_head();
    ?>  
    </head>
    

    WP Nivo Slider 在调用wp_enqueue_script 时使用此代码,例如,在其wp-nivo-slider.php 文件中。在幕后,wp_enqueue_script 使用 Twentyeleven 主题中的 wp_head() 钩子来输出请求的 Javascript 包含在 &lt;head&gt; 部分中(通过一个稍微迂回的路径,默认情况下以 wp_print_head_scripts 结尾。)

    因此,基本上,如果插件适用于提供的主题,但不适用于您的自定义主题,您的任务是找到插件尝试使用的主题中缺少的钩子。

    如果您查看WordPress Theme Development documentation,您会在“插件 API 挂钩”部分下找到主题应包含的挂钩列表。具体如下:

    • wp_head
    • wp_footer
    • wp_meta
    • comment_form

    对于大多数插件来说,重要的是wp_headwp_footer。这是包含大多数 Javascript 的地方,无论是在页眉部分还是页脚部分(就在结束 &lt;body&gt; 标记之前。)

    大多数插件,如 Javascript 滑块、图片库等,只需在网站的 &lt;head&gt; 或页脚部分添加一两个新脚本,并可能在 @987654343 中包含 CSS 文件以设置其内容的样式@ 部分,所以这两个通常是他们需要的唯一钩子。

    因此,我最初的建议是确保您的自定义主题在其 &lt;head&gt; 部分的末尾包含对 wp_head() 的调用(从您拥有的工作主题中复制代码)并调用wp_footer(),就在结束 &lt;/body&gt; 标记之前。这很有可能让大多数基于 Javascript 的插件正常工作。

    【讨论】:

    • 太棒了!一旦我插入这些钩子,一切就开始工作了。就 wordpress 主题而言,这绝对是我的学习经历。我有一个简单的网站可以转换为 wordpress,这对我很有帮助。解释也很详细。感谢您的时间和耐心。谢谢!
    【解决方案2】:

    仅作记录:我遇到了类似的问题,我不得不更换线路

    <?php echo get_the_content() ?>
    

    用这个:

    <?php echo the_content() ?>
    

    但我还必须按照 Matt 的解释包括 wp_head 和 wp_foot。

    【讨论】:

      【解决方案3】:

      只包含

      <?php include_once( ABSPATH . 'wp-admin/includes/plugin.php' ); ?>
      <?php wp_head()?>
      

      在 head 之前和之后它肯定会起作用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-11
        • 2023-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多