質問編集履歴

3 ご回答いただいたヒントを元にコード修正

Yucchi

Yucchi score 21

2018/03/26 17:01  投稿

Wordpressダッシュボード上に固定ページ編集画面へのリンクボタンをカテゴリーごとに呼び出したい
まず、サイト構造上固定ページにカテゴリーを付けれるようにfunctions.phpに追記し、オリジナルのダッシュボードウィジェットを使用するため管理しやすいようadmin-menu.phpというファイルを読みこむよう設定しました。
admin-menu.phpの中でWordpressの管理画面ダッシュボードに各固定ページの編集画面へのリンクボタンを設置したのですが、
ページが多すぎてすべてのページを呼び出すととても探しにくくなっています。
ページが増える可能性があるので、ページIDで呼び出すのではなくforsearchでページを呼び出しています。
今回はこのボタンをカテゴリーごとに違うパネルで表示できたらいいと思っています。
下記が現状のコードなのですが、これに何を追記すればカテゴリーごとに記事を呼び出せるでしょうか?
どなたかお教えいただくと嬉しいです!
```javascript
//functions.php
/* 固定ページにカテゴリーを付ける */
add_action('init','add_categories_for_pages');
function add_categories_for_pages(){
register_taxonomy_for_object_type('category', 'page');
}
add_action( 'pre_get_posts', 'nobita_merge_page_categories_at_category_archive' );
function nobita_merge_page_categories_at_category_archive( $query ) {
if ( $query->is_category== true && $query->is_main_query() ) {
$query->set('post_type', array( 'post', 'page', 'nav_menu_item'));
}
}
/* END 固定ページにカテゴリーを付ける */
/* オリジナルダッシュボードウィジェットを追加 */
require get_template_directory() . '/adminmenu/admin-menu.php';
```
```javascript
//admin-menu.php
/* 各固定ページの編集画面へのリンクボタンを設置 */
function example_dashboard_widget_function() {
   echo "<ul class='adminmenu'>";
   $pages = get_pages();
 foreach( $pages as $page ) {
   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>';
 }
   echo "</ul>";
}
function example_add_dashboard_widgets() {
   wp_add_dashboard_widget('example_dashboard_widget', '各固定ページの編集', 'example_dashboard_widget_function');
   global $wp_meta_boxes;
   $normal_dashboard = $wp_meta_boxes['dashboard']['normal']['core'];
   $example_widget_backup = array('example_dashboard_widget' => $normal_dashboard['example_dashboard_widget']);
   unset($normal_dashboard['example_dashboard_widget']);
   $sorted_dashboard = array_merge($example_widget_backup, $normal_dashboard);
   $wp_meta_boxes['dashboard']['normal']['core'] = $sorted_dashboard;
}
add_action('wp_dashboard_setup', 'example_add_dashboard_widgets' );
/* END 各固定ページの編集画面へのリンクボタンを設置 */
```  
 
ヒントを頂いて上記のコードを下記の状態まで修正いたしました。  
しかし、この状態では希望した表示にはならないようです…プログラミングはまだまだ分からないのでどなたかこの先どうすればいいかお教えください。  
```javascript  
function example_dashboard_widget_function() {  
   echo "<ul class='adminmenu'>";  
   $new = new WP_Query(array(  
       'post_type' => 'page',    /* イベント投稿タイプ */  
       'category_name' => 'new', /* カテゴリのスラッグを指定 */  
       'post_status' => 'publish', /* 公開している */  
         
   ));  
 foreach( $new as $page ){  
 if ( $new->have_posts() ) :  
 while ( $new->have_posts() ) : $new->the_post();  
   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>';  
 endwhile;  
 endif;  
 }  
wp_reset_postdata();  
   echo "</ul>";  
}  
function example_add_dashboard_widgets() {  
   wp_add_dashboard_widget('example_dashboard_widget', '各固定ページの編集', 'example_dashboard_widget_function');  
   global $wp_meta_boxes;  
   $normal_dashboard = $wp_meta_boxes['dashboard']['normal']['core'];  
   $example_widget_backup = array('example_dashboard_widget' => $normal_dashboard['example_dashboard_widget']);  
   unset($normal_dashboard['example_dashboard_widget']);  
   $sorted_dashboard = array_merge($example_widget_backup, $normal_dashboard);  
   $wp_meta_boxes['dashboard']['normal']['core'] = $sorted_dashboard;  
}  
add_action('wp_dashboard_setup', 'example_add_dashboard_widgets' );  
 
```
  • JavaScript

    21054 questions

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

  • CSS

    7825 questions

    CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

  • HTML5

    5311 questions

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

  • WordPress

    9158 questions

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

2 内容の詳細を追加

Yucchi

Yucchi score 21

2018/03/16 09:56  投稿

Wordpressダッシュボード上に固定ページ編集画面へのリンクボタンをカテゴリーごとに呼び出したい
Wordpressの管理画面ダッシュボードに各固定ページの編集画面へのリンクボタンを設置したのですが、
まず、サイト構造上固定ページにカテゴリーを付けれるようにfunctions.phpに追記し、オリジナルのダッシュボードウィジェットを使用するため管理しやすいようadmin-menu.phpというファイルを読みこむよう設定しました。
admin-menu.phpの中でWordpressの管理画面ダッシュボードに各固定ページの編集画面へのリンクボタンを設置したのですが、
ページが多すぎてすべてのページを呼び出すととても探しにくくなっています。
なので、このボタンをカテゴリーごとに違うパネルで表示できたらいいと思っています。
ページが増える可能性があるので、ページIDで呼び出すのではなくforsearchでページを呼び出しています。
今回はこのボタンをカテゴリーごとに違うパネルで表示できたらいいと思っています。
下記が現状のコードなのですが、これに何を追記すればカテゴリーごとに記事を呼び出せるでしょうか?
どなたかお教えいただくと嬉しいです!
```javascript
//functions.php  
/* 固定ページにカテゴリーを付ける */  
add_action('init','add_categories_for_pages');  
function add_categories_for_pages(){  
register_taxonomy_for_object_type('category', 'page');  
}  
add_action( 'pre_get_posts', 'nobita_merge_page_categories_at_category_archive' );  
function nobita_merge_page_categories_at_category_archive( $query ) {  
if ( $query->is_category== true && $query->is_main_query() ) {  
$query->set('post_type', array( 'post', 'page', 'nav_menu_item'));  
}  
}  
/* END 固定ページにカテゴリーを付ける */  
 
/* オリジナルダッシュボードウィジェットを追加 */  
require get_template_directory() . '/adminmenu/admin-menu.php';  
```  
```javascript  
//admin-menu.php  
/* 各固定ページの編集画面へのリンクボタンを設置 */  
function example_dashboard_widget_function() {
   echo "<ul class='adminmenu'>";
   $pages = get_pages();
 foreach( $pages as $page ) {
   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>';
 }
   echo "</ul>";
}
function example_add_dashboard_widgets() {
   wp_add_dashboard_widget('example_dashboard_widget', '各固定ページの編集', 'example_dashboard_widget_function');
   global $wp_meta_boxes;
   $normal_dashboard = $wp_meta_boxes['dashboard']['normal']['core'];
   $example_widget_backup = array('example_dashboard_widget' => $normal_dashboard['example_dashboard_widget']);
   unset($normal_dashboard['example_dashboard_widget']);
   $sorted_dashboard = array_merge($example_widget_backup, $normal_dashboard);
   $wp_meta_boxes['dashboard']['normal']['core'] = $sorted_dashboard;
}
add_action('wp_dashboard_setup', 'example_add_dashboard_widgets' );
```
/* END 各固定ページの編集画面へのリンクボタンを設置 */
```
  • JavaScript

    21054 questions

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

  • CSS

    7825 questions

    CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

  • HTML5

    5311 questions

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

  • WordPress

    9158 questions

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

1 誤字

Yucchi

Yucchi score 21

2018/03/15 16:09  投稿

Wordpressの管理画面ダッシュボードに各固定ページの編集画面へのリンクボタンを設置したのですが、
ページが多すぎてすべてのページを呼び出すととても探しにくくなっています。
なので、このボタンをカテゴリーごとに違うパネルで表示できたらいいと思っています。
下記が現状のコードなのですが、これに何を追記すればカテゴリーごとに記事を呼び出せるでしょうか?
どなたかお教えいただくと嬉しいです!
```javascript
function example_dashboard_widget_function() {
echo "<ul class='adminmenu'>";
$pages = get_pages();
foreach( $pages as $page ) {
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>';
}
echo "</ul>";
}
function example_add_dashboard_widgets() {
wp_add_dashboard_widget('example_dashboard_widget', '各固定ページの編集', 'example_dashboard_widget_function');
global $wp_meta_boxes;
$normal_dashboard = $wp_meta_boxes['dashboard']['normal']['core'];
$example_widget_backup = array('example_dashboard_widget' => $normal_dashboard['example_dashboard_widget']);
unset($normal_dashboard['example_dashboard_widget']);
$sorted_dashboard = array_merge($example_widget_backup, $normal_dashboard);
$wp_meta_boxes['dashboard']['normal']['core'] = $sorted_dashboard;
}
add_action('wp_dashboard_setup', 'example_add_dashboard_widgets' );
```
  • JavaScript

    21054 questions

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

  • CSS

    7825 questions

    CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

  • HTML5

    5311 questions

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

  • WordPress

    9158 questions

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

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る