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

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

新規登録して質問してみよう
ただいま回答率
85.48%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

WordPress

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

PHP

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

JavaScript

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

Q&A

解決済

1回答

451閲覧

(再質問)Wordpressダッシュボード上に各固定ページ編集画面への直リンクボタンをカテゴリーごとに呼び出したい

Yucchi

総合スコア29

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

WordPress

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

PHP

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

JavaScript

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

0グッド

0クリップ

投稿2018/03/27 05:56

先日一度質問させていただいたのですが、内容がごちゃごちゃしてしまっているので再度質問させてください。
自分でも調べて考えてみたのですが、プログラミングはまだまだ分からず未だ解決できないのでどなたかご協力いただければと思います。

まず、サイト構造上固定ページにカテゴリーを付けれるようにfunctions.phpに追記し、オリジナルのダッシュボードウィジェットを使用するため管理しやすいようadmin-menu.phpというファイルを読みこむよう設定しました。

php

1//functions.php 2/* 固定ページにカテゴリーを付ける */ 3add_action('init','add_categories_for_pages'); 4function add_categories_for_pages(){ 5register_taxonomy_for_object_type('category', 'page'); 6} 7add_action( 'pre_get_posts', 'nobita_merge_page_categories_at_category_archive' ); 8function nobita_merge_page_categories_at_category_archive( $query ) { 9if ( $query->is_category== true && $query->is_main_query() ) { 10$query->set('post_type', array( 'post', 'page', 'nav_menu_item')); 11} 12} 13/* END 固定ページにカテゴリーを付ける */ 14 15/* オリジナルダッシュボードウィジェット用ファイル追加 */ 16require get_template_directory() . '/adminmenu/admin-menu.php';

追加したadmin-menu.phpの中でWordpressの管理画面ダッシュボードに各固定ページの編集画面への直リンクボタンを設置したのですが、
ページ数が多すぎてすべてのページを呼び出すととても探しにくくなっています。
ページが増える可能性があるので、ページIDで呼び出すのではなくforsearchでページを呼び出しています。

php

1//admin-menu.php 2/* 各固定ページの編集画面へのリンクボタンを設置 */ 3function example_dashboard_widget_function() { 4 echo "<ul class='adminmenu'>"; 5 $pages = get_pages(); 6 foreach( $pages as $page ) { 7 echo '<li><a href="post.php?post='. $page->ID . '&action=edit"><div class="dashicons fa fa-pencil-square-o"></div><p>' . $page->post_title . '<br>ページ編集</p></a></li>'; 8 } 9 echo "</ul>"; 10} 11function example_add_dashboard_widgets() { 12 wp_add_dashboard_widget('example_dashboard_widget', '各固定ページの編集', 'example_dashboard_widget_function'); 13 global $wp_meta_boxes; 14 $normal_dashboard = $wp_meta_boxes['dashboard']['normal']['core']; 15 $example_widget_backup = array('example_dashboard_widget' => $normal_dashboard['example_dashboard_widget']); 16 unset($normal_dashboard['example_dashboard_widget']); 17 $sorted_dashboard = array_merge($example_widget_backup, $normal_dashboard); 18 $wp_meta_boxes['dashboard']['normal']['core'] = $sorted_dashboard; 19} 20add_action('wp_dashboard_setup', 'example_add_dashboard_widgets' ); 21/* END 各固定ページの編集画面へのリンクボタンを設置 */

今回はこのボタンをカテゴリーごとに違うパネルで表示できたらいいと思っています。
下記は完成希望図です。
イメージ説明

前回の質問時にいただいたヒントや検索などで自分で行き着いたコードが下記2種類ですがどちらも希望した結果とは程遠いです…
①条件を指定したカテゴリー内のページ名が表示され編集画面へのリンクも設定されるが、指定したカテゴリー内2ページあるうち最初の1ページ分の編集画面へのリンクとページ名しか表示されない上に、helloworldのページの編集画面へのリンクボタンも生成されてしまう。

php

1unction example_dashboard_widget_function() { 2 echo "<ul class='adminmenu'>"; 3 $new = new WP_Query(array( 4 'post_type' => 'page', 5 'category_name' => 'new', 6 'post_status' => 'publish', 7 8 )); 9 foreach( $new as $page ){ 10 if ( $new->have_posts() ) : 11 while ( $new->have_posts() ) : $new->the_post(); 12 echo '<li><a href="post.php?post='. $page->ID . '&action=edit"><div class="dashicons fa fa-pencil-square-o"></div><p>' . $page->post_title . '<br>ページ編集</p></a></li>'; 13 endwhile; 14 endif; 15 } 16wp_reset_postdata(); 17 echo "</ul>"; 18} 19function example_add_dashboard_widgets() { 20 wp_add_dashboard_widget('example_dashboard_widget', '各固定ページの編集', 'example_dashboard_widget_function'); 21 global $wp_meta_boxes; 22 $normal_dashboard = $wp_meta_boxes['dashboard']['normal']['core']; 23 $example_widget_backup = array('example_dashboard_widget' => $normal_dashboard['example_dashboard_widget']); 24 unset($normal_dashboard['example_dashboard_widget']); 25 $sorted_dashboard = array_merge($example_widget_backup, $normal_dashboard); 26 $wp_meta_boxes['dashboard']['normal']['core'] = $sorted_dashboard; 27} 28add_action('wp_dashboard_setup', 'example_add_dashboard_widgets' );

②条件を指定したカテゴリーのページ数2ページ分のボタンだけは生成されるが、ボタンのページ名が表示されなく、リンクも生成されません。

php

1function example_dashboard_widget_function() { 2 echo "<ul class='adminmenu'>"; 3 query_posts( 'post_type=page&category_name=new' ); 4 if ( have_posts() ) : while ( have_posts() ) : the_post(); 5 echo '<li><a href="post.php?post='. $page->ID . '&action=edit"><div class="dashicons fa fa-pencil-square-o"></div><p>' . $page->post_title . '<br>ページ編集</p></a></li>'; 6 endwhile; endif; 7 wp_reset_query(); 8 echo "</ul>"; 9} 10function example_add_dashboard_widgets() { 11 wp_add_dashboard_widget('example_dashboard_widget', '各固定ページの編集', 'example_dashboard_widget_function'); 12 global $wp_meta_boxes; 13 $normal_dashboard = $wp_meta_boxes['dashboard']['normal']['core']; 14 $example_widget_backup = array('example_dashboard_widget' => $normal_dashboard['example_dashboard_widget']); 15 unset($normal_dashboard['example_dashboard_widget']); 16 $sorted_dashboard = array_merge($example_widget_backup, $normal_dashboard); 17 $wp_meta_boxes['dashboard']['normal']['core'] = $sorted_dashboard; 18} 19add_action('wp_dashboard_setup', 'example_add_dashboard_widgets' );

”post.php?post='. $page->ID . '&action=edit”の部分のpageIDの呼び出しと、” . $page->post_title .”のページタイトルの呼び出し方が悪いのでしょうか…
どなたかお分かりになる方がいらっしゃいましたらお教えください。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

一番初めに使っていた $pages = get_pages();の部分を$pages = query_posts('post_type=page&category_name=old-nenkin');に変更するだけでした。
ご協力ありがとうございました。

php

1function example_dashboard_widget_function() { 2 echo "<ul class='adminmenu'>"; 3 $pages = query_posts('post_type=page&category_name=old-nenkin'); 4 foreach( $pages as $page ) { 5 echo '<li><a href="post.php?post='. $page->ID . '&action=edit"><div class="dashicons fa fa-pencil-square-o"></div><p>' . $page->post_title . '<br>ページ編集</p></a></li>'; 6 } 7 echo "</ul>"; 8}

投稿2018/03/27 06:23

Yucchi

総合スコア29

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問