在元框中循环自定义帖子类型

用户8388657

我正在创建一个 WordPress 模板。我在front-page.php. 我希望用户可以选择在主页上显示或不显示他的成就。如果他想展示他的成就,他可以在作品集中的成就中选择他想要在主页中显示的成就。我指定这capacity_portfolio是自定义帖子类型。

<?php
    function capacity_page_add_custom_box() {
        $screens = ['page', 'capacity_service', 'capacity_portfolio'];
        foreach ($screens as $screen) {
            add_meta_box(
            'capacity_page_custom_box',  // Unique ID
            'Customize this page',  // Box title
            'capacity_page_box_html',  // Content callback, must be of type callable
            $screen    // Post type
            );
        }
    }
add_action('add_meta_boxes', 'capacity_page_add_custom_box');

function capacity_page_box_html($post) {
  require get_parent_theme_file_path( '/template-parts/page-excluded-blog/page-excluded-blog.php' );
?>
    <div class="capacity-metabox-container">
        <table class="form-table capacity-metabox-table">
            <tbody>
                <?php $post_id = $_GET['post'] ? $_GET['post'] : $_POST['post_ID'] ;?>
                <?php if ($post_id == get_option( 'page_on_front' )) { ?>
                    <tr>
                        <td class="capacity-metabox-td-description">
                            <label>Display services</label>
                        </td>
                        <td class="capacity-meta-box-style">
                            <input type="radio" name="capacity_meta_box_front_page_services_show" value="yes" id="capacity_meta_box_front_page_services_show" class="capacity_meta_box_front_page_services" <?php if ($capacity_box_front_page_services_show=='yes'){echo checked;}?>> <label for="capacity_meta_box_front_page_services_show" >Yes</label>
                            <div>
                                <input type="radio" name="capacity_meta_box_front_page_services_show" value="no" id="capacity_meta_box_front_page_services_hide" class="capacity_meta_box_front_page_services" <?php if ($capacity_box_front_page_services_show=='no'){echo checked;}?>> <label for="capacity_meta_box_front_page_services_hide">No</label>
                            </div>
                        </td>
                    </tr>
                    <tr class="capacity-metabox-tr-front_page-hidden">
                        <td class="capacity-metabox-td-description">
                            <label>Services to display</label>
                        </td>
                        <td>
                            <ul>
                                <?php $iterator_service_index=1;?>
                                <?php while(true==(get_post_meta($capacity_service_index_id, '_capacity_meta_box_service_index_'.$iterator_service_index, true)) or $iterator_service_index==1){ ?> 
                                    <?php $capacity_box_service_index = (true==(get_post_meta($capacity_service_index_id, '_capacity_meta_box_service_index_'.$iterator_service_index, true))) ? (get_post_meta($capacity_service_index_id, '_capacity_meta_box_service_index_'.$iterator_service_index, true)) : ('');?>
                                    <?php $capacity_meta_box_front_page_service = (true==(get_post_meta($post->ID, '_capacity_meta_box_front_page_service', true))) ? (get_post_meta($post->ID, '_capacity_meta_box_front_page_service', true)) : ('no_array'); ?>
                                    <li> 
                                        <input type="checkbox" name="<?php echo 'capacity_meta_box_front_page_service[_capacity_meta_box_service_index_'.$iterator_service_index.']'; ?>" id="<?php echo 'capacity_meta_box_front_page_service_'.$iterator_service_index; ?>" <?php if ($capacity_meta_box_front_page_service['_capacity_meta_box_service_index_'.$iterator_service_index]=='on' or $capacity_meta_box_front_page_service=='no_array') echo 'checked';  ?>> 
                                        <label for="<?php echo 'capacity_meta_box_front_page_service_'.$iterator_service_index; ?>">
                                            <span class="capacity-meta-box-icon"><span class="fas fa-<?php echo $capacity_box_service_index[icon]; ?>"> </span></span>
                                            <span> <?php echo $capacity_box_service_index[title]; ?> </span>
                                        </label>
                                    </li>
                                    <?php $iterator_service_index++; ?>
                                <?php } ?>
                            </ul>
                        </td>
                    </tr>
                    <tr class="capacity-metabox-tr-front_page-hidden">
                        <td class="capacity-metabox-td-description">
                            <label>Services background color</label>
                        </td>
                        <td>
                            <input type="color" name="capacity_meta_box_front_page_services_background_color" value="<?php echo $capacity_box_front_page_services_background_color; ?>" class="capacity_meta_box_front_page_services_background_color">
                        </td>
                    </tr>
                    <tr>
                        <td class="capacity-metabox-td-description">
                            <label>Display our team</label>
                        </td>
                        <td class="capacity-meta-box-style">
                            <input type="radio" name="capacity_meta_box_front_page_team_show" value="yes" id="capacity_meta_box_front_page_team_show" class="capacity_meta_box_front_page_team" <?php if ($capacity_box_front_page_team_show=='yes'){echo checked;}?>> <label for="capacity_meta_box_front_page_team_show" >Yes</label>
                            <div>
                                <input type="radio" name="capacity_meta_box_front_page_team_show" value="no" id="capacity_meta_box_front_page_team_hide" class="capacity_meta_box_front_page_team" <?php if ($capacity_box_front_page_team_show=='no'){echo checked;}?>> <label for="capacity_meta_box_front_page_team_hide">No</label>
                            </div>
                        </td>
                    </tr>
                    <tr class="capacity-metabox-tr-front_page-team-hidden">
                        <td class="capacity-metabox-td-description">
                            <label>Members to display</label>
                        </td>
                        <td>
                            <ul>
                                <?php $iterator_team_index=1;?>
                                <?php while(true==(get_post_meta($capacity_team_id, '_capacity_meta_box_our_team_'.$iterator_team_index, true))){ ?>    
                                    <?php $capacity_box_member = (true==(get_post_meta($capacity_team_id, '_capacity_meta_box_our_team_'.$iterator_team_index, true))) ? (get_post_meta($capacity_team_id, '_capacity_meta_box_our_team_'.$iterator_team_index, true)) : ('');?>
                                    <?php $capacity_meta_box_front_page_team = (true==(get_post_meta($post->ID, '_capacity_meta_box_front_page_team', true))) ? (get_post_meta($post->ID, '_capacity_meta_box_front_page_team', true)) : ('no_array'); ?>
                                    <li> 
                                        <input type="checkbox" name="<?php echo 'capacity_meta_box_front_page_team[_capacity_meta_box_our_team_'.$iterator_team_index.']'; ?>" id="<?php echo 'capacity_meta_box_front_page_team_'.$iterator_team_index; ?>" <?php if ($capacity_meta_box_front_page_team['_capacity_meta_box_our_team_'.$iterator_team_index]=='on' or $capacity_meta_box_front_page_team=='no_array') echo 'checked';  ?>> 
                                        <label for="<?php echo 'capacity_meta_box_front_page_team_'.$iterator_team_index; ?>" class="capacity-meta-box-front-page-label">
                                            <span > <?php echo $capacity_box_member[name].' '.$capacity_box_member[forname]; ?> </span>
                                        </label>
                                    </li>
                                    <?php $iterator_team_index++; ?>
                                <?php } ?>
                            </ul>
                        </td>
                    </tr>
                    <tr class="capacity-metabox-tr-front_page-team-hidden">
                        <td class="capacity-metabox-td-description">
                            <label>Our team background color</label>
                        </td>
                        <td>
                            <input type="color" name="capacity_meta_box_front_page_team_background_color" value="<?php echo $capacity_box_front_page_team_background_color; ?>" class="capacity_meta_box_front_page_team_background_color">
                        </td>
                    </tr>
                    <tr>
                        <td class="capacity-metabox-td-description">
                            <label>Display Portfolio</label>
                        </td>
                        <td class="capacity-meta-box-style">
                            <input type="radio" name="capacity_meta_box_front_page_portfolio_show" value="yes" id="capacity_meta_box_front_page_portfolio_show" class="capacity_meta_box_front_page_portfolio" <?php if ($capacity_box_front_page_portfolio_show=='yes'){echo checked;}?>> <label for="capacity_meta_box_front_page_portfolio_show" >Yes</label>
                            <div>
                                <input type="radio" name="capacity_meta_box_front_page_portfolio_show" value="no" id="capacity_meta_box_front_page_portfolio_hide" class="capacity_meta_box_front_page_portfolio" <?php if ($capacity_box_front_page_portfolio_show=='no'){echo checked;}?>> <label for="capacity_meta_box_front_page_portfolio_hide">No</label>
                            </div>
                        </td>
                    </tr>
                    <tr class="capacity-metabox-tr-front_page-portfolio-hidden">
                        <td class="capacity-metabox-td-description">
                            <label>Portfolio categories to display</label>
                        </td>
                        <td>
                            <ul>
                                <?php $iterator_portfolio_index=1;?>
                                <?php while(true==(get_post_meta($capacity_portfolio_id, '_capacity_meta_box_portfolio_category_'.$iterator_portfolio_index, true))){ ?>
                                    <?php $capacity_box_category = (true==(get_post_meta($capacity_portfolio_id, '_capacity_meta_box_portfolio_category_'.$iterator_portfolio_index, true))) ? (get_post_meta($capacity_portfolio_id, '_capacity_meta_box_portfolio_category_'.$iterator_portfolio_index, true)) : ('');?>
                                    <?php $capacity_meta_box_front_page_portfolio_categories = (true==(get_post_meta($post->ID, '_capacity_meta_box_front_page_portfolio_categories', true))) ? (get_post_meta($post->ID, '_capacity_meta_box_front_page_portfolio_categories', true)) : ('no_array'); ?>
                                    <li> 
                                        <input type="checkbox" name="<?php echo 'capacity_meta_box_front_page_portfolio_categories[_capacity_meta_box_portfolio_category_'.$iterator_portfolio_index.']'; ?>" id="<?php echo 'capacity_meta_box_front_page_portfolio_categories'.$iterator_portfolio_index; ?>" <?php if ($capacity_meta_box_front_page_portfolio_categories['_capacity_meta_box_portfolio_category_'.$iterator_portfolio_index]=='on' or $capacity_meta_box_front_page_portfolio_categories=='no_array') echo 'checked';  ?>> 
                                        <label for="<?php echo 'capacity_meta_box_front_page_portfolio_categories'.$iterator_portfolio_index; ?>" class="capacity-meta-box-front-page-label">
                                            <span > <?php echo $capacity_box_category; ?> </span>
                                        </label>
                                    </li>
                                    <?php $iterator_portfolio_index++; ?>
                                <?php } ?>
                            </ul>
                        </td>
                    </tr>
                    <tr class="capacity-metabox-tr-front_page-portfolio-hidden">
                        <td class="capacity-metabox-td-description">
                            <label>Portfolio realisations to display</label>
                        </td>
                        <td>
                            <div>
                                <?php $args = array( 'post_type' => 'capacity_portfolio'); ?>
                                <?php $loop = new WP_Query( $args ); ?>
                                <?php if ($loop->have_posts()) : while ( $loop->have_posts() ) : $loop->the_post(); ?>
                                <?php the_title(); ?><br>
                                <?php endwhile; ?>
                                <?php endif; ?>
                            </div>
                        </td>
                    </tr>
                <?php }?>
            </tbody>
        </table>
    </div>
    <?php
    }

    function capacity_save_page_data($post_id) {
        if (array_key_exists('capacity_meta_box_front_page_services_show', $_POST)) {
            update_post_meta(
            $post_id,
            '_capacity_meta_box_front_page_services_show',
            $_POST['capacity_meta_box_front_page_services_show']
            );
        }
        if (array_key_exists('capacity_meta_box_front_page_team_show', $_POST)) {
            update_post_meta(
            $post_id,
            '_capacity_meta_box_front_page_team_show',
            $_POST['capacity_meta_box_front_page_team_show']
            );
        }

        if (array_key_exists('capacity_meta_box_front_page_portfolio_show', $_POST)) {
            update_post_meta(
            $post_id,
            '_capacity_meta_box_front_page_portfolio_show',
            $_POST['capacity_meta_box_front_page_portfolio_show']
            );
        }

        if (array_key_exists('capacity_meta_box_front_page_services_background_color', $_POST)) {
            update_post_meta(
            $post_id,
            '_capacity_meta_box_front_page_services_background_color',
            $_POST['capacity_meta_box_front_page_services_background_color']
            );
        }

        if (array_key_exists('capacity_meta_box_front_page_team_background_color', $_POST)) {
            update_post_meta(
            $post_id,
            '_capacity_meta_box_front_page_team_background_color',
            $_POST['capacity_meta_box_front_page_team_background_color']
            );
        }

        if (array_key_exists('capacity_meta_box_front_page_services_show', $_POST) and $_POST['capacity_meta_box_front_page_services_show']=='yes' ) {
            update_post_meta(
            $post_id,
            '_capacity_meta_box_front_page_service',
            $_POST['capacity_meta_box_front_page_service']
            );
        }

        if (array_key_exists('capacity_meta_box_front_page_team_show', $_POST) and $_POST['capacity_meta_box_front_page_team_show']=='yes' ) {
            update_post_meta(
            $post_id,
            '_capacity_meta_box_front_page_team',
            $_POST['capacity_meta_box_front_page_team']
            );
        }

        if (array_key_exists('capacity_meta_box_front_page_portfolio_show', $_POST) and $_POST['capacity_meta_box_front_page_portfolio_show']=='yes' ) {
            update_post_meta(
            $post_id,
            '_capacity_meta_box_front_page_portfolio_categories',
            $_POST['capacity_meta_box_front_page_portfolio_categories']
            );
        }
    }

add_action('save_post', 'capacity_save_page_data');

有问题的部分:

<?php $args = array( 'post_type' => 'capacity_portfolio'); ?>
<?php $loop = new WP_Query( $args ); ?>
<?php if ($loop->have_posts()) : while ( $loop->have_posts() ) : $loop->the_post(); ?>
<?php the_title(); ?><br>
<?php endwhile; ?>
<?php endif; ?>

奇怪的事情发生了:页面上的所有元框都被复制了。在这里看图.

当我用帖子类型替换自定义帖子类型capacity_portfoliopage- 它有效。但是,当我用 post type 替换它时post,它不起作用。我说,当我删除这段代码时,metabox 可以正常工作。

用户8388657
<?php
    $args = array('post_type' => 'capacity_portfolio', 'orderby' => 'modified'); 
    $pages = get_posts( $args );
    foreach ( $pages as $page ) : setup_postdata( $page ); 

    echo $page->post_title; 

    endforeach; 
    wp_reset_postdata();
?>

问题已经解决了...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

循环自定义帖子类型

自定义帖子类型中的“ __(”

Wordpress自定义帖子类型元框未保存到数据库

自定义帖子类型未显示精选图片元框

如果元框为空,则使用自定义帖子类型隐藏 html

如何在WordPress中自定义帖子类型的自定义类别的帖子循环?

简码内的Wordpress自定义帖子类型循环

元框下拉菜单未保存在我的自定义帖子类型中

如何在此 marqup 中为自定义帖子类型编写循环

在新的/编辑的自定义帖子类型帖子之后添加/更新帖子元

查询自定义帖子类型,在查询中使用自定义字段/元键

自定义字段未显示在自定义帖子类型的帖子中

如何将一种自定义帖子类型的所有帖子显示到另一种自定义帖子框中?

使Wordpress中的自定义帖子类型不可搜索

在Wordpress中显示自定义帖子类型的内容

自定义帖子类型中的Wordpress列表类别

在Wordpress中创建隐藏的自定义帖子类型

从自定义帖子类型中获取类别

wordpress 中的自定义帖子类型总数

自定义帖子类型未显示在自定义 wp 查询循环中

Wordpress - 用于显示自定义帖子类型的自定义循环查询

禁用自定义帖子类型

查看自定义帖子类型

自定义帖子类型错误

自定义帖子类型-存档

WordPress自定义帖子类型

如何通过自定义帖子类型,自定义元框,类别,评论,作者列表分别从WordPress网站检索Android应用程序的JSON数据

在 wordpress 自定义帖子类型查询中获取当前帖子类别 slug

如何在自定义帖子类型循环中将帖子标签添加为类?