admin管理员组文章数量:1122846
I'm trying to achieve a two level portfolio structure, and it works fine in the breadcrumbs but not in the URL. The idea is to show the portfolio slug (destinations) followed by the portfolio category (if exist) and last the portfolio name. This is the file (portfolio-post.php) that needs to be altered, but i have no clue on how to do that, any help would be appreciated:
<?php
/*******************************************************************************************************************
* Create and register Portfolio post type
*/
if ( !function_exists('ishyoboy_portfolio_post_type') ){
function ishyoboy_portfolio_post_type()
{
$labels = array(
'name' => __( 'Portfolio', 'ishyoboy_assets' ),
'singular_name' => __( 'Portfolio Item', 'ishyoboy_assets' ),
'add_new' => _x( 'Add New Item', 'portfolio-post', 'ishyoboy_assets' ),
'add_new_item' => __( 'Add New Item', 'ishyoboy_assets' ),
'edit_item' => __( 'Edit Portfolio Item', 'ishyoboy_assets' ),
'new_item' => __( 'New Portfolio Item', 'ishyoboy_assets' ),
'view_item' => __( 'View Portfolio Item', 'ishyoboy_assets' ),
'search_items' => __( 'Search Portfolio Items', 'ishyoboy_assets' ),
'not_found' => __( 'No Portfolio Items Found', 'ishyoboy_assets' ),
'not_found_in_trash'=> __( 'No Portfolio Items Found In Trash', 'ishyoboy_assets' ),
'parent_item_colon' => __( 'Parent Portfolio Item', 'ishyoboy_assets' ),
'menu_name' => __( 'Portfolio', 'ishyoboy_assets' ),
'all_items' => __( 'All Portfolio Items', 'ishyoboy_assets' ),
);
$taxonomies = array();
$supports = apply_filters( 'ish_cpt_plugin_portfolio_post_type_supports', array('title', 'editor', 'thumbnail', 'comments' ) );
global $ish_options;
if ( isset( $ish_options['slug_portfolio'] ) && '' != $ish_options['slug_portfolio'] ){
$slug = trim( $ish_options['slug_portfolio'] );
} else {
$slug = _x('portfolio', 'URL slug', 'ishyoboy_assets'); // "URL slug" is necessary for WPML to be able to translate the slug
}
$post_type_args = array(
'labels' => $labels,
'singular_label' => __( 'Portfolio' , 'ishyoboy_assets' ),
'public' => true,
'publicly_queryable' => true,
'exclude_from_search' => false,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'capability_type' => 'post',
'has_archive' => false,
'hierarchical' => false,
'rewrite' => array(
'slug' => $slug,
'with_front' => true,
'feed' => true,
'pages' => false
),
'supports' => $supports,
'menu_position' => null,
'menu_icon' => null, //get_template_directory_uri() . '/inc/slider/images/icon.png',
'taxonomies' => $taxonomies
);
register_post_type( 'portfolio-post', $post_type_args );
}
}
/*******************************************************************************************************************
* Set Portfolio post type's messages
*/
if ( !function_exists('ishyoboy_portfolio_messages') ){
function ishyoboy_portfolio_messages($messages)
{
global $post, $post_ID;
$messages['portfolio-post'] =
array(
0 => '',
1 => sprintf(('Portfolio Updated. <a href="%s">View portfolio</a>'), esc_url(get_permalink($post_ID))),
2 => __('Custom Field Updated.', 'ishyoboy_assets'),
3 => __('Custom Field Deleted.', 'ishyoboy_assets'),
4 => __('Portfolio Updated.', 'ishyoboy_assets'),
5 => isset($_GET['revision']) ? sprintf( __('Portfolio Restored To Revision From %s', 'ishyoboy_assets'), wp_post_revision_title((int)$_GET['revision'], false)) : false,
6 => sprintf(__('Portfolio Published. <a href="%s">View Portfolio</a>', 'ishyoboy_assets'), esc_url(get_permalink($post_ID))),
7 => __('Portfolio Saved.', 'ishyoboy_assets'),
8 => sprintf(__('Portfolio Submitted. <a target="_blank" href="%s">Preview Portfolio</a>', 'ishyoboy_assets'), esc_url( add_query_arg('preview', 'true', get_permalink($post_ID)))),
9 => sprintf(__('Portfolio Scheduled For: <strong>%1$s</strong>. <a target="_blank" href="%2$s">Preview Portfolio</a>', 'ishyoboy_assets'), date_i18n( __( 'M j, Y @ G:i', 'ishyoboy_assets' ), strtotime($post->post_date)), esc_url(get_permalink($post_ID))),
10 => sprintf(__('Portfolio Draft Updated. <a target="_blank" href="%s">Preview Portfolio</a>', 'ishyoboy_assets'), esc_url( add_query_arg('preview', 'true', get_permalink($post_ID)))),
);
return $messages;
}
}
add_filter( 'post_updated_messages', 'ishyoboy_portfolio_messages' );
/*******************************************************************************************************************
* Create Category for Portfolio post type
*/
if ( !function_exists('ishyoboy_portfolio_category') ){
function ishyoboy_portfolio_category()
{
$labels = array(
'name' => __( 'Portfolio Categories', 'ishyoboy_assets' ),
'singular_name' => __( 'Portfolio Category', 'ishyoboy_assets' ),
'search_items' => __( 'Search Portfolio Categories', 'ishyoboy_assets' ),
'popular_items' => __( 'Popular Portfolio Categories', 'ishyoboy_assets' ),
'all_items' => __( 'All Portfolio Categories', 'ishyoboy_assets' ),
'parent_item' => __( 'Parent Portfolio Category', 'ishyoboy_assets' ),
'edit_item' => __( 'Edit Portfolio Category', 'ishyoboy_assets' ),
'update_item' => __( 'Update Portfolio Category', 'ishyoboy_assets' ),
'add_new_item' => __( 'Add New Portfolio Category', 'ishyoboy_assets' ),
'new_item_name' => __( 'New Portfolio Category', 'ishyoboy_assets' ),
'separate_items_with_commas' => __( 'Separate Portfolio Categories with commas', 'ishyoboy_assets' ),
'add_or_remove_items' => __( 'Add or remove Portfolio Category', 'ishyoboy_assets' ),
'choose_from_most_used' => __( 'Choose from most used Portfolio Categories', 'ishyoboy_assets' )
);
global $ish_options;
if ( isset( $ish_options['slug_portfolio'] ) && '' != $ish_options['slug_portfolio'] ){
$slug = trim( $ish_options['slug_portfolio'] ) . '-category';
} else {
$slug = _x('portfolio-category', 'URL slug', 'ishyoboy_assets'); // "URL slug" is necessary for WPML to be able to translate the slug
}
$args = array(
'labels' => $labels,
'public' => true,
'hierarchical' => true,
'show_ui' => true,
'show_in_nav_menus' => true,
'query_var' => true,
"rewrite" => array(
'slug' => $slug,
'hierarchical' => true
)
);
register_taxonomy( 'portfolio-category', 'portfolio-post', $args );
}
}
if ( is_admin() ){
/*******************************************************************************************************************
* Backend columns
*/
if ( !function_exists('ishyoboy_portfolio_edit_columns') ){
function ishyoboy_portfolio_edit_columns( $columns ){
$columns = array(
"cb" => "<input type=\"checkbox\" />",
"title" => __( 'Title', 'ishyoboy_assets' ),
"author" => __( 'Author', 'ishyoboy_assets' ),
"category" => __( 'Categories', 'ishyoboy_assets' ),
"thumbnail" => __( 'Image', 'ishyoboy_assets' ),
"date" => __( 'Date', 'ishyoboy_assets' )
);
return $columns;
}
}
add_filter("manage_edit-portfolio-post_columns", "ishyoboy_portfolio_edit_columns");
if ( !function_exists('ishyoboy_portfolio_custom_columns') ){
function ishyoboy_portfolio_custom_columns($column){
global $post;
switch ($column)
{
case "thumbnail":
the_post_thumbnail('thumbnail');
break;
case "category":
echo get_the_term_list($post->ID, 'portfolio-category', '', ', ','');
break;
}
}
}
add_action( 'manage_portfolio-post_posts_custom_column' , 'ishyoboy_portfolio_custom_columns', 10, 2 );
/**
* Add dropdown filter for sliders
*/
if ( !function_exists('ishyoboy_restrict_portfolio_by_category') ){
function ishyoboy_restrict_portfolio_by_category() {
global $typenow, $wp_query;
if ( isset($typenow) && 'portfolio-post' == $typenow ) {
$taxonomy = 'portfolio-category';
$term = isset( $wp_query->query[$taxonomy]) ? $wp_query->query[$taxonomy] : '';
$portfolio_taxonomy = get_taxonomy($taxonomy);
wp_dropdown_categories(array(
'show_option_all' => __("Show all", 'ishyoboy_assets') . ' ' . $portfolio_taxonomy->label,
'taxonomy' => $taxonomy,
'name' => $taxonomy,
'orderby' => 'name',
'selected' => $term,
'hierarchical' => true,
'depth' => 0,
'show_count' => true, // Show # listings in parens
'hide_empty' => true, // Don't show businesses w/o listings
));
}
}
}
add_action('restrict_manage_posts','ishyoboy_restrict_portfolio_by_category');
if ( !function_exists('taxonomy_filter_ishyoboy_portfolio_request') ){
function taxonomy_filter_ishyoboy_portfolio_request( $query ) {
global $pagenow, $typenow;
if ( isset($pagenow) && 'edit.php' == $pagenow ) {
$filters = get_object_taxonomies( $typenow );
if ( isset($filters) && '' != $filters){
foreach ( $filters as $tax_slug ) {
$var = &$query->query_vars[$tax_slug];
if ( isset($var) && '' != $var ) {
$term = get_term_by( 'id', $var, $tax_slug );
if ( isset($term) && '' != $term ) {
$var = $term->slug;
}
}
}
}
}
}
}
add_filter( 'parse_query', 'taxonomy_filter_ishyoboy_portfolio_request' );
if ( !function_exists('ishyoboy_portfolio_post_thumbnails') ){
function ishyoboy_portfolio_post_thumbnails() {
$supported_types = get_theme_support( 'post-thumbnails' );
if ( $supported_types === false ) {
add_theme_support( 'post-thumbnails', array( 'portfolio-post' ) );
}
elseif( true === $supported_types){
}
elseif( is_array( $supported_types[0] ) ){
$supported_types[0][] = 'portfolio-post';
add_theme_support( 'post-thumbnails', $supported_types[0] );
}
}
}
/**
* Change the default setting for comments on Portfolio posts. Make them closed by default.
*/
if ( ! function_exists( 'ishyoboy_default_content_portfolio' ) ) {
function ishyoboy_default_content_portfolio( $post_content, $post ) {
if( $post->post_type )
switch( $post->post_type ) {
case 'portfolio-post':
$post->comment_status = 'closed';
break;
}
return $post_content;
}
}
add_filter( 'default_content', 'ishyoboy_default_content_portfolio', 10, 2 );
}
/*******************************************************************************************************************
* Initialize Portfolio post type
*/
add_action( 'init', 'ishyoboy_portfolio_post_type' );
add_action( 'init', 'ishyoboy_portfolio_category', 0 );
//add_action( 'after_theme_setup','ishyoboy_portfolio_post_thumbnails' );
I'm trying to achieve a two level portfolio structure, and it works fine in the breadcrumbs but not in the URL. The idea is to show the portfolio slug (destinations) followed by the portfolio category (if exist) and last the portfolio name. This is the file (portfolio-post.php) that needs to be altered, but i have no clue on how to do that, any help would be appreciated:
<?php
/*******************************************************************************************************************
* Create and register Portfolio post type
*/
if ( !function_exists('ishyoboy_portfolio_post_type') ){
function ishyoboy_portfolio_post_type()
{
$labels = array(
'name' => __( 'Portfolio', 'ishyoboy_assets' ),
'singular_name' => __( 'Portfolio Item', 'ishyoboy_assets' ),
'add_new' => _x( 'Add New Item', 'portfolio-post', 'ishyoboy_assets' ),
'add_new_item' => __( 'Add New Item', 'ishyoboy_assets' ),
'edit_item' => __( 'Edit Portfolio Item', 'ishyoboy_assets' ),
'new_item' => __( 'New Portfolio Item', 'ishyoboy_assets' ),
'view_item' => __( 'View Portfolio Item', 'ishyoboy_assets' ),
'search_items' => __( 'Search Portfolio Items', 'ishyoboy_assets' ),
'not_found' => __( 'No Portfolio Items Found', 'ishyoboy_assets' ),
'not_found_in_trash'=> __( 'No Portfolio Items Found In Trash', 'ishyoboy_assets' ),
'parent_item_colon' => __( 'Parent Portfolio Item', 'ishyoboy_assets' ),
'menu_name' => __( 'Portfolio', 'ishyoboy_assets' ),
'all_items' => __( 'All Portfolio Items', 'ishyoboy_assets' ),
);
$taxonomies = array();
$supports = apply_filters( 'ish_cpt_plugin_portfolio_post_type_supports', array('title', 'editor', 'thumbnail', 'comments' ) );
global $ish_options;
if ( isset( $ish_options['slug_portfolio'] ) && '' != $ish_options['slug_portfolio'] ){
$slug = trim( $ish_options['slug_portfolio'] );
} else {
$slug = _x('portfolio', 'URL slug', 'ishyoboy_assets'); // "URL slug" is necessary for WPML to be able to translate the slug
}
$post_type_args = array(
'labels' => $labels,
'singular_label' => __( 'Portfolio' , 'ishyoboy_assets' ),
'public' => true,
'publicly_queryable' => true,
'exclude_from_search' => false,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'capability_type' => 'post',
'has_archive' => false,
'hierarchical' => false,
'rewrite' => array(
'slug' => $slug,
'with_front' => true,
'feed' => true,
'pages' => false
),
'supports' => $supports,
'menu_position' => null,
'menu_icon' => null, //get_template_directory_uri() . '/inc/slider/images/icon.png',
'taxonomies' => $taxonomies
);
register_post_type( 'portfolio-post', $post_type_args );
}
}
/*******************************************************************************************************************
* Set Portfolio post type's messages
*/
if ( !function_exists('ishyoboy_portfolio_messages') ){
function ishyoboy_portfolio_messages($messages)
{
global $post, $post_ID;
$messages['portfolio-post'] =
array(
0 => '',
1 => sprintf(('Portfolio Updated. <a href="%s">View portfolio</a>'), esc_url(get_permalink($post_ID))),
2 => __('Custom Field Updated.', 'ishyoboy_assets'),
3 => __('Custom Field Deleted.', 'ishyoboy_assets'),
4 => __('Portfolio Updated.', 'ishyoboy_assets'),
5 => isset($_GET['revision']) ? sprintf( __('Portfolio Restored To Revision From %s', 'ishyoboy_assets'), wp_post_revision_title((int)$_GET['revision'], false)) : false,
6 => sprintf(__('Portfolio Published. <a href="%s">View Portfolio</a>', 'ishyoboy_assets'), esc_url(get_permalink($post_ID))),
7 => __('Portfolio Saved.', 'ishyoboy_assets'),
8 => sprintf(__('Portfolio Submitted. <a target="_blank" href="%s">Preview Portfolio</a>', 'ishyoboy_assets'), esc_url( add_query_arg('preview', 'true', get_permalink($post_ID)))),
9 => sprintf(__('Portfolio Scheduled For: <strong>%1$s</strong>. <a target="_blank" href="%2$s">Preview Portfolio</a>', 'ishyoboy_assets'), date_i18n( __( 'M j, Y @ G:i', 'ishyoboy_assets' ), strtotime($post->post_date)), esc_url(get_permalink($post_ID))),
10 => sprintf(__('Portfolio Draft Updated. <a target="_blank" href="%s">Preview Portfolio</a>', 'ishyoboy_assets'), esc_url( add_query_arg('preview', 'true', get_permalink($post_ID)))),
);
return $messages;
}
}
add_filter( 'post_updated_messages', 'ishyoboy_portfolio_messages' );
/*******************************************************************************************************************
* Create Category for Portfolio post type
*/
if ( !function_exists('ishyoboy_portfolio_category') ){
function ishyoboy_portfolio_category()
{
$labels = array(
'name' => __( 'Portfolio Categories', 'ishyoboy_assets' ),
'singular_name' => __( 'Portfolio Category', 'ishyoboy_assets' ),
'search_items' => __( 'Search Portfolio Categories', 'ishyoboy_assets' ),
'popular_items' => __( 'Popular Portfolio Categories', 'ishyoboy_assets' ),
'all_items' => __( 'All Portfolio Categories', 'ishyoboy_assets' ),
'parent_item' => __( 'Parent Portfolio Category', 'ishyoboy_assets' ),
'edit_item' => __( 'Edit Portfolio Category', 'ishyoboy_assets' ),
'update_item' => __( 'Update Portfolio Category', 'ishyoboy_assets' ),
'add_new_item' => __( 'Add New Portfolio Category', 'ishyoboy_assets' ),
'new_item_name' => __( 'New Portfolio Category', 'ishyoboy_assets' ),
'separate_items_with_commas' => __( 'Separate Portfolio Categories with commas', 'ishyoboy_assets' ),
'add_or_remove_items' => __( 'Add or remove Portfolio Category', 'ishyoboy_assets' ),
'choose_from_most_used' => __( 'Choose from most used Portfolio Categories', 'ishyoboy_assets' )
);
global $ish_options;
if ( isset( $ish_options['slug_portfolio'] ) && '' != $ish_options['slug_portfolio'] ){
$slug = trim( $ish_options['slug_portfolio'] ) . '-category';
} else {
$slug = _x('portfolio-category', 'URL slug', 'ishyoboy_assets'); // "URL slug" is necessary for WPML to be able to translate the slug
}
$args = array(
'labels' => $labels,
'public' => true,
'hierarchical' => true,
'show_ui' => true,
'show_in_nav_menus' => true,
'query_var' => true,
"rewrite" => array(
'slug' => $slug,
'hierarchical' => true
)
);
register_taxonomy( 'portfolio-category', 'portfolio-post', $args );
}
}
if ( is_admin() ){
/*******************************************************************************************************************
* Backend columns
*/
if ( !function_exists('ishyoboy_portfolio_edit_columns') ){
function ishyoboy_portfolio_edit_columns( $columns ){
$columns = array(
"cb" => "<input type=\"checkbox\" />",
"title" => __( 'Title', 'ishyoboy_assets' ),
"author" => __( 'Author', 'ishyoboy_assets' ),
"category" => __( 'Categories', 'ishyoboy_assets' ),
"thumbnail" => __( 'Image', 'ishyoboy_assets' ),
"date" => __( 'Date', 'ishyoboy_assets' )
);
return $columns;
}
}
add_filter("manage_edit-portfolio-post_columns", "ishyoboy_portfolio_edit_columns");
if ( !function_exists('ishyoboy_portfolio_custom_columns') ){
function ishyoboy_portfolio_custom_columns($column){
global $post;
switch ($column)
{
case "thumbnail":
the_post_thumbnail('thumbnail');
break;
case "category":
echo get_the_term_list($post->ID, 'portfolio-category', '', ', ','');
break;
}
}
}
add_action( 'manage_portfolio-post_posts_custom_column' , 'ishyoboy_portfolio_custom_columns', 10, 2 );
/**
* Add dropdown filter for sliders
*/
if ( !function_exists('ishyoboy_restrict_portfolio_by_category') ){
function ishyoboy_restrict_portfolio_by_category() {
global $typenow, $wp_query;
if ( isset($typenow) && 'portfolio-post' == $typenow ) {
$taxonomy = 'portfolio-category';
$term = isset( $wp_query->query[$taxonomy]) ? $wp_query->query[$taxonomy] : '';
$portfolio_taxonomy = get_taxonomy($taxonomy);
wp_dropdown_categories(array(
'show_option_all' => __("Show all", 'ishyoboy_assets') . ' ' . $portfolio_taxonomy->label,
'taxonomy' => $taxonomy,
'name' => $taxonomy,
'orderby' => 'name',
'selected' => $term,
'hierarchical' => true,
'depth' => 0,
'show_count' => true, // Show # listings in parens
'hide_empty' => true, // Don't show businesses w/o listings
));
}
}
}
add_action('restrict_manage_posts','ishyoboy_restrict_portfolio_by_category');
if ( !function_exists('taxonomy_filter_ishyoboy_portfolio_request') ){
function taxonomy_filter_ishyoboy_portfolio_request( $query ) {
global $pagenow, $typenow;
if ( isset($pagenow) && 'edit.php' == $pagenow ) {
$filters = get_object_taxonomies( $typenow );
if ( isset($filters) && '' != $filters){
foreach ( $filters as $tax_slug ) {
$var = &$query->query_vars[$tax_slug];
if ( isset($var) && '' != $var ) {
$term = get_term_by( 'id', $var, $tax_slug );
if ( isset($term) && '' != $term ) {
$var = $term->slug;
}
}
}
}
}
}
}
add_filter( 'parse_query', 'taxonomy_filter_ishyoboy_portfolio_request' );
if ( !function_exists('ishyoboy_portfolio_post_thumbnails') ){
function ishyoboy_portfolio_post_thumbnails() {
$supported_types = get_theme_support( 'post-thumbnails' );
if ( $supported_types === false ) {
add_theme_support( 'post-thumbnails', array( 'portfolio-post' ) );
}
elseif( true === $supported_types){
}
elseif( is_array( $supported_types[0] ) ){
$supported_types[0][] = 'portfolio-post';
add_theme_support( 'post-thumbnails', $supported_types[0] );
}
}
}
/**
* Change the default setting for comments on Portfolio posts. Make them closed by default.
*/
if ( ! function_exists( 'ishyoboy_default_content_portfolio' ) ) {
function ishyoboy_default_content_portfolio( $post_content, $post ) {
if( $post->post_type )
switch( $post->post_type ) {
case 'portfolio-post':
$post->comment_status = 'closed';
break;
}
return $post_content;
}
}
add_filter( 'default_content', 'ishyoboy_default_content_portfolio', 10, 2 );
}
/*******************************************************************************************************************
* Initialize Portfolio post type
*/
add_action( 'init', 'ishyoboy_portfolio_post_type' );
add_action( 'init', 'ishyoboy_portfolio_category', 0 );
//add_action( 'after_theme_setup','ishyoboy_portfolio_post_thumbnails' );
Share
Improve this question
asked May 25, 2015 at 11:31
fafchookfafchook
1013 bronze badges
1 Answer
Reset to default 0To get the portfolio category in the url you could possibly navigate to Settings > Permalinks and add a custom structure like so %category%/%postname% that will add the category before the postname.
本文标签: custom taxonomyShow portfolio category slug in url ( if exist)
版权声明:本文标题:custom taxonomy - Show portfolio category slug in url ( if exist) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1736285648a1927501.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论