如何按作者显示自定义分类中的条目?

时间:2016-05-14 作者:Thomas Reinstate Monica Myron

我有一个网站,我正在为人们建立自己的书。我对此有一个自定义分类法,标记为books。

我现在需要一个包含网站上所有作者的链接或下拉列表,以便观众可以看到每个作者制作的所有书籍(配置文件显示所有帖子,但没有自定义分类条目)。我一直在尝试做一些事情来做到这一点(通过一个小部件),但我根本不懂php,也一无所获(我也几乎不懂html)。我之所以在小部件中需要它,是因为每次更新时,我使用的主题都会重置php文件,这意味着我无法添加或编辑其中的任何内容(即使我知道如何添加或编辑)。

Question: 我有没有办法:

创建作者的自我更新列表(页面、下拉列表等)我意识到自动操作过程可能是开始编辑主题的php文件,但请记住我不能这样做。我需要一些可以放在小部件中的东西(比如文本小部件中的html),或者可以链接到的某种页面。

Example:

我有“书”的自定义分类法作者A将这两本书分别命名为“一”和“二”作者B把这两本书写成“三”和“四”理想情况下,我希望有一个下拉列表,列出所有作者。这个下拉列表会自动更新自身,因此如果其他作者加入,我不必手动进入并将他添加到下拉列表中。

下拉列表列出了作者A和作者B等。如果单击作者A,他应该能够看到作者A所写的所有书籍,并单击它们进行查看。作者B也是如此。

1 个回复
SO网友:adamlaughlin

当你需要修改一个主题时,你可以创建一个“子主题”有很好的说明here.

因此,我们只需在另一个主题不会覆盖的文件夹中创建修改后代码的安全副本。

我认为您要做的是创建一个自定义帖子类型“Book”,并将此帖子类型注册到“Author”分类中以下是一个示例:

function book_object() {
    register_post_type(\'book\', array(
        \'labels\' => array(
            \'name\' => __(\'Books\', \'textdomain\'),
            \'singular_name\' => __(\'Book\', \'textdomain\'),
            \'add_new\' => __(\'Add New\', \'textdomain\'),
            \'add_new_item\' => __(\'Add New Book\', \'textdomain\'),
            \'edit_item\' => __(\'Edit Book\', \'textdomain\'),
            \'new_item\' => __(\'New Book\', \'textdomain\'),
            \'view_item\' => __(\'View Book\', \'textdomain\')
        ),
        \'description\' => \'People like books.\',
        \'register_meta_box_cb\' => \'book_fields\',
        \'public\' => true,
        \'menu_position\' => 20,
        \'supports\' => array(\'title\', \'editor\', \'thumbnail\',),
        \'hierarchical\' => true
    )
    );
}
    function book_fields() {
        add_meta_box(\'book_details\', __(\'Book Details\', \'textdomain\'), \'book_fields_cb\', \'book\', \'normal\', \'high\');
        function book_fields_cb($post) {
            $value = get_post_meta($post->ID, \'pubdate\', true);
            echo \'<label for="pubdate">\'.__(\'Publish date\', \'textdomain\').\'</label><br />\';
            echo \'<input type="text" id="pubdate" name="pubdate" value="\'.esc_attr($value).\'" size="25" /><br />\';
            $value = get_post_meta($post->ID, \'field_2\', true);
            echo \'<label for="field_2">\'.__(\'More custom fields\', \'textdomain\').\'</label><br />\';
            echo \'<input type="text" id="field_2" name="field_2" value="\'.esc_attr($value).\'" size="25" /><br />\';
        }
    }
创建Book对象的。

要为作者创建分类,请执行以下操作:

function author_taxonomy() {
    $labels = array(
        \'name\'              => _x( \'Authors\', \'taxonomy general name\' ),
        \'singular_name\'     => _x( \'Author\', \'taxonomy singular name\' ),
        \'search_items\'      => __( \'Search Authors\' ),
        \'all_items\'         => __( \'All Authors\' ),
        \'parent_item\'       => __( \'Parent Author\' ),
        \'parent_item_colon\' => __( \'Parent Author:\' ),
        \'edit_item\'         => __( \'Edit Author\' ),
        \'update_item\'       => __( \'Update Author\' ),
        \'add_new_item\'      => __( \'Add New Author\' ),
        \'new_item_name\'     => __( \'New Author\' ),
        \'menu_name\'         => __( \'Authors\' ),
    );
    $args = array(
        \'hierarchical\'      => true,
        \'labels\'            => $labels,
        \'show_ui\'           => true,
        \'show_admin_column\' => true,
        \'query_var\'         => true,
        \'rewrite\'           => array(
                                \'slug\' => \'authors\',
                                \'hierarchical\' => true,
                                \'with_front\' => false
                            ),
    );
    register_taxonomy(\'author\', array(\'book\'), $args);
}
然后我们将这些函数连接到Wordpress中,如下所示:

add_action(\'init\', \'my_init\');
function my_init() {
    book_object();
    author_taxonomies();
}
最后一部分通常放在文件的顶部。有些人将add\\u操作行放在他们调用的代码块下面,但我喜欢在顶部嵌套连续的操作调用,以帮助我理解这一切。

这段代码基本上都是在一个名为functions的文件中独立完成的。php-除非您不使用该函数。旧主题文件夹中的php。

使用新样式创建新的主题文件夹。css-它只需要在顶部有以下注释:

/*
 Theme Name:   My custom book portal
 Description:  Child theme of OLD-THEME-NAME
 Template:     OLD-THEME-SLUG
 Text Domain:  textdomain
*/
因此,现在您在/wp-content/themes/中有了一个新文件夹,可以任意调用它。它包含样式。css和函数。php和上面的所有代码。您可以向该文件夹添加一个文件,该文件现在将帮助您显示数据;我们称之为分类学书籍。php并将其放置在子主题文件夹中。

我建议您从复制当前主题分类法中的所有代码开始。php文件,或者如果当前主题中不存在此类文件,请查找归档文件。php。这些文件将从您要查找的几乎所有内容开始。

如何让用户访问此页面,让我们回到您最初的问题-菜单。我们有它现在将显示的数据,我们有它的选择将链接到的页面-我们需要下拉菜单。我喜欢把它放在导航栏上。

在外观->菜单中,现在可以从菜单生成器左侧的WP选择框向任何导航菜单添加分类项目。如果你想让我给你写一个快速的小部件,我会寻找你的回复。

相关推荐

sort items by randomness

我有一家电子商务商店。我是php和wordpress的新手。(虽然我有python和ruby的背景,但我不懂php)我有一个包含项目的页面。现在,最后20项显示在页面上(或类似的内容)。但我想显示的不是最后一个,而是这个类别中随机排列的项目。这是列出存档中的项目的代码。php文件:<?php echo category_description( get_category_by_slug(\'category-slug\')->term_id ); ?></div> &