Lorsque nous définissons le lien permanent en tant que Post name
et que nous accédons à wordpress dans tout message par défaut, comme "Testing 123", son lien se présente comme suit:
localhost/foo_articles/testing-123
Maintenant, lorsque nous changeons notre lien permanent en Custom Structure
et que nous définissons une valeur telle que %category%/%postname%
, le lien ressemble à ceci
http://localhost/foo_articles/testing/testing-123/
le test est mon slug de catégorie
Maintenant la partie principale de ma question est
Je crée un plugin dans lequel je crée un article de type foo_articles
et une taxonomie personnalisée foo_categories
Son travail parfaitement. Quand je clique sur une catégorie, son lien ressemble à ceci
http://localhost/foo_articles/foo_category/junk-food/
et quand je clique sur un article pour une seule page, son lien ressemble à ceci
http://localhost/foo_articles/foo_articles/how-to-reduce-the-intake-of-junk-food-in-children/
foo_articles est mon type de message et c'est un changement possible
Maintenant, ma question est: comment puis-je définir des liens qui, lorsqu'un utilisateur définit permaliens Custom Structure
et définissent une valeur telle que %category%/%postname%
, mon lien change également comme ci-dessus, page par défaut.
http://localhost/foo_articles/article cat slug/how-to-reduce-the-intake-of-junk-food-in-children/
Voici le code de type de message personnalisé:
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();
}
Remarque: je modifie mon type de message slug par les paramètres du plug-in et son option_name
est foo_plugin_slug
(c'est une idée de client)
Alors s'il vous plaît dites-moi comment puis-je faire cela. Y a-t-il un crochet, un filtre ou un code htaccess?
Avez-vous essayé ce plugin?
WP Permastructure
Ajoute la possibilité de configurer des liens permanents pour des types de publication personnalisés à l'aide de balises de réécriture telles que% post_id% et% author%.
Téléchargez ce plugin https://wordpress.org/plugins/wp-permastructure/screenshots/