先日一度質問させていただいたのですが、内容がごちゃごちゃしてしまっているので再度質問させてください。
自分でも調べて考えてみたのですが、プログラミングはまだまだ分からず未だ解決できないのでどなたかご協力いただければと思います。
まず、サイト構造上固定ページにカテゴリーを付けれるように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 .”のページタイトルの呼び出し方が悪いのでしょうか…
どなたかお分かりになる方がいらっしゃいましたらお教えください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。