質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.60%

  • PHP

    19845questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • JavaScript

    15920questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • WordPress

    6965questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

wordpressのbuddypressで音楽を再生する方法

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 347

SoraSue

score 24

前提・実現したいこと

現在、wordpressのbuddypressを使って、SNS×ToDoリストのようなサイトを作っています。

発生している問題・エラーメッセージ

特定の条件を満たした時、自動で音楽を再生するようにしたいのですが、<audio>タグでファイルを指定しても、音楽が再生されません。

該当のソースコード

<!DOCTYPE HTML>
<html>
//文字制限のために、幾つか本件に関係の薄い部分を省略させていただいています。
<script type="text/javascript" >
$(document).ready(function(){
  (function(){
      $.ajax({
              type: 'POST',
              url: ajaxurl,
              data: {
                      'action' : 'GetMyToDo'
                    }
      }).done(function( data ){
                var MyToDoList = data;
                var MyToDo = MyToDoList.split(",");
                $.ajax({
                        type: 'POST',
                        url: ajaxurl,
                        data: {
                                'action' : 'GetDay',
                                'MyToDo' : MyToDo
                              }
                }).done(function( data ){
                          var DayList = data;
                          var Day = DayList.split(",");
                          for(i=0; i<MyToDo.length; i++){
                          var MyToDoList = $(".ToDo_Ul").append("<li class='todo'>" + MyToDo[i] + "</li>");
                          var DayList = $(".ToDo_Ul").append("<li class='made_date'>" + Day[i] + "</li>");
                          $("#ToDo_Box").append(MyToDoList);
                          $("#ToDo_Box").append(DayList);
                          if($('.todo').text()==""){
                            $('.todo').remove();
                            $('.made_date').remove();
                          }else{}
                          }
                          function CheckTaskDate(){
                           }CheckTaskDate();setInterval(CheckTaskDate, 60000);
                        }).always(function( data ) {
                          function Check(){
                          var Now = new Date();
                          var hours = Now.getHours();
                          var minutes = Now.getMinutes();
                          var seconds = Now.getSeconds();
                          var CheckYear = Now.getFullYear();
                          var CheckMonth = Now.getMonth()+1;
                          var CheckDate = Now.getDate() - 1;
                          var CheckHour = 0;
                          var CheckMinute = 0;
                          var CheckSecond = 0;
                          var NowList = $('.ToDo_Ul').text();
                          $.ajax({
                                  type: 'POST',
                                  url: ajaxurl,
                                  data: {
                                          'action' : 'ErrorSound'},
                          }).done(function( data ){
                          })                        
                             if(hours*60*60+minutes*60+seconds>CheckHour*60*60+CheckMinute*60+CheckSecond){                      
                            $.ajax({
                                    type: 'POST',
                                    url: ajaxurl,
                                    data: {
                                            'action' : 'CheckToDo',                                                                                           
                                          },
                            }).done(function( data ){                                 
                                      var LastList = data;                                  
                                      if(NowList == LastList){
                                        alert("今日はまだToDoリストを編集していません。早くToDoを入力してください。");
                                      }
                                      else{                                       
                                        $.ajax({
                                                type: 'POST',
                                                url: ajaxurl,
                                                data: {
                                                          'action' : 'ToDos',                                                         'NowList' : NowList
                                                      },
                                        }).done(function( data ){
                                        })
                                      }
                                    })
                          }
                        }Check();
                        setInterval(Check, 60000);
                        });                  
    })      
  }());
//文字制限のために、幾つか本件に関係の薄い処理を省略させていただいています。
});
</script>
</head>
<body>
<div id="container">
<!--<audio src="ErrorSound1.mp3" type="audio/mp3" autoplay loop></audio>-->
<form action="bp-custom.php" method="post">
<textarea id="memo" name="memo"></textarea>
<p><form action="bp-custom.php" method="post" id="DateBox" style="display:inline;">
<label>締め切り:<input type="text" id="TaskDate" name="TaskDate" placeholder="yyyy-mm-dd(例:2016-01-09)"  required></label>
<input type="button" id="save" value="保存" >
</form></p></form>
<div id="ToDo_Box">
<div id="loading" />
<ul class="ToDo_Ul">
</ul></div></div></body></html>

  

function add_my_ajaxurl() {
?>
    <script>
        var ajaxurl = '<?php echo admin_url( 'admin-ajax.php'); ?>';
    </script>
<?php
}
add_action( 'wp_head', 'add_my_ajaxurl', 1);

function GetMyToDo(){
    if ( bp_has_members( bp_ajax_querystring( 'members' ) ) ) :
    while ( bp_members() ) : bp_the_member();
    global $wpdb,$bp;
    $MyUserID = $bp->loggedin_user->id;
    $MyToDo = $wpdb->get_results("
    SELECT meta_value
    FROM $wpdb->usermeta
    WHERE user_id = $MyUserID
    AND meta_key = 'ToDoList'
    ", ARRAY_A  );
    foreach((array)$MyToDo as $item) {
    $MyToDoList[] = $item['meta_value'] ? $item['meta_value'] : "NULL";
    }
    $MyToDoList = join(",",$MyToDoList);
    echo $MyToDoList ;
    die();
    endwhile ;
    endif;
    }
    add_action( 'wp_ajax_GetMyToDo', 'GetMyToDo' );

 function GetDay(){
    if ( bp_has_members( bp_ajax_querystring( 'members' ) ) ) :
    while ( bp_members() ) : bp_the_member();
    global $wpdb,$bp;
    $MyUserID = $bp->loggedin_user->id;
    $Day = $wpdb->get_results("
    SELECT PlanDate
    FROM $wpdb->usermeta
    WHERE user_id = $MyUserID
    AND meta_key = 'ToDoList'
    ", ARRAY_A  );
    foreach((array)$Day as $item) {
    $DayList[] = $item['PlanDate'] ? $item['PlanDate'] : "NULL";
    }
    $DayList = join(",",$DayList);
    echo $DayList;
    die();
    endwhile ;
    endif;
    }
    add_action( 'wp_ajax_GetDay', 'GetDay' );

function ErrorSound(){
   if ( bp_has_members( bp_ajax_querystring( 'members' ) ) ) :
   while ( bp_members() ) : bp_the_member();
   $member_cover_image_url = bp_attachments_get_attachment('url', array(
  'object_dir' => 'error_sound',
  'item_id' => bp_get_error_sound(),
  ));
  ?>
  <audio src="<?php echo ErrorSound1.mp3; ?>" type="audio/mp3" autoplay loop></audio>
  <?php
  endwhile ;
  endif;
  }
  add_action( 'wp_ajax_ErrorSound', 'ErrorSound' );

function CheckToDo(){
  if ( bp_has_members( bp_ajax_querystring( 'members' ) ) ) :
  while ( bp_members() ) : bp_the_member();
  global $wpdb,$bp;
  $MyUserID = $bp->loggedin_user->id;
  $NowList = filter_input(INPUT_POST, 'NowList');
  $Now = new DateTime();
  $Now = $Now->setTimeZone( new DateTimeZone('Asia/Tokyo'));
  $NowDate = $Now->format(Ymd);
  $LastList = $wpdb->get_results("
  SELECT meta_value
  FROM $wpdb->usermeta
  WHERE user_id = $MyUserID
  AND meta_key = 'checkToDo'
  AND Date != $NowDate
  ", ARRAY_A  );
  foreach((array)$LastList as $item) {
  $LastList = $item['meta_value'] ;
  }
  echo $LastList;
  die();
  endwhile ;
  endif;
  }
  add_action( 'wp_ajax_CheckToDo', 'CheckToDo' );

function ToDos(){
  if ( bp_has_members( bp_ajax_querystring( 'members' ) ) ) :
  while ( bp_members() ) : bp_the_member();
  global $wpdb,$bp;
  $MyUserID = $bp->loggedin_user->id;
  $NowList = filter_input(INPUT_POST, 'NowList');
  $Now = new DateTime();
  $Now = $Now->setTimeZone( new DateTimeZone('Asia/Tokyo'));
  $NowDate = $Now->format(Ymd);
  $NowTime = $Now->format(His);
  $wpdb->update($wpdb->usermeta,
  array('meta_value' => $NowList,
  'Date' => $NowDate,
  'Time' => $NowTime),
   array('user_id' => $MyUserID,
    'meta_key' => 'checkToDo',),
   array('%s'),
   array('%d','%s')
   );
/* $ErrorSound = wp_enqueue_script( 'ErrorSound1.mp3', false, array(), false, false );
  echo $ErrorSound;*/
  die();
  endwhile ;
  endif;
  }
add_action( 'wp_ajax_ToDos', 'ToDos' );
//文字制限のために、幾つか本件に関係の薄い処理を省略させていただいています。

  

試したこと  

まず、HTML5の<audio>タグを使ってみましたり、buddypressのcodexを参考に、function "ErrorSound"を作ってみたりしましたが、音楽は流れませんでした。  

補足情報  

今はローカル開発環境上で作っていおり、ブラウザはchromeを利用しています。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+2

回答になっていませんが、こうではないですか?

<!-- <audio src="<?php echo ErrorSound1.mp3; ?>" type="audio/mp3" autoplay loop></audio> -->
<audio src="<?php echo get_stylesheet_directory_uri() . '/audio/ErrorSound1.mp3'; ?>" type="audio/mp3" autoplay loop></audio>
  • 引用符をつける。
  • ファイルを絶対パスで記述する。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/01/08 22:54

    音楽ファイルを、使っているテーマのファイルの中に入れて、mizさんが教えてくれたコードを使うと音楽を流せました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.60%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • PHP

    19845questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • JavaScript

    15920questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • WordPress

    6965questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。