ツリー表示は諦めるか、そのうち自作するかと考えていたんですが、たまたま wp-dtree のスクリプトエラーを見てみたら意外と問題は単純そうでした。
※その後、ふとしたタイミングでもしかしたら「未分類」カテゴリーの記事が無いために発生しているのかと思って、試しに「未分類」カテゴリーの記事を追加したら、そもそも回避コードを使わずともエラーが無くなりました・・・。
- 「未分類」カテゴリーの記事が無くて wp-dtree が表示されない場合に下記コードを検討してください。
- 自分の試した環境では「未分類」カテゴリーの記事があっても wp-dtree の動作には問題なく、ツリーノードに「未分類」が表示されました。
ブラウザのコンソールに表示されるエラーメッセージ
SyntaxError: syntax error cat1.a(,0,'','','?p=123','',''); ?cat=6 (307 行目, 7 列目) ReferenceError: cat1 is not defined ...cript><script type='text/javascript'>cat1.openTo('-6', true); /*wp_query object ... ?cat=6 (309 行目)
SyntaxError のリンクを辿って行くと表示ページの 307 行目に移動。
var cat1 = new wpdTree('cat1', 'http://WordPressのURL','0'); cat1.config.useLines=1; cat1.config.useIcons=0; cat1.config.closeSameLevel=1; cat1.config.folderLinks=0; cat1.config.useSelection=0; cat1.a(0,'root','','','','',''); cat1.a(-6,0,'カテゴリー1','','?cat=6','',''); cat1.a(-12,0,'カテゴリー2','','?cat=12','',''); cat1.a(-7,0,'カテゴリー3','','?cat=7','',''); cat1.a(,0,'','','?p=123','',''); //←ここで失敗 document.write(cat1);
wp-dtree のソースコードを調べてみると、この cat1 を生成しているのは wp-dtree-build.php ファイルの wpdt_build_tree 関数内で、WP-dTree 4.3.1 では 48 行目に記述があります。
$tree .= "{$t}.a({$nodedata['id']},{$nodedata['pid']},'{$nodedata['name']}','{$nodedata['title']}','{$nodedata['url']}','{$target}','{$rsspath}');\n";
おそらく id が null の時を判定して cat1 追加を行わないようにするのがいいような気がしますが、url に 'p' が含まれている場合でも判定条件に使えるので下記コードでエラーを回避しました。
// 元々のコード // $tree .= "{$t}.a({$nodedata['id']},{$nodedata['pid']},'{$nodedata['name']}','{$nodedata['title']}','{$nodedata['url']}','{$target}','{$rsspath}');\n"; // {$nodedata['id'] が空になり $nodedata['url'] に "p" が含まれているためか、cat1 変数の作成に失敗? // 回避コード if (strpos($nodedata['url'],'p') == false) { $tree .= "{$t}.a({$nodedata['id']},{$nodedata['pid']},'{$nodedata['name']}','{$nodedata['title']}','{$nodedata['url']}','{$target}','{$rsspath}');\n"; }
0 件のコメント:
コメントを投稿