首页 文章

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

提问于
浏览
0

我正在尝试在自定义帖子(特定活动页面)上订购我的自定义帖子类型(赞助商/赞助商) . 但是,我不太清楚如何做到这一点 . 我已经下载了Post order type插件 . 当我尝试使用Post Order Type插件时,我只能将命令拖放到主赞助商后端/仪表板页面(列出所有赞助商的位置) . 当我在那里更改订单时,它会根据主要赞助商页面上的订单更改指定活动页面中的赞助商订单 . 但是,我希望能够直接在特定事件的页面上更改顺序,因为每个事件应该对其事件具有不同的特定顺序 . 我还下载了Toolset,但不确定这是否有帮助 .

backend dashboard of specifying event page请参阅示例事件页面的后端仪表板的附图 . 帖子 Headers 是特定赞助商的号码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

    您似乎试图通过三个单独的事情来订购:

    • 一个键,在 ksort 的行中 .
      根据评论

    • ,"same order,",这可能是 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
    );
    

相关问题