web-dev-qa-db-ja.com

単一の投稿フォーマットの投稿を表示する

数週間前に、特定の「フォーマット」のすべての投稿を表示するURLパスが表示されましたが、リンクがなくなりました。誰もがその道を知っていますか?

それはのようなものになります

mywebsitex.com/format/image

標準のWP installで動作します

mywebsitex.com/type/image/

何か案は?

3
Mr. B

投稿フォーマットの分類法

投稿フォーマットはデフォルトの分類法で、次のように登録されています。

register_taxonomy( 'post_format', 'post', array(
            'public' => true,
            'hierarchical' => false,
            'labels' => array(
                    'name' => _x( 'Format', 'post format' ),
                    'singular_name' => _x( 'Format', 'post format' ),
            ),
            'query_var' => true,
            'rewrite' => $rewrite['post_format'],
            'show_ui' => false,
            '_builtin' => true,
            'show_in_nav_menus' => current_theme_supports( 'post-formats' ),
    ) );

どこで

$rewrite['post_format'] = $post_format_base ? array( 'slug' => $post_format_base ):false;

そして

$post_format_base = apply_filters( 'post_format_rewrite_base', 'type' );

分類スラッグはpost_format、書き換えスラグはtypeです。

投稿フォーマットの用語:

get_post_format_strings()関数から利用可能な投稿フォーマットを見ることができます:

/**
 * Returns an array of post format slugs to their translated and pretty display versions
 * 
 * @since 3.1.0
 *
 * @return array The array of translated post format names.
 */
function get_post_format_strings() {
        $strings = array(
                'standard' => _x( 'Standard', 'Post format' ), // Special case. any value that evals to false will be considered standard
                'aside'    => _x( 'Aside',    'Post format' ),
                'chat'     => _x( 'Chat',     'Post format' ),
                'gallery'  => _x( 'Gallery',  'Post format' ),
                'link'     => _x( 'Link',     'Post format' ),
                'image'    => _x( 'Image',    'Post format' ),
                'quote'    => _x( 'Quote',    'Post format' ),
                'status'   => _x( 'Status',   'Post format' ),
                'video'    => _x( 'Video',    'Post format' ),   
                'audio'    => _x( 'Audio',    'Post format' ),
        );
        return $strings;
}

これらの用語にはスラッグpost-format-{$format}があります。ここで$formatは次のいずれかです。

aside, chat, gallery, link, image, quote, status, video, audio

standardは含まれていません。

投稿フォーマットの書き換え規則:

ここでは、対応する生成された書き換え規則を見ることができます。

Rewrite Rules

Monkeyman Rewrite Analyzerによると

投稿形式の公開クエリ:

したがって、次のパブリッククエリを使用できます。

http://example.tld/type/post-format-aside/
http://example.tld/type/post-format-chat/
http://example.tld/type/post-format-gallery/
http://example.tld/type/post-format-link/
http://example.tld/type/post-format-image/
http://example.tld/type/post-format-quote/
http://example.tld/type/post-format-status/
http://example.tld/type/post-format-video/
http://example.tld/type/post-format-audio/

特定の投稿フォーマットですべての投稿を表示します。

更新:

@ToddBenrudは、彼がどうにかして手に入れたと言った:

http://example.tld/type/image/

働く。

その理由は、次のrequestフィルタです。

/**
 * Filters the request to allow for the format prefix.
 *
 * @access private
 * @since 3.1.0
 */
function _post_format_request( $qvs ) {
        if ( ! isset( $qvs['post_format'] ) )
                return $qvs;
        $slugs = get_post_format_slugs();
        if ( isset( $slugs[ $qvs['post_format'] ] ) )
                $qvs['post_format'] = 'post-format-' . $slugs[ $qvs['post_format'] ];
        $tax = get_taxonomy( 'post_format' );
        if ( ! is_admin() )
                $qvs['post_type'] = $tax->object_type;
        return $qvs;
}
add_filter( 'request', '_post_format_request' );

これは、クエリ変数を持つリクエストが以下のことを意味します。

Array
(
    [post_format] => image
)

正しい用語名に変更されます。

Array
(
    [post_format] => post-format-image
    [post_type] => Array
        (
            [0] => post
        )
)

だから我々も使用することができます:

http://example.tld/type/aside/
http://example.tld/type/chat/
http://example.tld/type/gallery/
http://example.tld/type/link/
http://example.tld/type/image/
http://example.tld/type/quote/
http://example.tld/type/status/
http://example.tld/type/video/
http://example.tld/type/audio/
7
birgire