Bootstrap 4旋转木马在页面的每个帖子中

时间:2019-02-05 作者:ZWPDev

我想在wordpress页面的所有帖子中集成一个bs4转盘,这是一个公文包。我正在考虑使用贴子的附加图像,我不想使用自定义贴子类型来实现这一点。谁能告诉我一个很好的wordpress知识实现这一目标的好方法吗?我的想法是创建一个模板部件,用于保存旋转木马。

编辑:这是我用来创建旋转木马的代码。它基于自定义帖子类型,但在我写的时候,我想使用帖子附件,而不是自定义帖子类型

function custom_slider() {
    $labels = array(
        \'name\'               => _x( \'Slider\', \'post type general name\'),
        \'singular_name\'      => _x( \'Slide\', \'post type singular name\'),
        \'menu_name\'          => _x( \'Slider sede\', \'admin menu\'),
        \'name_admin_bar\'     => _x( \'Slide\', \'add new on admin bar\'),
        \'add_new\'            => _x( \'Add New\', \'Slide\'),
        \'add_new_item\'       => __( \'Name\'),
        \'new_item\'           => __( \'New Slide\'),
        \'edit_item\'          => __( \'Edit Slide\'),
        \'view_item\'          => __( \'View Slide\'),
        \'all_items\'          => __( \'All Slide\'),
        \'featured_image\'     => __( \'Featured Image\', \'text_domain\' ),
        \'search_items\'       => __( \'Search Slide\'),
        \'parent_item_colon\'  => __( \'Parent Slide:\'),
        \'not_found\'          => __( \'No Slide found.\'),
        \'not_found_in_trash\' => __( \'No Slide found in Trash.\'),
    );

    $args = array(
        \'labels\'             => $labels,
        #\'menu_icon\'         => \'dashicons-star-half\',
                \'description\'        => __( \'Description.\'),
        \'public\'             => true,
        \'publicly_queryable\' => true,
        \'show_ui\'            => true,
        \'show_in_menu\'       => true,
        \'query_var\'          => true,
        \'rewrite\'            => true,
        \'capability_type\'    => \'post\',
        \'has_archive\'        => true,
        \'hierarchical\'       => true,
        \'menu_position\'      => null,
        \'supports\'           => array(\'title\',\'editor\',\'thumbnail\')
    );

    register_post_type( \'slider\', $args );
  }
  add_action(\'init\', \'custom_slider\');

<div class="container-fluid" id="carousel-wrapper">
  <div id="sede-carousel" class="carousel slide" data-ride="carousel">
    <div class="carousel-inner">
      <?php $slider = get_posts(array(\'post_type\' => \'slider\', \'posts_per_page\' => 5)); ?>
        <?php $count = 0; ?>
        <?php foreach($slider as $slide): ?>
        <div class="carousel-item <?php echo ($count == 0) ? \'active\' : \'\'; ?>">
          <img src="<?php echo wp_get_attachment_url( get_post_thumbnail_id($slide->ID)) ?>" class="img-responsive d-block w-100 slide"/>
        </div>
        <?php $count++; ?>
      <?php endforeach; ?>
    </div>

    <a class="carousel-control-prev" href="#scarousel" role="button" data-slide="prev">
      <span class="carousel-control-next-prev-icon" aria-hidden="true"></span>
      <span class="sr-only">Previous</span>
    </a>
    <a class="carousel-control-next" href="#scarousel" role="button" data-slide="next">
      <span class="carousel-control-next-icon" aria-hidden="true"></span>
      <span class="sr-only">Next</span>
    </a>
  </div>
</div>

1 个回复
SO网友:Sam

首先,为您的公文包帖子创建自定义帖子类型:

// Register Custom Post Type
function portfolio_cpt() {

    $labels = array(
        \'name\'                  => _x( \'Portfolio\', \'Post Type General Name\', \'text_domain\' ),
        \'singular_name\'         => _x( \'Portfolio\', \'Post Type Singular Name\', \'text_domain\' ),
        \'menu_name\'             => __( \'Portfolio\', \'text_domain\' ),
        \'name_admin_bar\'        => __( \'Portfolio\', \'text_domain\' ),
        \'archives\'              => __( \'Item Archives\', \'text_domain\' ),
        \'attributes\'            => __( \'Item Attributes\', \'text_domain\' ),
        \'parent_item_colon\'     => __( \'Parent Item:\', \'text_domain\' ),
        \'all_items\'             => __( \'All Items\', \'text_domain\' ),
        \'add_new_item\'          => __( \'Add New Item\', \'text_domain\' ),
        \'add_new\'               => __( \'Add New\', \'text_domain\' ),
        \'new_item\'              => __( \'New Item\', \'text_domain\' ),
        \'edit_item\'             => __( \'Edit Item\', \'text_domain\' ),
        \'update_item\'           => __( \'Update Item\', \'text_domain\' ),
        \'view_item\'             => __( \'View Item\', \'text_domain\' ),
        \'view_items\'            => __( \'View Items\', \'text_domain\' ),
        \'search_items\'          => __( \'Search Item\', \'text_domain\' ),
        \'not_found\'             => __( \'Not found\', \'text_domain\' ),
        \'not_found_in_trash\'    => __( \'Not found in Trash\', \'text_domain\' ),
        \'featured_image\'        => __( \'Featured Image\', \'text_domain\' ),
        \'set_featured_image\'    => __( \'Set featured image\', \'text_domain\' ),
        \'remove_featured_image\' => __( \'Remove featured image\', \'text_domain\' ),
        \'use_featured_image\'    => __( \'Use as featured image\', \'text_domain\' ),
        \'insert_into_item\'      => __( \'Insert into item\', \'text_domain\' ),
        \'uploaded_to_this_item\' => __( \'Uploaded to this item\', \'text_domain\' ),
        \'items_list\'            => __( \'Items list\', \'text_domain\' ),
        \'items_list_navigation\' => __( \'Items list navigation\', \'text_domain\' ),
        \'filter_items_list\'     => __( \'Filter items list\', \'text_domain\' ),
    );
    $args = array(
        \'label\'                 => __( \'Portfolio\', \'text_domain\' ),
        \'description\'           => __( \'Post Type Description\', \'text_domain\' ),
        \'labels\'                => $labels,
        \'supports\'              => array( \'title\', \'editor\', \'thumbnail\' ),
        \'taxonomies\'            => array( \'category\', \'post_tag\' ),
        \'hierarchical\'          => false,
        \'public\'                => true,
        \'show_ui\'               => true,
        \'show_in_menu\'          => true,
        \'menu_position\'         => 5,
        \'show_in_admin_bar\'     => true,
        \'show_in_nav_menus\'     => true,
        \'can_export\'            => true,
        \'has_archive\'           => true,
        \'exclude_from_search\'   => false,
        \'publicly_queryable\'    => true,
        \'capability_type\'       => \'page\',
    );
    register_post_type( \'portfolio\', $args );

}
add_action( \'init\', \'portfolio_cpt\', 0 );
接下来,复制单曲。php模板文件,并将其重命名为single portfolio。php。WordPress将在从自定义帖子类型访问帖子时自动加载此内容。您可以阅读更多关于此的信息,here.

对于gallery功能,我将使用gallery addon for ACF. 这将允许编辑轻松上传图像并重新排序。然后可以在旋转木马中输出图像。在ACF中创建字段时,您可以指定仅显示在“公文包”自定义帖子类型上的库。

这里有一个例子from ACF 演示如何将图库与图像滑块集成:

<?php 

$images = get_field(\'gallery\');

if( $images ): ?>
    <div id="slider" class="flexslider">
        <ul class="slides">
            <?php foreach( $images as $image ): ?>
                <li>
                    <img src="<?php echo $image[\'url\']; ?>" alt="<?php echo $image[\'alt\']; ?>" />
                    <p><?php echo $image[\'caption\']; ?></p>
                </li>
            <?php endforeach; ?>
        </ul>
    </div>
    <div id="carousel" class="flexslider">
        <ul class="slides">
            <?php foreach( $images as $image ): ?>
                <li>
                    <img src="<?php echo $image[\'sizes\'][\'thumbnail\']; ?>" alt="<?php echo $image[\'alt\']; ?>" />
                </li>
            <?php endforeach; ?>
        </ul>
    </div>
<?php endif; ?>
如果您不想使用ACF,可以使用WordPress native gallery.