将类别添加到不使用自定义帖子类型的页面

时间:2017-01-19 作者:Jacob Punton

我当前的站点有自定义的帖子类型,这些类型从根域中运行,因此在CPT中创建的任何内容都类似于:domain。com/页面名称/而不是域。com/自定义帖子类型名称/帖子名称/。有了这个,我想更新到WP 4.7,但我不能,因为它破坏了我的网站和CPT的混乱。

这就是我使用自定义帖子类型的原因,所以我有一个页面模板,它可以拉入与该自定义帖子类型相关的所有内容,并将这些页面显示为列表(类似于博客页面)。

然而,由于一切都脱离了根本。我想知道是否有一种方法可以定制Wordpress,让我可以选择向页面添加一个类别,因此,在我可以创建一个代码,将该类别中的所有页面显示为页面模板之后。

这样做的原因是,我可以更新到Wordpress 4.7,并且没有5-10个不同的CPT,因为在后端的不同自定义帖子类型标签之间点击会让人恼火。

如果任何人有任何想法或知道的插件,将做这件事。

如果有些人有代码将所有页面显示为一个列表,放在该类别下,那就太好了-请分享。

谢谢

Update

以下是我的循环代码:

<?php wp_reset_query(); ?>
                            <?php $query = new WP_Query( array( post_type=page, \'cat\' => 541 ) ); ?>
have\\u posts()):while($query->have\\u posts()):$query->the\\u post();?>

                                            <?php if(has_post_thumbnail()) {
                                                the_post_thumbnail(array(150,150));
                                            } else {
                                                echo \'<img class="alignleft" src="\'.get_bloginfo("template_url").\'/images/empty_150_150_thumb.gif" width="150" height="150" />\';
                                            }
                                            ?>


                                            <div class="entry">
                                                <h3 class="blog_header"><a href="<?php echo get_permalink() ?>" rel="bookmark" title="Permanent Link: <?php the_title(); ?>"><?php the_title(); ?></a></h3>
                                                <?php the_excerpt(); ?>
                                                <a class="button_link" href="<?php the_permalink(); ?>"><span>Read More</span></a>

                                            </div>  


                                    </div>

我试图在循环中显示已添加到该类别的页面。我的循环有什么问题吗?

谢谢

2 个回复
最合适的回答,由SO网友:Jared Counts 整理而成

如果不想附加默认的帖子类别分类法,可以始终为页面创建一个新的专门分类法。将此插入到functions.php 文件:

add_action( \'init\', \'create_page_taxonomies\' );
function create_page_taxonomies() {
    register_taxonomy(\'page_category\', \'page\', array(
        \'hierarchical\' => true,
        \'labels\' => array(
            \'name\' => _x( \'Page Category\', \'taxonomy general name\' ),
            \'singular_name\' => _x( \'page-category\', \'taxonomy singular name\' ),
            \'search_items\' =>  __( \'Search Page Categories\' ),
            \'all_items\' => __( \'All Page Categories\' ),
            \'parent_item\' => __( \'Parent Page Category\' ),
            \'parent_item_colon\' => __( \'Parent Page Category:\' ),
            \'edit_item\' => __( \'Edit Page Category\' ),
            \'update_item\' => __( \'Update Page Category\' ),
            \'add_new_item\' => __( \'Add New Page Category\' ),
            \'new_item_name\' => __( \'New Page Category Name\' ),
            \'menu_name\' => __( \'Page Categories\' )
        ),
        \'public\' => true,
        \'rewrite\' => array(
            \'slug\' => \'page-category\',
            \'with_front\' => false,
            \'hierarchical\' => true
        )
    ));
}
这是一个非常简单的新分类法,还有很多其他选项可用,其中有一个完整的列表in the WP Codex.

UPDATE:

我相信这就是整个循环的样子:

<?php
    wp_reset_query();
    $query = new WP_Query(
        array(
            \'post_type\' => \'page\',
            \'tax_query\' => array(
                array( 
                    \'taxonomy\' => \'page_category\',
                    \'field\' => \'term_id\',
                    \'terms\' => 541
                )
            )
        )
    );
    if ( $query->have_posts() ) :
        while ( $query->have_posts() ) : $query->the_post(); ?>
            <div>
<?php
            if ( has_post_thumbnail() ) :
                the_post_thumbnail( array(150,150) );
            else : ?>
                <img class="alignleft" src="<?php echo get_bloginfo("template_url"); ?>/images/empty_150_150_thumb.gif" width="150" height="150" />
<?php
            endif; ?>
                <div class="entry">
                    <h3 class="blog_header"><a href="<?php echo get_permalink(); ?>" rel="bookmark" title="Permanent Link: <?php the_title(); ?>"><?php the_title(); ?></a></h3>
                    <?php the_excerpt(); ?>
                    <a class="button_link" href="<?php the_permalink(); ?>"><span>Read More</span></a>
                </div>
            </div>
<?php
        endwhile;
    endif; ?>

SO网友:Kudratullah

checkout this solution by @Matoeil

function myplugin_settings() {  
// Add tag metabox to page
register_taxonomy_for_object_type(\'post_tag\', \'page\'); 
// Add category metabox to page
register_taxonomy_for_object_type(\'category\', \'page\');  
}
 // Add to the admin_init hook of your theme functions.php file 
add_action( \'init\', \'myplugin_settings\' );

相关推荐

插件放置在/wp-content/plugins内的文件夹中时不保存值

我得到了WordPRess插件的以下代码,它在每个页面/后期编辑屏幕上添加了两个自定义输入。然后将这些值保存并输出到前端页面的标题中。如果代码位于内部,则可以正常工作。php文件并直接放入“wp内容/插件”。然而,如果我把它放在插件(如“wp-content/plugins/myplugin”)中自己的文件夹中,那么在通过编辑屏幕保存帖子/页面时,输入字段不会保存。此外,它不会向前端页面html标题部分输出任何内容。这似乎是一个被放弃的项目,所以我无法与原始开发人员一起制定解决方案。然而,代码中的某些内容