我正在创建一个动态自定义菜单,其中显示了某个类别的所有帖子链接,例如侧边栏中的菜单小部件。它应该是动态的,这意味着无论何时我在该类别中发帖,菜单都应该包含我制作的帖子,而不必在物理上拖动和放置。在菜单中删除一个新帖子。
这是我的代码:(我想要的帖子的类别ID: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,所以请原谅任何愚蠢的错误。
答案 0 :(得分:0)
在functions.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); ?>
答案 1 :(得分:0)
你可以做得更好:
在主题地图中,创建名为 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'); ?>
这将包括您想要的侧边栏。