Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 按州组织自定义Wordpress帖子的更有效方法_Php_Mysql_Wordpress_Performance - Fatal编程技术网

Php 按州组织自定义Wordpress帖子的更有效方法

Php 按州组织自定义Wordpress帖子的更有效方法,php,mysql,wordpress,performance,Php,Mysql,Wordpress,Performance,好的,我正在使用Types插件和Posts 2 Posts插件来构建一个站点,该站点有一个名为“opening”的自定义帖子类型,其中包含有关特定职位空缺及其相关顾问的信息。我需要能够显示在一个页面上,由州(阿拉巴马州,阿拉斯加等)组织这些职位。我有一个解决方案,但似乎效率很低 我不会太担心它,但它被托管在一个资源非常有限的服务器上,我的解决方案在我的开发服务器上运行得很好,但在实时服务器上超时 以下是我在每个州使用的代码: <!-- -----------------------

好的,我正在使用Types插件和Posts 2 Posts插件来构建一个站点,该站点有一个名为“opening”的自定义帖子类型,其中包含有关特定职位空缺及其相关顾问的信息。我需要能够显示在一个页面上,由州(阿拉巴马州,阿拉斯加等)组织这些职位。我有一个解决方案,但似乎效率很低

我不会太担心它,但它被托管在一个资源非常有限的服务器上,我的解决方案在我的开发服务器上运行得很好,但在实时服务器上超时

以下是我在每个州使用的代码:

    <!-- -----------------------Alabama ------------------------ -->

<!-- Pulls the list of openings -->
<?php $loop = new WP_Query( array( 'post_type' => 'current-opening', 'meta_key' => 'wpcf-state', 'meta_value' => 'alabama', 'posts_per_page' => -1, 'orderby' => 'title', 'order' => 'ASC' ) ); ?>  

<a name="alabama">
<?php $count = 1; ?>
<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
       <?php $cat = types_render_field( "state" );
       if( $cat == 'Alabama' ) : ?>
            <?php if( $count == 1 ){ echo "<h2>Alabama</h2>"; ++$count; ++$alabama; echo "<hr />"; } ?>

        <ul>
        <li><h3 class="entry-title"><?php the_title( ); ?></li>
        <li><?php echo(types_render_field( "position", array("show_name" => "true") )); ?></li>
        <li><?php echo(types_render_field( "enrollment", array( "show_name" => "true" ) )); ?></li>

        <!-- Display the connected Consultant(s) -->
        <?php
        // Find connected Consultants
        $connected = new WP_Query( array(
        'connected_type' => 'consultant_to_opening',
        'connected_items' => $post,
        'nopaging' => true
        ) );

        // Display connected Consultants
        p2p_list_posts( $connected, array(
            'before_list' => '<li>Consultant(s): ',
            'separator' => ', ',
            'after_list'  => '</li>',
        ) );
        ?>

        <li><?php echo(types_render_field( "school-district-website", array( "show_name" => "true", "no_protocol" => "true" ) )); ?></li>

        <?php $deadline = types_render_field( "application-deadline", array( "show_name" => "true", "style" => "text" ) );
        if( $deadline ) : ?>
            <li><?php echo $deadline; ?></li>
        <?php endif; ?>

        <?php $app_word = types_render_field( "application-form-word", array( "show_name" => "true", "link" => "true", "title" => "Download" ) );
        if( $app_word ) : ?>
            <li><?php echo $app_word; ?></li>
        <?php endif; ?>

        <?php $app_pdf = types_render_field( "application-form-pdf", array( "show_name" => "true", "link" => "true", "title" => "Download" ) );
        if ( $app_pdf ) : ?>
            <li><?php echo $app_pdf; ?></li>
        <?php endif; ?>

        <?php $app_link = types_render_field( "application-link", array( "show_name" => "true", "link" => "true", "title" => "Click Here" ) );
        if ( $app_link ) : ?>
            <li><?php echo $app_link; ?></li>
        <?php endif; ?>

        <?php $vacancy = types_render_field( "announcement-of-vacancy", array( "show_name" => "true", "link" => "true", "title" => "Download" ) );
        if( $vacancy ) : ?>
            <li><?php echo $vacancy; ?></li>
        <?php endif; ?>

        <?php $notes = types_render_field( "notes", array( "show_name" => "true" ) );
        if ( $notes ) : ?>
            <li><?php echo $notes; ?></li>
        <?php endif; ?>
        </ul>
       <?php endif; ?>
    <?php endwhile; ?>

<!-- -----------------------/Alabama ------------------------ -->

这里的问题是,我正在查询数据库以获取与该状态关联的空缺,然后循环每个结果以显示其每个字段,然后查询数据库以查找其关联的顾问。如果我只是为一个州做这件事,这不是很多工作,但我必须为所有50个州加上华盛顿特区做这件事,并在一个页面上全部显示出来


我能做些什么来提高效率吗?

看来
类型\u render\u field()
函数的效率不是很高。我用显示自定义字段的内置Wordpress函数替换了这些函数,帮了我不少忙:
get\u post\u meta()

您是否考虑过编写一个自定义查询来实现这一点,而不是依赖Wordpress函数?