まず、サイト構造上固定ページにカテゴリーを付けれるようにfunctions.phpに追記し、オリジナルのダッシュボードウィジェットを使用するため管理しやすいようadmin-menu.phpというファイルを読みこむよう設定しました。
admin-menu.phpの中でWordpressの管理画面ダッシュボードに各固定ページの編集画面へのリンクボタンを設置したのですが、
ページが多すぎてすべてのページを呼び出すととても探しにくくなっています。
ページが増える可能性があるので、ページIDで呼び出すのではなくforsearchでページを呼び出しています。
今回はこのボタンをカテゴリーごとに違うパネルで表示できたらいいと思っています。
下記が現状のコードなのですが、これに何を追記すればカテゴリーごとに記事を呼び出せるでしょうか?
どなたかお教えいただくと嬉しいです!
javascript
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';
javascript
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 各固定ページの編集画面へのリンクボタンを設置 */
ヒントを頂いて上記のコードを下記の状態まで修正いたしました。
しかし、この状態では希望した表示にはならないようです…プログラミングはまだまだ分からないのでどなたかこの先どうすればいいかお教えください。
javascript
1function 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' ); 29
回答1件
あなたの回答
tips
プレビュー