【问题标题】:Custom Post Type error自定义帖子类型错误
【发布时间】:2014-07-28 08:26:31
【问题描述】:

我正在使用这段代码在 wordpress 中的自定义帖子类型中提取汽车和汽车详细信息。

<h1>Cars for Sale</h1>
<?php $args = array( 'post_type' => 'carlistings', 'posts_per_page' => 10 ); ?>
<ul id="carsforsale">
    <?php $loop = new WP_Query( $args );
        while ( $loop->have_posts() ) : $loop->the_post(); ?>
            <?php $cardetails = get_post_meta( $post->ID, 'cardetails', true );
            foreach( $cardetails as $cardetails ) { ?> <!-- Line # 13 -->
        <li class="pop"><span>
            <span class="thumb"><a href="<?php the_permalink(); ?>"><?php if ( has_post_thumbnail() ) { the_post_thumbnail('thumbnail'); } ?></a></span>
            <span class="title"><h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3></span>
            <strong>Make</strong> <?php echo $cardetails['make'] ?><br />
            <strong>Model</strong> <?php echo $cardetails['model'] ?><br />
            <strong>Year</strong> <?php echo $cardetails['year'] ?><br />
            <strong>Color:</strong> <?php echo $cardetails['color'] ?><br />
            <strong>Price:</strong> <?php echo $cardetails['price'] ?><br />
        </span></li>
<?php } ?>
<?php wp_reset_query(); ?>

我遇到的问题是,在 3 次输入后我收到此错误消息

警告:在第 13 行的 /home/styleaut/public_html/wp-content/themes/styleautosales/page-30.php 中为 foreach() 提供的参数无效

第 13 行落在这部分代码上:

foreach( $cardetails as $cardetails ) {

【问题讨论】:

  • 这意味着$cardetails不是一个数组或对象
  • 您能否提供进一步的建议?我的 PHP 知识太糟糕了!
  • 请使用 print_r($cardetails) 打印您的变量并将结果粘贴到此处
  • Array ( [price] => £16,995 [year] => 2009 [make] => Ford [model] => Mustang GT Premium [color] => Vapor Silver [location] => UK )

标签: php wordpress


【解决方案1】:

在 foreach 之前添加 if 语句,如下所示:

<h1>Cars for Sale</h1>
<?php $args = array( 'post_type' => 'carlistings', 'posts_per_page' => 10 ); ?>
<ul id="carsforsale">
    <?php $loop = new WP_Query( $args );
        while ( $loop->have_posts() ) : $loop->the_post(); ?>
            <?php $cardetails = get_post_meta( $post->ID, 'cardetails', true );
            if($cardetails) {
            foreach( $cardetails as $cardetails ) { ?>
        <li class="pop"><span>
            <span class="thumb"><a href="<?php the_permalink(); ?>"><?php if ( has_post_thumbnail() ) { the_post_thumbnail('thumbnail'); } ?></a></span>
            <span class="title"><h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3></span>
            <strong>Make</strong> <?php echo $cardetails['make'] ?><br />
            <strong>Model</strong> <?php echo $cardetails['model'] ?><br />
            <strong>Year</strong> <?php echo $cardetails['year'] ?><br />
            <strong>Color:</strong> <?php echo $cardetails['color'] ?><br />
            <strong>Price:</strong> <?php echo $cardetails['price'] ?><br />
        </span></li>
<?php } // end foreach
} // end if ?>
<?php wp_reset_query(); ?>

【讨论】:

  • 这行得通,如果我错过了后端的一个字段,它会抛出一个错误,现在我添加了 IF 语句并修复了它!太好了,谢谢!
【解决方案2】:

我认为你的问题是你打电话给get_post_meta 的方式。通过将最后一个参数设置为 true,它将返回 post meta 的第一行中的值,该值始终是一个字符串。尝试调用不带该参数的函数。

【讨论】:

    【解决方案3】:

    改变

    foreach( $cardetails as $cardetails ) {
    

    foreach( $cardetails as $value ) {
    

    您需要将 foreach 主体中的所有 $cardetails 变量用法更改为 $value,例如:

    $cardetails['make']
    

    需要改成:

    $value['make']
    
    $cardetails['model'] to $value['model']
    

    等等..

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-07
    • 2013-01-13
    • 1970-01-01
    • 1970-01-01
    • 2017-04-30
    • 1970-01-01
    • 2014-09-29
    相关资源
    最近更新 更多