私がやりたいことは、iframe に光沢のあるアプリをロードするときに、wordpress にログインしているユーザーからユーザー ID を取得することです。この変数は、ユーザー固有のデータを保存および変更するために使用できます。
次のコードをワードプレスページに追加することで、いくつかの方法が得られました。
<?php global $current_user;
get_currentuserinfo();
$user_name = $current_user->user_login;
$user_ID = get_current_user_id();
?>
そして、これをjavascript変数にします:
<script type="text/javascript">
var username = <?php echo json_encode($user_name) ?> ;
var userID = <?php echo json_encode($user_ID) ?> ;
</script>
ここに
ある例を使用すると、div ボックスをクリックすると変数を取得できます。
ui.R:
library(shiny)
shinyUI( bootstrapPage(
# include the js code
includeScript("get_user_id.js"),
# a div named mydiv
tags$div(id="mydiv",
style="width: 50px; height :50px; left: 100px; top: 100px;
background-color: gray; position: absolute"),
# an element for unformatted text
verbatimTextOutput("results")
))
サーバー.R:
shinyServer(function(input, output, session) {
output$results = renderPrint({
input$mydata
})
})
get_user_id.js:
$(document).ready(function() {
document.getElementById("mydiv").onclick = function() {
document.domain = "DOMAIN_NAME_HERE";
var username = parent.username;
var userID = parent.userID;
Shiny.onInputChange("mydata", userID);
};
});
iframe にロードされた光沢のあるアプリは wordpress ページとは別のポートにあるため、ドメイン名 (または IP) が必要であることに注意してください。iframeは次の方法で作成する必要があります。
<script type="text/javascript">
document.domain = "DOMAIN_NAME_HERE";
</script>
<iframe id="example1" style="border: none; width: 100%; height: 500px;" src="APP_URL" height="150" frameborder="0"></iframe>
しかし、私が望むのは、アプリが読み込まれるとすぐに変数を取得して、アプリで使用してデータをデータベースなど
に保存できるようにすることです。これを行う方法が見つかりませんでした。「.onload」または試したいくつかのjqueryの代替手段を使用してこれを達成できませんでした。どんなヒントでも大歓迎です。
編集: ここにも投稿: https://groups.google.com/forum/#!topic/shiny-discuss/3XM2mHuzqRs