【问题标题】:How to make chessboard.js work on a local WordPress?如何使 chessboard.js 在本地 WordPress 上运行?
【发布时间】:2014-09-14 20:01:48
【问题描述】:

我有一个带有自定义模板的“国际象棋”页面。当我在线使用cheessboard.js 脚本时没有问题。当我想使用它的下载版本并将<base href="http://chessboardjs.com/" /> 替换为本地路径时,它会在浏览器上产生以下错误:

GET http://localhost/css/chessboard.css  (index):4
GET http://localhost/js/chess.js  (index):8
GET http://localhost/js/jquery-1.10.1.min.js  (index):9
GET http://localhost/js/chessboard.js  (index):10
Uncaught ReferenceError: $ is not defined 

如何调整模板Chess.php

    ...
    <html>
<head>
    <base href="http://chessboardjs.com/" />
    <link rel="stylesheet" href="/css/chessboard.css" />
</head>
<body>
    <div id="board" style="width: 400px"></div>
    <script src="/js/chess.js"></script>
    <script src="/js/jquery-1.10.1.min.js"></script>
    <script src="/js/chessboard.js"></script>
    <script>
        var init = function() {
            var board, game = new Chess();
            var makeRandomMove = function() {
                var possibleMoves = game.moves();
                if (game.game_over() === true || game.in_draw() === true || possibleMoves.length === 0) return;
                var randomIndex = Math.floor(Math.random() * possibleMoves.length);
                game.move(possibleMoves[randomIndex]);
                board.position(game.fen());
                window.setTimeout(makeRandomMove, 500);
            };
            board = new ChessBoard('board', 'start');
            window.setTimeout(makeRandomMove, 500);
        };
        $(document).ready(init);
    </script>
</body>
</html>
    ...

【问题讨论】:

  • 浏览器 JavaScript 控制台中是否有任何错误?
  • “它不起作用”是NO错误描述

标签: javascript php wordpress chessboard.js


【解决方案1】:

&lt;base&gt; 属性 specifies the base URL to use for all relative URLs contained within a document。而且您可能将文件放在您的主题目录中,我们通过get_stylesheet_directory_uri() 得到它。

正确的是使用wp_enqueue_scripts来加载JS和CSS文件,并且只在需要的页面上加载。此外,不要将外部 jQuery 从外部源中加入队列,请使用与 WP 捆绑的一个:wp_enqueue_script('jquery');

您也可以为此create a shortcode。以下只是 /wp-content/themes/your-theme/chessboardjs/ 目录中 Chessboardjs 文件的原始示例。而模板page-chess.php是这样的:

<?php
/**
 * Template Name: Chess
 */
$base = get_stylesheet_directory_uri() . '/chessboardjs';
?><html>
<head>
    <link rel="stylesheet" href="<?php echo $base; ?>/css/chessboard-0.3.0.min.css" />
    <script src="<?php echo $base; ?>/js/chess.js"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="<?php echo $base; ?>/js/chessboard-0.3.0.min.js"></script>
</head>
<body>
    <div id="board" style="width: 400px"></div>
    <script>
        var init = function() {
            var board, game = new Chess();
            var makeRandomMove = function() {
                var possibleMoves = game.moves();
                if (game.game_over() === true || game.in_draw() === true || possibleMoves.length === 0) return;
                var randomIndex = Math.floor(Math.random() * possibleMoves.length);
                game.move(possibleMoves[randomIndex]);
                board.position(game.fen());
                window.setTimeout(makeRandomMove, 500);
            };
            var cfg = {
              pieceTheme: '<?php echo $base; ?>/img/chesspieces/wikipedia/{piece}.png',
              position: 'start'
            };
            board = new ChessBoard('board', cfg);
            window.setTimeout(makeRandomMove, 500);
        };
        jQuery(document).ready(init);
    </script>
</body>
</html>

【讨论】:

  • 谢谢,很完美;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-13
  • 2015-05-15
相关资源
最近更新 更多