使用自定义分类来标记要包含在滑块中的帖子

时间:2019-10-03 作者:Jeff Sydor

我对如何正确处理这个问题感到困惑,而且关于这个问题的信息量不是很直接。我正在尝试为我的主页开发一个自定义滑块,需要创建一个自定义分类“滑块”,以标记哪些帖子可以包含在幻灯片中。

Slider Example

以下是我使用的代码:

add_action( \'init\', \'create_slider_taxonomies\', 0 );

function create_slider_taxonomies() {
    $labels = array(
        \'name\'              => _x( \'Sliders\', \'taxonomy general name\', \'textdomain\' ),
        \'singular_name\'     => _x( \'Slider\', \'taxonomy singular name\', \'textdomain\' ),
        \'search_items\'      => __( \'Search Sliders\', \'textdomain\' ),
        \'all_items\'         => __( \'All Sliders\', \'textdomain\' ),
        \'parent_item\'       => __( \'Parent Slider\', \'textdomain\' ),
        \'parent_item_colon\' => __( \'Parent Slider:\', \'textdomain\' ),
        \'edit_item\'         => __( \'Edit Slider\', \'textdomain\' ),
        \'update_item\'       => __( \'Update Slider\', \'textdomain\' ),
        \'add_new_item\'      => __( \'Add New Slider\', \'textdomain\' ),
        \'new_item_name\'     => __( \'New Slider Name\', \'textdomain\' ),
        \'menu_name\'         => __( \'Slider\', \'textdomain\' ),
    );


    $args = array(
        \'hierarchical\'      => true,
        \'labels\'            => $labels,
        \'show_ui\'           => true,
        \'show_admin_column\' => true,
        \'query_var\'         => true,
        \'rewrite\'           => array( \'slug\' => \'slider\' ),
        \'show_in_rest\'      => true, // need to show this in order for option to display under the \'Document\' panel in a post
    );

    register_taxonomy( \'slider\', array( \'post\', \'slider\' ), $args );
}
它很好地出现在帖子中:

Working sidebar example

现在,我不确定如何查询帖子列表,以便将内容组合到页面上。

我想我可以对用于归档页面的$wp\\u查询进行一些修改,但这似乎不起作用:

<?php 
$temp = $wp_query; $wp_query= null;
$wp_query = new WP_Query(); 
$wp_query->query(array(
  \'posts_per_page\' => -1,
  \'taxonomy\'       => slider,
  \'field\'          => slug,
  \'terms\'          => homepage
));
while ($wp_query->have_posts()) : $wp_query->the_post(); ?>
也许这不是最好的方法。但我不想再依赖另一个第三方插件,尤其是当大多数滑块插件没有以我希望的方式提供内容时。

如有任何建议,将不胜感激。非常感谢。

1 个回复
SO网友:Dave Romsey

记住用引号将字符串括起来。我认为这是主要问题。这对我很有用:

<?php
// https://developer.wordpress.org/reference/classes/wp_query/#taxonomy-parameters
// Set up a new WP_Query object for posts that have the \'homepage\' term
// set for the \'slider\' taxonomy:
$slide_query = new WP_Query( array(
    \'posts_per_page\' => 100, // Set a reasonable limit just in case.
    \'post_type\'      => \'post\',
    \'tax_query\'  => array(
        array(
            \'taxonomy\' => \'slider\', // Strings should have quotes!
            \'field\'    => \'slug\',
            \'terms\'    => \'homepage\',
        ),
    ),
));
?>
然后输出HTML:

<?php if ( $slide_query->have_posts() ) : ?>
    <div class="slider">
        <?php while ( $slide_query->have_posts() ) : $slide_query->the_post(); ?>
            <div class="slide">
                <h2 class="slide-title">><?php the_title(); ?></h2>
                <div class="slide-content">
                    <?php the_content(); ?>
                </div>
            </div>
        <?php endwhile; ?>
    </div>
<?php wp_reset_postdata(); ?>
<?php endif; ?>
你不需要做$temp = $wp_query; $wp_query= null; 事情只需像我在示例中所做的那样创建一个新变量,然后调用wp_reset_postdata() 正如我在示例中所做的那样。

相关推荐

Sidebar slideshow widget

有人知道可以放在边栏上的高质量图像幻灯片小部件吗?