web-dev-qa-db-ja.com

カスタム投稿タイプパーマリンクを変更するには

PermalinkをPost nameに設定し、デフォルトの投稿をwordpressに移動すると、 "Testing 123"単一ページのように、そのリンクは次のようになります。

localhost/foo_articles/testing-123

パーマリンクをCustom Structureに変更し、値を%category%/%postname%のように設定すると、リンクは次のようになります。

http://localhost/foo_articles/testing/testing-123/

テストは私のカテゴリスラッグです

私の質問の主要部分はです。

私はポストタイプfoo_articlesとカスタム分類法foo_categoriesを作成するプラグインを作ります

その仕事は完璧です。カテゴリをクリックすると、そのリンクは次のようになります。

http://localhost/foo_articles/foo_category/junk-food/

単一のページの記事をクリックすると、そのリンクは次のようになります。

http://localhost/foo_articles/foo_articles/how-to-reduce-the-intake-of-junk-food-in-children/

foo_articlesは私の投稿タイプで、変更が可能です

今私の質問はどのように私はユーザーがCustom Structureのパーマリンクを設定し、%category%/%postname%のような値を設定するときに私のリンクも上記のデフォルトの投稿単一ページのように変更するリンクを設定できるかです。

http://localhost/foo_articles/article cat slug/how-to-reduce-the-intake-of-junk-food-in-children/

これがカスタム投稿タイプコードです。

add_action('init', 'foo_articles');
function foo_articles() {

    $foo_slug = 'foo_articles';
    $foo_slug = get_option('foo_plugin_slug');

    $labels = array(
        'name'                  =>  __('Foo', 'fff'),
        'singular_name'         =>  __('Foo', 'fff'),
        'all_items'             =>  __('Articles', 'fff'),
        'add_new'               =>  __('New Article', 'fff'),
        'add_new_item'          =>  __('Add New Article', 'fff'),
        'edit_item'             =>  __('Edit Article', 'fff'),
        'new_item'              =>  __('New Article', 'fff'),
        'view_item'             =>  __('View Articles', 'fff'),
        'search_items'          =>  __('Search Articles', 'fff'),
        'not_found'             =>  __('Nothing found', 'fff'),
        'not_found_in_trash'    =>  __('Nothing found in Trash', 'fff'),
        'parent_item_colon'     =>  ''
    );

    $foo_rewrite = array(
        'slug'          =>  FOO_PLUGIN_SLUG, // i define this in plugin index file
        'with_front'    =>  true,
        'pages'         =>  false,
        'feeds'         =>  true,
    );

    $args = array(
        'labels'                =>  $labels,
        'public'                =>  true,
        'publicly_queryable'    =>  true,
        'show_ui'               =>  true,
        'query_var'             =>  true,
        'menu_icon'             =>  plugin directory.'images/icon-foo.png',
        'capability_type'       =>  'post',
        'hierarchical'          =>  false,
        'menu_position'         =>  3,
        'supports'              =>  array('title','editor','thumbnail','comments','tags'),
        'rewrite'               =>  $foo_rewrite,
        'show_in_menu'          =>  true,
        'show_in_nav_menus'     =>  true,
        'show_in_admin_bar'     =>  true,
        'can_export'            =>  true,
        'has_archive'           =>  true,
        'exclude_from_search'   =>  true
    );

    register_post_type( 'foo_articles' , $args );
    flush_rewrite_rules();
}
add_action( 'init', 'foo_taxonomies', 0 );

// Article taxonamy
function foo_taxonomies() {
    // Add new taxonomy, make it hierarchical (like categories)
    $labels = array(
        'name'              =>  __( 'Article Category', 'fff'),
        'singular_name'     =>  __( 'Article Category', 'fff' ),
        'search_items'      =>  __( 'Search Article Category', 'fff' ),
        'all_items'         =>  __( 'All Article Categories', 'fff' ),
        'parent_item'       =>  __( 'Parent Article Category', 'fff' ),
        'parent_item_colon' =>  __( 'Parent Article Category:', 'fff' ),
        'edit_item'         =>  __( 'Edit Article Category', 'fff' ),
        'update_item'       =>  __( 'Update Article Category', 'fff' ),
        'add_new_item'      =>  __( 'Add New Article Category', 'fff' ),
        'new_item_name'     =>  __( 'New Article Category Name', 'fff' ),
    'menu_name'         =>  __( 'Categories', 'fff' )
    );  

    register_taxonomy( 'foo_categories', array( 'foo_articles' ), array(
        'hierarchical'      =>  true,
        "labels"            =>  $labels,
        "singular_label"    =>  __( 'Foo Category', 'foo'),
        'show_ui'           =>  true,
        'query_var'         =>  true,
        'rewrite'           =>  array( 'slug' => 'foo_category', 'with_front' => true )
    ));
    flush_rewrite_rules();
}

注:私は自分の投稿タイプのスラッグをプラグイン設定で変更します、そしてそのoption_namefoo_plugin_slugです(クライアントの考えです)

だから私はこれを行うことができる方法を教えてください。フック、フィルタ、またはhtaccessコードはありますか

1
deemi-D-nadeem

このプラグインを試しましたか?

WPの全構造

%post_id%や%author%などの書き換えタグを使用して、カスタム投稿タイプのパーマリンクを設定する機能を追加します。

enter image description here

このプラグインをダウンロードする https://wordpress.org/plugins/wp-permastructure/screenshots/