0

我最近参加了一个使用自定义字段非常方便的项目。它适用于餐厅,如果我能做到这一点,我可以将这段代码用于网站的几个不同部分。

我正在使用 Magic Fields 2 插件,现在它很棒,除了在显示我创建的字段时。这就是我迷路的地方。

例如,我有一个名为“Specials”的帖子,其中有一个名为“Menu Item”的分组,该组有两个字段,名为“Name”和“Description”。基本上 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">&nbsp;</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">&nbsp;</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 循环中。所以现在它列出了菜单名称,但在描述的地方添加了“Array”。越来越近!

4

3 回答 3

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>';
  } 
?>
于 2014-02-09T15:00:15.680 回答
0

找到了解决方案:

<?php 
$query2 = get_post(28);
$title = $query2->post_title;
?>
    <div id="specialstitle"><?php echo $title; ?></div>
    <div class="stripebackbrown">&nbsp;</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,非常感谢您对我的帮助,您对我的两行的重新排序让我朝着正确的方向前进。

于 2013-11-12T03:01:34.047 回答
0

我想你想这样做:

<div id="specials">
<?php 
$query2 = get_post(28);
$title = $query2->post_title;

?>
    <div id="specialstitle"><?php echo $title; ?></div>
    <div class="stripebackbrown">&nbsp;</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>

于 2013-11-11T23:38:36.580 回答