Пользовательская структура URL в CPT не работает - PullRequest
0 голосов
/ 29 мая 2018

У меня должна быть такая структура URL: http://url.pl/custompostype/taxonomy/singlepost У меня есть такая, но у меня также есть 404 page instead of post or list of posts.Я знаю, что есть очень популярная проблема, но все советы от Google не работают для меня :( Я думаю, что я должен изменить 'with_front' на false, и это должно работать? Я изменил много параметров в несколькихпути и до сих пор не работает.

Вот мой код:

function learning() {

$labels = array(
    'name'                  => _x( 'Myposttype', 'Post Type General Name', 'text_domain' ),
    'singular_name'         => _x( 'Myposttype', 'Post Type Singular Name', 'text_domain' ),
    'menu_name'             => __( 'Myposttype', 'text_domain' ),
    'name_admin_bar'        => __( 'Myposttype', 'text_domain' ),
    'archives'              => __( 'Archiwa', 'text_domain' ),
    'attributes'            => __( 'Atrybuty', 'text_domain' ),
    'parent_item_colon'     => __( 'Parent Item:', 'text_domain' ),
    'all_items'             => __( 'Wszystkie', 'text_domain' ),
    'add_new_item'          => __( 'Dodaj nowy post', 'text_domain' ),
    'add_new'               => __( 'Dodaj nowy', 'text_domain' ),
    'new_item'              => __( 'Nowy', 'text_domain' ),
    'edit_item'             => __( 'Edytuj', 'text_domain' ),
    'update_item'           => __( 'Zaktualizuj', 'text_domain' ),
    'view_item'             => __( 'Zobacz', 'text_domain' ),
    'view_items'            => __( 'Zobacz', 'text_domain' ),
    'search_items'          => __( 'Szukaj', 'text_domain' ),
    'featured_image'        => __( 'Obrazek wyróżniający', 'text_domain' ),
    'set_featured_image'    => __( 'Ustaw obrazek wyróżniający', 'text_domain' ),
    'remove_featured_image' => __( 'Usuń obrazek', 'text_domain' ),
);
$args = array(
    'label'                 => __( 'Myposttype', 'text_domain' ),
    'labels'                => $labels,
    'supports'              => array( 'title', 'editor', 'thumbnail', 'page-attributes' ),
    'taxonomies'            => array( 'customtaxonomy'),
    'hierarchical'          => true,
    'public'                => true,
    'show_ui'               => true,
    'show_in_menu'          => true,
    'menu_position'         => 5,
    'menu_icon'             => 'dashicons-format-chat',
    'show_in_admin_bar'     => true,
    'show_in_nav_menus'     => true,
    'can_export'            => true,
    'has_archive'           => true,
    'exclude_from_search'   => false,
    'publicly_queryable'    => true,
    'capability_type'       => 'post',
    'rewrite'   => array('with_front' => false ),
);
register_post_type( 'myposttype', $args );
}
add_action( 'init', 'learning', 0 );


// Register Custom Taxonomy
function myposttype2() {

$labels = array(
    'name'                       => _x( 'CustomTaxonomy', 'Taxonomy General Name', 'text_domain' ),
    'singular_name'              => _x( 'CustomTaxonomy', 'Taxonomy Singular Name', 'text_domain' ),
    'menu_name'                  => __( 'CustomTaxonomy', 'text_domain' ),
    'all_items'                  => __( 'Wszystkie', 'text_domain' ),
    'new_item_name'              => __( 'Dodaj nowy', 'text_domain' ),
    'add_new_item'               => __( 'Dodaj nowy', 'text_domain' ),
    'edit_item'                  => __( 'Edytuj', 'text_domain' ),
    'update_item'                => __( 'Zaktualizuj', 'text_domain' ),
    'view_item'                  => __( 'Zobacz', 'text_domain' ),
    'separate_items_with_commas' => __( 'Oddziel kolejne tagi przecinkami', 'text_domain' ),
    'choose_from_most_used'      => __( 'Wybierz spośród popularnych', 'text_domain' ),

);
$rewrite = array(
    'slug'                       => 'myposttype/customtaxonomy',
    'with_front'                 => false,
    'hierarchical'               => true,
    //'has_archive' => 'myposttype',
);
$args = array(
    'labels'                     => $labels,
    'hierarchical'               => true,
    'public'                     => true,
    'show_ui'                    => true,
    'show_admin_column'          => true,
    'show_in_nav_menus'          => true,
    'show_tagcloud'              => true,
    'rewrite'                    => $rewrite,
);
register_taxonomy( 'customtaxonomy', array( 'myposttype' ), $args );

}
add_action( 'init', 'myposttype2', 0 );

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Придерживайтесь постоянных ссылок, а также убедитесь, что тот же пользовательский слаг типа поста не используется где-либо на веб-сайте, это также может создать проблему.

Добавить пользовательскую таксономию в URL следующим образом.

Измените элемент массива перезаписи пользовательского типа записи следующим образом 'rewrite' => array('slug' => '%customtaxonomy%', 'with_front' => false ),

, а затем добавьте следующий фильтр в файл functions.php темы.

 function d_reset_permlinks( $post_link, $post ){
    if ( is_object( $post ) && $post->post_type == 'myposttype' ){
    $terms = wp_get_object_terms( $post->ID, 'customtaxonomy' );
    if( $terms ){
        return str_replace( '%customtaxonomy%' , $terms[0]->slug , $post_link );
     }
   }
    return $post_link;
}
 add_filter( 'post_type_link', 'd_reset_permlinks', 1, 2 );

Теперь сбросьте permlinks, и он будет работать.Вы можете увидеть его в моей локальной системе http://prntscr.com/jnxvyo

0 голосов
/ 29 мая 2018

Пожалуйста, перейдите на панель администратора, Setting->Permalinks измените постоянные ссылки на plain и save it.

И снова измените постоянные ссылки на Post Name и сохраните их.

Это решит проблему 404.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...