Я создаю динамическое настраиваемое меню, в котором отображаются все ссылки сообщений, такие как виджет меню на боковой панели, определенной категории. Он должен быть динамичным, что означает, что всякий раз, когда я делаю сообщение в этой категории, меню должно включать сообщение, которое я сделал без меня, чтобы физически перетащить и удалить новую запись в меню.
Вот мой код: (идентификатор категории, в котором я хочу: 4)
<div class="col-md-4 enigma-sidebar"> <?php if ( is_active_sidebar( 'sidebar-primary' ) ) { dynamic_sidebar( 'sidebar-primary' ); } else { $args = array( 'before_widget' => '<div class="enigma_sidebar_widget">', 'after_widget' => '</div>', 'before_title' => '<div class="enigma_sidebar_widget_title"><h2>', 'after_title' => '</h2></div>' ); the_widget('WP_Widget_Archives', null, $args); } ?> <?php /*Menu Loop*/ function menu1_loop() { global $post; $args = array( 'type' => 'post', 'orderby' => 'date', 'order' => 'ASC', 'hide_empty' => 1, 'include' => '4', 'number' => '', 'taxonomy' => 'category', ); $categories = get_categories( $args ); foreach($categories as $category) { // WP_Query arguments $args = array ( 'category_name' => 'cat-html', 'order' => 'ASC', 'orderby' => 'date', ); // The Query $query = new WP_Query( $args ); //Loop if ( $query->have_posts() ) { /*echo "<div>"; */ while ( $query->have_posts() ) { $post.the_permalink(); $post.the_title(); /*echo "<li><a href=".the_permalink().">".the_title()."</a></li>";*/ $query->the_post(); } /*echo "</div>";*/ } // Restore Original post data wp_reset_postdata(); } } ?> <!-- # Added by Aryansh Malviya(ARVIS APPS) on Saturday, December 12th, 2015 # Added to make a custom menu for specific task // begins --> <?php wp_nav_menu( array( 'theme_location' => 'html-menu', 'container_class' => 'enigma_sidebar_widget' ) /*.menu1_loop()*/ ); ?> <?php wp_nav_menu( array( 'theme_location' => 'php-menu', 'container_class' => 'enigma_sidebar_widget' ) ); ?> <!-- // ends --> </div>
Этот код не делает то, что, как я думаю, должен делать, вот картина, показывающая, что это значит:
Я не знаком ни с WordPress, ни с PHP, поэтому, пожалуйста, простите любые глупые ошибки.
В функции.php добавьте эту функцию:
function getPostsByCategoryID($categoryID) { $args = array( 'posts_per_page' => -1, 'offset' => 0, 'category' => $categoryID, 'orderby' => 'date', 'order' => 'ASC', 'post_type' => 'post', 'post_status' => 'publish', ); $allposts = get_posts( $args ); foreach ( $allposts as $p ): echo '<li><a href="'. get_permalink($p->ID) . '">' . get_the_title($p->ID) . '</a></li>'; endforeach; }
Используйте его так, как показано на боковой панели или где хотите:
<?php getPostsByCategoryID(HERE_THE_CATEGORY_ID); ?>
Например:
<?php getPostsByCategoryID(4); ?>
Вы можете это сделать лучше:
На вашей тематической карте создайте файл с именем sidebar-custom1.php и скопируйте этот код:
<div class="col-md-4 enigma-sidebar"> <div class="enigma_sidebar_widget"> <div class="enigma_sidebar_widget_title"> <h2>Sidebar title</h2> <?php getPostsByCategoryID(4); ?> </div> </div> </div>
Затем на странице, которую вы хотите вызвать на боковой панели, вы вставляете этот код:
<?php get_sidebar('custom1'); ?>
Это будет включать боковую панель, где бы вы ни хотели.