WordPress:动态更改类别

时间:2019-01-28 23:21:23

标签: php wordpress

我有以下代码:

<?php wp_dropdown_categories(); ?>

我从Codex那里得到了这段代码:

var dropdown = document.getElementById("cat");
        function onCatChange() {
            if ( dropdown.options[dropdown.selectedIndex].value > 0 ) {
                location.href = "<?php echo esc_url( home_url( '/' ) ); ?>?cat="+dropdown.options[dropdown.selectedIndex].value;
            }
        }
        dropdown.onchange = onCatChange;

第一个功能包含所有类别,第二个功能在选择时显示它们。选择类别之一后,我将重定向到所选类别的URL。

我的问题是,该循环不显示所选类别的帖子。在寻找解决方案时,我遇到了这样的事情:

$query = new WP_Query( array( 'category_name' => 'staff' ) );

但是它仅适用于“ XYZ类别页面”之类的内容。我的页面允许最终用户创建新类别,因此我需要更多动态内容。

也许是这样吗?

$cat = get_the_category();
$query = new WP_Query( array( 'category_name' => $cat ) );

然后在循环中使用它?

编辑:这是我在循环中使用的代码(category.php和archive.php

            <?php
            query_posts(array('posts_per_page' => 2, 'paged' => $paged));

            $queryObject = new  Wp_Query( array(
                'posts_per_page' => 2,
                'post_type' => array('post'),
                'paged' => $paged,
                'orderby' => 1,
                ));

            if ( $queryObject->have_posts() ) {

                while ( $queryObject->have_posts() ) {
                    $queryObject->the_post();
            ?>

                <div class="shorts">

                    <div class="shorts1">

                        <a class="Text3" href="<?php the_permalink(); ?>"><strong><?php the_title(); ?></strong></a>

                        <br><br>

                        <a class="Text2"><?php the_excerpt() ?></a>

                        <br><br>

                        <div class="more-wrapper"> 
                            <div class="more">
                                <a href="<?php the_permalink(); ?>">Dowiedź się więcej</a>
                            </div>
                        </div>

                    </div>
                </div>

            </article>

        <?php }}  ?>

2 个答案:

答案 0 :(得分:0)

$categories = get_query_var('cat');
if (!empty($categories)) 
{
    $category       =  get_category($cat);
    $categoryName   =  $category->name;   
    $categorySlug   =  $category->slug;   
    $catId          =  $category->cat_ID;
}

$args = array(
                                    'posts_per_page'    => 12, 
                                    'post_type'         => 'post',    
                                    'order'             =>  'ASC',                                  
                                    'paged'             => $paged,        
                                            'tax_query' => array(
                                                array (
                                                    'taxonomy'  => 'category',
                                                    'field'     => 'slug',
                                                    'terms'     => $categorySlug
                                                )
                                ));

$query = NEW WP_Query($args);

答案 1 :(得分:0)

您实际上不需要在category.php中定义自定义查询。 WordPress足够聪明,可以为您做到这一点。只需替换

<?php
            query_posts(array('posts_per_page' => 2, 'paged' => $paged));

            $queryObject = new  Wp_Query( array(
                'posts_per_page' => 2,
                'post_type' => array('post'),
                'paged' => $paged,
                'orderby' => 1,
                ));

            if ( $queryObject->have_posts() ) {

                while ( $queryObject->have_posts() ) {
                    $queryObject->the_post();
            ?>

使用

<?php

if ( have_posts() ) {
    while ( have_posts() ) {
        the_post();
?>