2013-02-09 3 views
0

Я работаю над сайтом с меню, в котором перечислены все страницы с определенным меню и загрузка заголовка и пользовательского поля, которое создается с помощью «дополнительных настраиваемых полей». Я могу отобразить но, когда я пытаюсь отобразить изображение, он отображает пользовательское полевое изображение с текущей страницы на всех ссылках меню.Страницы в Wordpress с настраиваемым полем

Вот пример «http://appelhat.dk/bordplader/», меню перемещается вверх, когда мышь касается касания страницы.

Вот код

<nav id="main-navigation"> 
     <ul> 
      <?php 
       $template = 'gallery.php'; 
       $Pages = $wpdb->get_col("SELECT post_id FROM $wpdb->postmeta WHERE meta_key = '_wp_page_template' AND meta_value = '$template'"); 
       foreach($Pages as $Page) { 
        $exclude_Pages .= $Page . ','; 
       } 
       $pages = get_pages("include=$exclude_Pages"); 

      foreach ($pages as $page): 

       $title = $page->post_title 
       ?> 
       <li> 
        <a href="<?php echo get_page_link($page->ID); ?>"> 
         <span class="title"><?php echo $title ?></span> 
        <?php 
         $attachment_id = get_field('front_billede'); 
         $size = "thumbnail"; 
         $image = wp_get_attachment_image_src($attachment_id, $size); 
        ?> 
        <img src="<?php echo $image[0]; ?>" /> 
        </a> 
       </li> 
      <?php endforeach; ?> 
     </ul> 
    </nav> 

Благодаря

ответ

1

Возможно попробовать использовать get_post_meta, а не get_field. Похоже, что get_field вызывает глобальный $ post-> ID, а не желаемый идентификатор $ page->.

$attachment_id = get_post_meta($page->ID, 'front_billede', true);

В качестве альтернативы, вы можете создать вторичный контур - с помощью WP_Query или get_posts, чтобы убедиться, что все метки используют соответствующий идентификатор.

+0

Благодаря она работала отлично – MyRevenge

0

В знаем, что это относительно старый вопрос, но если вы хотите использовать get_field в этом контексте, то вы можете просто использовать перегруженный метод:

$attachment_id = get_field('front_billede', $page->ID); 

Кроме того, если вы хотите создать пользовательское меню, как это в Wordpress тогда я бы порекомендовал пользовательский Уокер. Вот пример, который я уже использовал ранее:

class WP_Image_Walker extends Walker_Page { 
    function start_lvl(&$output, $depth = 0, $args = array()) { 
     $indent = str_repeat("\t", $depth); 
     $output .= "\n$indent<ul class='children list-inline'>\n"; 
    } 

    function start_el(&$output, $page, $depth = 0, $args = array(), $current_page = 0) 
    { 
     if ($depth) { 
      $indent = str_repeat("\t", $depth); 
     } 
     else { 
      $indent = ''; 
     } 

     extract($args, EXTR_SKIP); 
     $css_class = array('page_item', 'page-item-'.$page->ID); 

     if (!empty($current_page)) { 
      $_current_page = get_page($current_page); 
      _get_post_ancestors($_current_page); 
      if (isset($_current_page->ancestors) && in_array($page->ID, (array) $_current_page->ancestors)) 
       $css_class[] = 'current_page_ancestor'; 
       if ($page->ID == $current_page) 
        $css_class[] = 'current_page_item'; 
       elseif ($_current_page && $page->ID == $_current_page->post_parent) 
        $css_class[] = 'current_page_parent'; 
      } elseif ($page->ID == get_option('page_for_posts')) { 
       $css_class[] = 'current_page_parent'; 
      } 

      $css_class = implode(' ', apply_filters('page_css_class', $css_class, $page, $depth, $args, $current_page)); 

      $image = get_field('image_field', $page->ID); 

      $output .= $indent . '<li class="' . $css_class . '">' . '<a href="' . get_permalink($page->ID) . '">'; 
      $output .= '<img src="' . $image['url'] . '" alt="' . apply_filters('the_title', $page->post_title, $page->ID) . '" />' . '</a>'; 

      if (!empty($show_date)) { 
       if ('modified' == $show_date) 
        $time = $page->post_modified; 
       else 
        $time = $page->post_date; 

      $output .= " " . mysql2date($date_format, $time); 
     } 
    } 
} 

Затем используйте его в меню страницы, как это:

<?php wp_page_menu(array('walker' => new WP_Image_Walker(), 'container' => 'false', 'menu_class' => 'nav-home')); ?> 
Смежные вопросы