WordPress动态自定义菜单未显示正确结果。

5

我正在创建一个动态自定义菜单,它显示特定类别的所有文章链接,就像侧边栏中的菜单小部件一样。它应该是动态的,也就是说,每当我在该类别中发布一篇文章时,菜单都应该包括我的最新文章,而不需要我手动拖放新的文章到菜单中。

这是我的代码:(我想要哪个类别的文章的类别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>

这段代码并没有按照我的想法执行,下面是一张图片展示了代码的结果:Menu Problem ARVIS APPS

我不熟悉WordPress和PHP,请谅解我可能会犯一些小错误。

2个回答

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); ?>

现在它显示的是不同的东西.. http://i.imgur.com/cSAOa0g.png 它正在显示导航栏菜单选项... 我想要的是类别“HTML”的帖子标题,这也是我代码中遇到的问题... 你的和我的代码工作方式相同... 必须有一些解决方案。 - 4127157
基本上是获取主菜单的自定义链接及其标题。 - 4127157
现在我已经从导航栏中删除了菜单,因此它向我显示的是我拥有的类别,而不是这些类别内部文章的标题。 - 4127157
是的,在这里:http://pastebin.com/HVuX8nbP,看我是如何调用它的。这些是我使用wp_nav_menu添加的菜单。如果你也想要它们的代码,请告诉我。 - 4127157
现在我真的不明白你想做什么。你想在侧边栏中显示特定类别的文章吗?那么为什么要在小部件div中使用wp_nav_menu()函数呢? - metad00r
显示剩余2条评论

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'); ?>

这将在您想要的任何位置包括侧边栏。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接