【问题标题】:php - How to use jquery correctly in .php files? WP-Admin only showing htmlphp - 如何在 .php 文件中正确使用 jquery? WP-Admin 只显示 html
【发布时间】:2016-10-07 06:50:34
【问题描述】:

我有一个 wordpress 安装,我目前正在尝试创建一个公式,在发送公式后我处理数据并将其保存到 mysql 数据库中。

为了实现这一点,我创建了一个新的 .php 文件,我将其包含在我的主题的“function.php”中,因为我想用一个简码添加整个公式/过程。

.php 文件当前包含以下内容(简体):

function FNC_Add_New_Record ()
{
    $options = "<option value='unselected'>- Select one -</option>"
        . "<option value='option1'>Option 1</option>"
        . "<option value='option2'>Option 2</option>";

    echo "<br>";
    echo "<form id='form1' method='post'>";
    echo "<div style='text-align: center;'>";
    echo "<font size=5>Selection 1</font><br>";
    echo "<input type='text' name='textfield1' placeholder='Insert caption here'><br>";
    echo "<select id='selection1'>" . $options . "</select>";
    echo "<select id='selection2'><option value='unselected'>- No option1 selected -</option></select>";
    echo "<br><br>";
    echo "</div>";

    echo "</form>";
    echo "<br>";
}
add_shortcode('FNC_Add_New_Record','FNC_Add_New_Record');

因为选择 2 取决于选择 1 所选择的内容,所以我将 jquery 添加到 .php 文件的末尾:

?><!DOCTYPE html>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script type = "text/javascript" language = "javascript">

$(document).ready(function () {
    $("#selection1").change(function () {
        var val = $(this).val();
        if (val == "option1") {
            $("#selection2").html("<option value='none'>None</option><option value='option2'>Option 2</option>");
        } else if (val == "option2") {
            $("#selection2").html("<option value='none'>None</option><option value='option2'>Option 2</option>");
        } else if (val == "unselected") {
            $("#selection2").html("<option value='unselected'>- No option1 selected -</option>");
        }
    });
});
</script>

所以,我可能做错了很多,但这是我能够让它工作的唯一方法。是的,我已经在这里和很多其他方面搜索了正确的解决方案,这些解决方案告诉我将它添加到主题的 function.php 并使用“入队”来完成。我已经尝试了所有可能的建议函数和代码 sn-ps,但没有任何效果。

我对这个解决方案的问题是它使我的 wordpress 安装的 wp-admin 无用,因为它只是将我添加到 .php 文件中的代码显示为 html。

我在访问 wp-admin 的网站上得到的信息:

我还想指出,使用标签"&lt;!DOCTYPE html&gt;" 可以解决我在添加 jquery 时遇到的另一个问题,但我不知道它是否是正确的解决方案。如果我删除我网站的主导航的这个标签,而不是像 15px 的高度突然有一个几乎整个全高清屏幕的高度。

【问题讨论】:

  • 删除 &lt;!DOCTYPE html&gt; 如果你已经在 html 中,如果你没有然后添加一个 &lt;head&gt;&lt;body&gt; 部分也
  • 我不确定我是否理解,但是 DOCTYPE 标签只是阻止了我的导航菜单变得疯狂,jquery 的主要问题存在和没有 DOCTYPE 标签
  • 你需要一个有效的 html 结构 - w3.org/TR/html401/struct/global.html 在你意识到之前不要开始编码

标签: php jquery html mysql wordpress


【解决方案1】:

Wordpress function.php 也包含所有 JS 文件,使用wp_enqueue_scripts 来排队你的脚本。

function my_scripts_loader() {
    wp_enqueue_script('myjquerylib-js', get_template_directory_uri() . '/assets/js/myjquerylib.js');

}
add_action('wp_enqueue_scripts', 'my_scripts_loader');

【讨论】:

  • 我已经做过这个和类似的解决方案,但从来没有工作过。进一步解释一下(我只是从头开始尝试):前往 jquery 站点并下载“jquery-2.2.4.js”。将其放入目录“/wp-content/themes/generatepress/js”。然后在主题的function.php中添加如下代码:function my_scripts_loader() { wp_enqueue_script('jquery-2.2.4-js', get_template_directory_uri() . '/js/jquery-2.2.4.js' , array( 'jquery' )); } add_action('wp_enqueue_scripts', 'my_scripts_loader');
  • 使用array( 'jquery' ) 你是在告诉函数你需要 jQuery 来加载 jQuery,并且由于 jQuery 没有被加入,所以它不会加载 jQuery,有点悖论,不是吗?试试:wp_enqueue_script('jquery-2.2.4-js', get_template_directory_uri() . '/js/jquery-2.2.4.js');。如果一个库依赖于 jQuery 添加array('jquery-2.2.4-js');
  • 尝试了array('jquery-2.2.4-js'); 和没有,但两者都不起作用
  • 试过wp_enqueue_script('jquery-2.2.4-js', get_template_directory_uri() . '/js/jquery-2.2.4.js');?您是否检查过它是否正在加载?
  • 使用wp_script_is 注册+入队
猜你喜欢
  • 2019-11-21
  • 1970-01-01
  • 2023-03-29
  • 2015-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多