我最近来到一个使用自定义字段非常方便的项目。它适用于一家餐馆,如果我能做到这一点,我可以将这段代码用于网站的几个不同部分。
我正在使用Magic Fields 2插件,现在它很棒,除了显示我创建的字段。这是我迷失的地方。
例如,我有一个名为“Specials”的帖子,它有一个名为“菜单项”的分组,该组有两个名为“Name”和“Description”的字段。基本上名称用作菜单项名称,描述将是关于食物项目的一个小模糊。
这是我现在主题中的代码:
<div id="specials">
<?php
$query2 = get_post(28);
$title = $query2->post_title;
$itemname= get_post_meta($post->ID, 'menu_item_name', true);
$description = get_post_meta($post->ID, 'menu_item_description', true);
?>
<div id="specialstitle"><?php echo $title; ?></div>
<div class="stripebackbrown"> </div>
<div id="specialslist">
<?php while ( have_posts() ) : the_post();
echo '<span>'.$itemname.'</span>';
echo '<p>'.$description.'</p>';
endwhile;
wp_reset_query();
?>
</div>
</div><!-- end specials-->
现在很有可能我在上面的代码中所做的完全错误,如果是,请告诉我。 我在上面的代码中遇到的问题是它正在拉动该帖子的第一组。
所以不是像:
番茄汤 描述文字
土耳其三明治 描述文字
希腊沙拉 描述文字
我得到了:
番茄汤 描述文字
番茄汤 描述文字
番茄汤 描述文字
因此,尽管上述代码在技术上有效,但它在同一时间无法正常工作。 任何帮助将不胜感激!
修改
我在这方面取得了更大的成功:
<div id="specials">
<?php
$query2 = get_post(28);
$title = $query2->post_title;
?>
<div id="specialstitle"><?php echo $title; ?></div>
<div class="stripebackbrown"> </div>
<div id="specialslist">
<?php $itemname = get_post_meta ($post->ID, 'menu_item_name', false); ?>
<?php $description = get_post_meta ($post->ID, 'menu_item_description', false); ?>
<?php foreach ($itemname as $itemname){
echo '<span>' .$itemname. '</span>';
echo '<p>' .$description. '</p>';
} ?>
</div>
</div><!-- end specials-->
但是,我不确定如何将$ description添加到foreach循环中。所以现在它列出了菜单名称,但添加了描述应该在的“数组”。越来越近了!
答案 0 :(得分:0)
我想你想这样做:
<div id="specials">
<?php
$query2 = get_post(28);
$title = $query2->post_title;
?>
<div id="specialstitle"><?php echo $title; ?></div>
<div class="stripebackbrown"> </div>
<div id="specialslist">
<?php while ( have_posts() ) : the_post();
$itemname = get_post_meta(get_the_ID(), 'menu_item_name', true);
$description = get_post_meta(get_the_ID(), 'menu_item_description', true);
echo '<span>'.$itemname.'</span>';
echo '<p>'.$description.'</p>';
endwhile;
wp_reset_query();
?>
</div>
答案 1 :(得分:0)
找到解决方案:
<?php
$query2 = get_post(28);
$title = $query2->post_title;
?>
<div id="specialstitle"><?php echo $title; ?></div>
<div class="stripebackbrown"> </div>
<div id="specialslist">
<?php $itemname = get_post_meta ($post->ID, 'menu_item_name', false); ?>
<?php $description = get_post_meta ($post->ID, 'menu_item_description', false); ?>
<?php foreach (array_combine($itemname, $description) as $itemname => $description){
echo '<span>' .$itemname. '</span>';
echo '<p>' .$description. '</p>';
} ?>
</div>
</div><!-- end specials-->
它结合了$ itemname和$ description创建的两个数组,并且循环它们的次数与要循环的组一样多。
@speccode,非常感谢你试图帮助我,你对我的两行重新排序让我朝着正确的方向前进。
答案 2 :(得分:0)
我知道这已经老了,但我遇到了同样的问题,所以我试图改进@speccode的答案,但它似乎有效:
<?php $itemnames = get_post_meta($post->ID, 'itemnames', false); ?>
<?php $descriptions = get_post_meta($post->ID, 'descriptions', false); ?>
<?php foreach (array_combine($itemnames, $descriptions) as $itemname => $description)
{
echo '<img src="'.$itemname.'"/>';
echo '<p>' .$description. '</p>';
}
?>
我还尝试在(见下文)中实现结构化,但我无法保证标记的有效性...... 任何人?
<?php $itemnames = get_post_meta($post->ID, 'itemnames', false); ?>
<?php $descriptions = get_post_meta($post->ID, 'descriptions', false); ?>
<?php foreach (array_combine($itemnames, $descriptions) as $itemname => $description)
{
echo '<div class="nameAndDescription"><img src="'.$itemname.'"/>';
echo '<p>' .$description. '</p></div>';
}
?>