如何在自定义帖子类型上添加显示顺序? WordPress

时间:2018-07-29 23:49:00

标签: wordpress custom-wordpress-pages

我正在尝试在自定义帖子(特定事件页面)上订购自定义帖子类型(赞助/赞助)。但是,我不太确定如何执行此操作。我已经下载了订单类型插件。当我尝试使用Post Order Type插件时,只能将订单拖放到主要的Sponsors后端/仪表板页面(列出了所有发起人)上。当我在那里更改订单时,它会更改指定事件页面中的赞助者订单,以与主要赞助者页面上的订单相对应。但是,我希望能够直接在特定事件的页面上更改顺序,因为每个事件应具有与其事件不同的特定顺序。我还下载了Toolset,但不确定是否可以帮助您。

backend dashboard of specifying event page请参见示例事件页面的后端仪表板的图片。帖子标题是特定赞助者的编号ID。赞助商是赞助商名称的列表。

有关如何执行此操作的任何建议?如何制作它,以便我可以按希望的顺序显示赞助商?自定义帖子类型有2种:赞助商和活动。我正在尝试将具有特定顺序的赞助商输出到活动详细信息页面。

 <?php 
      // get event sponsorship list
      $sponsorship_object = types_child_posts('sponsorship');
        if (count($sponsorship_object) != 0) {
    ?>
      <div class="container event-sponsors text-center">
        <p class="partners_band_title">Event Sponsors</p>
    <?php

    // extract sponsor ids
    $sponsors = array();
    foreach($sponsorship_object as $sponsor_object) {
      $sponsors[$sponsor_object->post_title] = 
    wpcf_pr_post_get_belongs($sponsor_object->ID, 'sponsors'); 
    }


    // ensure array is ordered by key
    ksort($sponsors);

    // query sponsors; orderby is required to ensure data is return in the 
    same order we gave it
        $args = array( 'post_type' => 'sponsors',  'post__in' => $sponsors 
    , 'orderby' => 'post__in', 'posts_per_page' => -1); 
        $sponsor_loop = new WP_Query( $args );
        if ( $sponsor_loop->have_posts() ) {
      $sponsor_count = 0;
            while ( $sponsor_loop->have_posts() ) {

                $sponsor_loop->the_post();



      echo '<div class="col-xs-6 col-sm-3 col-md-2 col-lg-2 text-
    center">';
                    echo '<a href="'.esc_url( get_post_meta($post->ID, 
    'wpcf-sponsor_website', true) ).'" 
    target="_blank">'.wp_get_attachment_image( 
    get_post_thumbnail_id($post->ID), 'big-thumbs' ).'</a>';
            echo '</div>';

        $sponsor_count++;
      /*if ($sponsor_count % 5 == 0) {
        echo '<div class="col-xs-12 col-sm-12 col-md-1 col-lg-1"></div>';
        echo '</div>';
      }*/
                }
        }
        wp_reset_postdata();
?>
      </div>
<?php>

谢谢

1 个答案:

答案 0 :(得分:0)

您似乎想按以下三项顺序订购商品:

  • ksort相同的行中的键。
  • 评论中的“相同顺序”,可能是ksort强制执行的顺序。
  • 所需顺序,来自您的插件。

据我所知,该插件使用menu_order(这似乎是最常见的WP方式)。

您最简单的解决方案可能是将查询arg数组中的orderby更改为menu_order(请参见the Codex docs for WP_Query)。该arg确实接受一个数组,因此,如果您希望保留现有的排序作为辅助键,则可以使用['menu_order', 'post__in']作为orderby arg。

尝试以此替换您的行:

$args = array
    'post_type' => 'sponsors',
    'post__in' => $sponsors,
    'orderby' => ['menu_order', 'post__in'],
    'posts_per_page' => -1
);