• 解決済 Hidekazu Ishikawa

    (@kurudrive)


    毎度大変お世話になります m(TーT)m

    管理画面のダッシュボード画面で
    “ダッシュボード”という文字とウィジェットの間にhtml(php)を挿入したく格闘しています。

    add_action( 'admin_head-index.php', 'change_dashboard' );
    function change_dashboard() { ?>
        <script type="text/javascript">
            jQuery(document).ready(function($){
    	$("#icon-index").next("h2").after("<?php get_template_part('module_dashboard'); ?>");
            });
        </script>
    <?php }

    で module_dashboard.phpに書けばいけるのでは・・・

    と思ったのですが、テキストだけなら大丈夫ですがhtmlはダメでした…。

    あとは、

    function dashboard_settings() {
    	echo '</ul></div>';
    	get_template_part('module_dashboard');
    	echo '<div><ul>'
    }
    add_action('adminmenu-index.php','dashboard_settings');

    と書いて、 h2 の前に出力し、挿入した module_dashboard.php の下に「ダッシュボード」の文字が表示されるので、これをcss等で消して、module_dashboard.php の最初に 「ダッシュボード」と手打ちする方法はあるのですが、これだとダッシュボードだけでなく全てのページに表示されてしまうので、他のページはCSSで非表示は可能だと思うのですが、強引なやり方なのであまりよろしくないかなと思っています。

    何かスマートな書き方があればご教授いただけると助かります。
    毎度毎度教えていただいてばかりで恐縮ですがよろしくお願いいたします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • で module_dashboard.phpに書けばいけるのでは・・・
    と思ったのですが、テキストだけなら大丈夫ですがhtmlはダメでした…。

    htmlでも行けますよ。

    $("#icon-index").next("h2").after("<?php get_template_part('module_dashboard'); ?>");

    $("#icon-index").next("h2").after('<?php get_template_part('module_dashboard'); ?>');

    に書き換えて、module_dashboardの中に書いてあるHTMLのclass等の属性はすべて「’」シングルコートではなく「”」ダブルコートで囲ってみてください。

    要はシングルコートとダブルコートが入り乱れちゃって、jQueryにHTMLを渡した時にコードが崩れちゃってるんです。

    トピック投稿者 Hidekazu Ishikawa

    (@kurudrive)

    horikeさん

    いつも本当に有難うございます。
    試してみたところ1行だと大丈夫ですが、
    module_dashboardの中のソースに改行が入った時点で動作しなくなってしまいましたので、やはりjQueryで挿入するには無理があったのかなぁと感じました。

    毎度毎度お手を煩わすのも恐縮なので、とりあえず今回の所は

    function dashboard_settings() {
    	echo '</ul></div>';
    	get_template_part('module_dashboard');
    	echo '<div><ul>'
    }
    add_action('adminmenu-index.php','dashboard_settings');

    で、管理画面(の全てのページ)に出力し、cssで非表示にしつつ、
    ダッシュボード画面だけは

    add_action( 'admin_head-index.php', 'dashboardHeadCustom' );
    function dashboardHeadCustom() { ?>
        <script type="text/javascript" charset="utf-8">
    		function addDashBoardBodyClass(){
    			// 現状のクラス名を取得して投稿ステータスを足す
    			var newClass = document.getElementsByTagName("body")[0].className + " dashboard";
    			// 現状のクラス名を置き換える
    			document.getElementsByTagName("body")[0].setAttribute("class",newClass);
    		}
    		window.onload = addDashBoardBodyClass;
        </script>
    <?php }

    で body タグに dashboard というクラス名を追加して、
    body.dashboard の場合は module_dashboard の内容をCSSで表示するという形で今回は逃げようと思います。

    module_dashboard.php の内容が複数行に渡るphpの場合において、
    今後もし誰かよい方法がありましたら、後学&同じ事をしようとする人の為にご記入いただければと思います。
    ※勿論自力で打開策が見つかりましたら追記しておきます。

    ありがとうございました。

    改行であれば

    $("#icon-index").next("h2").after($.trim('<?php get_template_part('module_dashboard'); ?>)');

    で取り除けますが如何でしょう?

    そもそも、HTMLであれば、エディタ上の改行は必要ないかと思いますが、1行でHTMLを書いてしまうわけにはいかないでしょうか?

    トピック投稿者 Hidekazu Ishikawa

    (@kurudrive)

    horikeさん

    うぉ!そんな手段が!なるほど。

    ちなみに今回挿入したかったのは外部の新着情報をRSSで読み込んで表示させたかったので、改行無しで書くと後で何が何やらわからなくなってしまいますし、” も ‘も多数存在してるので、ちょっと厳しかったのです。

    でも 読み込む module_dashboard.php は普通に書いて改行やタブをphpで取り除けばいけますね。

    参考になります。ありがとう御座います!

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「管理画面ダッシュボードにhtml(php)を挿入したい」には新たに返信することはできません。