0

表示しているページに基づいてメニュー項目のリストを作成しようとしています。たとえば、履歴ページにいる場合、履歴の下のすべてのサブカテゴリとこれらのサブカテゴリ内の投稿を含むメニューがあります。また、メニュー項目はクリック可能でなければなりません。

だから基本的に私はこれが欲しい:

MAIN CAT = pagename

SUB CAT1
- post1
- post2

SUB CAT2
- post1
- post2

これまでに私が一緒にハッキングしたものは次のとおりです。

<div id="menu">
<ul>
    <?php
    $page_title = wp_title();
    preg_replace( "/[^a-z0-9 ]/i", "", $page_title);
    strtolower($page_title);

    $cat_id = get_cat_ID($page_title);
    //get terms (e.g. categories or post tags), then display all posts in each retrieved term
    $taxonomy = 'category';//  e.g. post_tag, category
    $param_type = 'category__in'; //  e.g. tag__in, category__in
    $term_args=array(
      'orderby' => 'name',
      'order' => 'ASC',
      'child_of' => '$cat_id'
    );
    $terms = get_terms($taxonomy,$term_args);
    if ($terms) {
      foreach( $terms as $term ) {
        $args=array(
          "$param_type" => array($term->term_id),
          'post_type' => 'post',
          'post_status' => 'publish',
          'showposts' => -1,
          'ignore_sticky_posts'=> 1
          );
        $my_query = null;
        $my_query = new WP_Query($args);
        if( $my_query->have_posts() ) {

          echo '<li><a href="' . get_category_link( $term->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $term->name ) . '" ' . '>' . $term->name. '</a> ';

          while ($my_query->have_posts()) : $my_query->the_post(); ?>
            <ul><li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></li></ul>
           <?php
                 endwhile;
        }
      }
    }
    wp_reset_query();  // Restore global post data stomped by the_post().
    ?>
</ul>

前もって感謝します!

4

2 に答える 2

1

私はこれを何かのためにしばらく前に使用しました。

<?php
    $current_id = $post->ID;
    $args = array(
        'orderby' => 'name',
        'order' => 'ASC',
    );

    $nav_query = new WP_Query( $args );

?>

<ul>

<?php if ( $nav_query -> have_posts() ) : while ( $nav_query->have_posts() ) : $nav_query -> the_post(); ?>

    <li class="clearfix">

        <?php $current_class = ( $current_id == $post->ID ) ? 'class="current"' : ''; ?>
        <a <?php if ( $current_class ) echo $current_class; ?> href="<?php the_permalink(); ?>"><?php the_title(); ?></a>

    </li>

<?php endwhile; ?>

</ul>

<?php endif; wp_reset_query(); ?>
于 2013-06-21T13:14:38.217 に答える
0

私は自分でそれを理解しました!

<div id="menu">
<ul>
<?php
$page_title = strtolower(wp_title( '', false, 'right' ));
$clean = str_replace('&#8217;', '', $page_title);
$clean = preg_replace('/[^A-Za-z0-9\-]/', '', $clean);
$category = get_category_by_slug($clean);

if ($category != null) {
global $cat_id;
$cat_id = $category->term_id;

//get terms (e.g. categories or post tags), 
//then display all posts in each retrieved term
$taxonomy = 'category';//  e.g. post_tag, category
$param_type = 'category__in'; //  e.g. tag__in, category__in
$term_args=array(
  'orderby' => 'name',
  'order' => 'ASC',
  'child_of' => $cat_id
);
$terms = get_terms($taxonomy,$term_args);
if ($terms) {
  foreach( $terms as $term ) {
    $args=array(
      "$param_type" => array($term->term_id),
      'post_type' => 'post',
      'post_status' => 'publish',
      'showposts' => -1,
      'ignore_sticky_posts'=> 1
      );
    $my_query = null;
    $my_query = new WP_Query($args);
    if( $my_query->have_posts() ) {

      echo '<li>'. $term->name. '</li>';

      while ($my_query->have_posts()) : $my_query->the_post(); ?>
        <ul><li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></li></ul>
       <?php
             endwhile;
    }
  }
}
wp_reset_query();  // Restore global post data stomped by the_post().
 }//endif
?>
</ul>
</div>
于 2013-07-04T02:03:51.193 に答える