使用高级自定义字段构建表

时间:2018-10-16 作者:fridayikon

enter image description here我有一个填充从ACF提取的数据的表。如果有可用的报告,它基本上会添加PDF格式的报告。我想我已经解决了这一部分,但我的代码非常复杂,我想用switch语句或类似的东西来简化它。此外,当没有可用的PDF文件时,如何使表格显示值“x”?它目前正在删除手机,我不希望它这样做。提前谢谢。

<table class="float-left table">
    <thead>
    <tr>
        <th scope="col">Company</th>
        <th scope="col">Annual Report</th>
        <th scope="col">Interim Statement</th>
        <th scope="col">Prospectus</th>
    </tr>
    </thead>
    <tbody>
    <?php if( $query->have_posts() ) : while( $query->have_posts() ) : $query->the_post(); ?>

        <?php if( have_rows( \'recent_documents\') ): ?>
            <tr>
                <th>
                    <a href="<?php the_permalink(); ?>">
                        <?php the_title(); ?>
                    </a>
                </th>


                <?php while( have_rows( \'recent_documents\') ): the_row(); ?>

                    <?php if ( have_rows( \'new_document\') ): ?>

                        <?php while ( have_rows( \'new_document\') ): the_row(); ?>

                            <?php if (strpos(get_sub_field( \'report_type\'), "Annual") !==false): ?>
                                <td><a href="<?php the_sub_field(\'file\'); ?>" target="_blank"><i class="fas fa-file-pdf"></i>annual</a>
                                </td>
                            <?php endif; ?>

                            <?php if (strpos(get_sub_field( \'report_type\'), "Interim") !==false): ?>
                                <td><a href="<?php the_sub_field(\'file\'); ?>" target="_blank"><i class="fas fa-file-pdf"></i>interim</a>
                                </td>
                            <?php endif; ?>

                            <?php if (strpos(get_sub_field( \'report_type\'), "Prospectus") !==false): ?>
                                <td><a href="<?php the_sub_field(\'file\'); ?>" target="_blank"><i class="fas fa-file-pdf"></i>Prospectus</a>
                                </td>
                            <?php endif; ?>
                        <?php endwhile; ?>


                    <?php endif; ?>

                <?php endwhile; ?>


            </tr>
        <?php endif; ?>

    <?php endwhile; endif; wp_reset_postdata(); ?>
    </tbody>
</table>

1 个回复
最合适的回答,由SO网友:djboris 整理而成

由于我也是新来的,我不能发表评论,也不能要求澄清或给出一些建议,所以我会在这里这样做。

为什么有嵌套的中继器recent_documentsnew_document? 看来recent_documents 总是只有一行,否则会很混乱。但不管怎样,利用现有资源,你可以这样做:

<table class="float-left table">
    <thead>
    <tr>
        <th scope="col">Company</th>
        <th scope="col">Annual Report</th>
        <th scope="col">Interim Statement</th>
        <th scope="col">Prospectus</th>
    </tr>
    </thead>
    <tbody>
    <?php if( $query->have_posts() ) : while( $query->have_posts() ) : $query->the_post(); ?>

        <?php if( have_rows( \'recent_documents\') ): ?>
            <tr>
                <th>
                    <a href="<?php the_permalink(); ?>">
                        <?php the_title(); ?>
                    </a>
                </th>

                <?php
                // We get the inner repeater (if it exists)
                $documents = get_field( \'recent_documents\' );

                // Create our \'dictionary\' array
                $report_types = array( \'Annual\', \'Interim\', \'Prospectus\' );

                // Loop through it. This will always create three cells, even if there are no documents.
                foreach ( $report_types as $key => $report_type ) : ?>
                    <td>
                        <?php
                        $new_document = ! empty( $documents[$key][\'new_document\'] ) ? $documents[$key][\'new_document\'][0] : false;

                        if ( ! $new_document 
                             || strpos( $new_document[\'report_type\'], $report_type ) === false 
                             || empty( $new_document[\'file\'] ) ) 
                        {
                            echo \'x\';
                            continue;
                        }                        
                        echo \'<a href="\' . $new_document[\'file\'] . \'" target="_blank"><i class="fas fa-file-pdf"></i>\' . $report_type . \'</a>\';
                        ?>
                    </td>
                <?php endforeach; ?>

            </tr>
        <?php endif; ?>

    <?php endwhile; endif; wp_reset_postdata(); ?>
    </tbody>
</table>
如果这不符合你的要求,请告诉我。

请注意new_documents 必须按以下特定顺序进行:Annual, Interim, Prospectus, 否则,即使文档存在,它也会跳过这些文档。

结束

相关推荐

使用高级自定义字段构建表 - 小码农CODE - 行之有效找到问题解决它

使用高级自定义字段构建表

时间:2018-10-16 作者:fridayikon

enter image description here我有一个填充从ACF提取的数据的表。如果有可用的报告,它基本上会添加PDF格式的报告。我想我已经解决了这一部分,但我的代码非常复杂,我想用switch语句或类似的东西来简化它。此外,当没有可用的PDF文件时,如何使表格显示值“x”?它目前正在删除手机,我不希望它这样做。提前谢谢。

<table class="float-left table">
    <thead>
    <tr>
        <th scope="col">Company</th>
        <th scope="col">Annual Report</th>
        <th scope="col">Interim Statement</th>
        <th scope="col">Prospectus</th>
    </tr>
    </thead>
    <tbody>
    <?php if( $query->have_posts() ) : while( $query->have_posts() ) : $query->the_post(); ?>

        <?php if( have_rows( \'recent_documents\') ): ?>
            <tr>
                <th>
                    <a href="<?php the_permalink(); ?>">
                        <?php the_title(); ?>
                    </a>
                </th>


                <?php while( have_rows( \'recent_documents\') ): the_row(); ?>

                    <?php if ( have_rows( \'new_document\') ): ?>

                        <?php while ( have_rows( \'new_document\') ): the_row(); ?>

                            <?php if (strpos(get_sub_field( \'report_type\'), "Annual") !==false): ?>
                                <td><a href="<?php the_sub_field(\'file\'); ?>" target="_blank"><i class="fas fa-file-pdf"></i>annual</a>
                                </td>
                            <?php endif; ?>

                            <?php if (strpos(get_sub_field( \'report_type\'), "Interim") !==false): ?>
                                <td><a href="<?php the_sub_field(\'file\'); ?>" target="_blank"><i class="fas fa-file-pdf"></i>interim</a>
                                </td>
                            <?php endif; ?>

                            <?php if (strpos(get_sub_field( \'report_type\'), "Prospectus") !==false): ?>
                                <td><a href="<?php the_sub_field(\'file\'); ?>" target="_blank"><i class="fas fa-file-pdf"></i>Prospectus</a>
                                </td>
                            <?php endif; ?>
                        <?php endwhile; ?>


                    <?php endif; ?>

                <?php endwhile; ?>


            </tr>
        <?php endif; ?>

    <?php endwhile; endif; wp_reset_postdata(); ?>
    </tbody>
</table>

1 个回复
最合适的回答,由SO网友:djboris 整理而成

由于我也是新来的,我不能发表评论,也不能要求澄清或给出一些建议,所以我会在这里这样做。

为什么有嵌套的中继器recent_documentsnew_document? 看来recent_documents 总是只有一行,否则会很混乱。但不管怎样,利用现有资源,你可以这样做:

<table class="float-left table">
    <thead>
    <tr>
        <th scope="col">Company</th>
        <th scope="col">Annual Report</th>
        <th scope="col">Interim Statement</th>
        <th scope="col">Prospectus</th>
    </tr>
    </thead>
    <tbody>
    <?php if( $query->have_posts() ) : while( $query->have_posts() ) : $query->the_post(); ?>

        <?php if( have_rows( \'recent_documents\') ): ?>
            <tr>
                <th>
                    <a href="<?php the_permalink(); ?>">
                        <?php the_title(); ?>
                    </a>
                </th>

                <?php
                // We get the inner repeater (if it exists)
                $documents = get_field( \'recent_documents\' );

                // Create our \'dictionary\' array
                $report_types = array( \'Annual\', \'Interim\', \'Prospectus\' );

                // Loop through it. This will always create three cells, even if there are no documents.
                foreach ( $report_types as $key => $report_type ) : ?>
                    <td>
                        <?php
                        $new_document = ! empty( $documents[$key][\'new_document\'] ) ? $documents[$key][\'new_document\'][0] : false;

                        if ( ! $new_document 
                             || strpos( $new_document[\'report_type\'], $report_type ) === false 
                             || empty( $new_document[\'file\'] ) ) 
                        {
                            echo \'x\';
                            continue;
                        }                        
                        echo \'<a href="\' . $new_document[\'file\'] . \'" target="_blank"><i class="fas fa-file-pdf"></i>\' . $report_type . \'</a>\';
                        ?>
                    </td>
                <?php endforeach; ?>

            </tr>
        <?php endif; ?>

    <?php endwhile; endif; wp_reset_postdata(); ?>
    </tbody>
</table>
如果这不符合你的要求,请告诉我。

请注意new_documents 必须按以下特定顺序进行:Annual, Interim, Prospectus, 否则,即使文档存在,它也会跳过这些文档。

相关推荐