WordPress

przepisywanie adresu URL — niestandardowy typ postu link kanoniczny / paginacja przekierowująca do katalogu głównego

  • 14 sierpnia, 2018
  • 3 min read
przepisywanie adresu URL — niestandardowy typ postu link kanoniczny / paginacja przekierowująca do katalogu głównego


Odziedziczyłem istniejącą witrynę i ostatnio poproszono mnie o wprowadzenie pewnych zmian.

„Zmienili nazwę” domyślnego postu na „najnowsze wiadomości”, używając tego „my_new_default_post_type”:

<?php

add_action( 'init', 'my_new_default_post_type', 1 );

    function my_new_default_post_type() {

      register_post_type( 'post', array(
          'labels' => array(
              'name_admin_bar' => _x( 'Post', 'add new on admin bar' ),
          ),
          'public'  => true,
          '_builtin' => false,
          '_edit_link' => 'post.php?post=%d',
          'capability_type' => 'post',
          'map_meta_cap' => true,
          'hierarchical' => false,
          'rewrite' => array('slug' => 'latest-news','with_front' => false),
          'query_var' => true,
          'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'post-formats' ),
      ) );

  }

?>

Można je zobaczyć na standardowej stronie tutaj:

z drugą stroną paginacji tutaj:

Strona 2/

Kliknięcie posta ładuje go tutaj:

Dodałem kilka nowych niestandardowych typów postów, na przykład „oferty korporacyjne”. Kod do dodania tego niestandardowego typu postu to:

<?php

    add_action('init', 'corporate_deals_register');

    function corporate_deals_register() {

     $labels = array(
        'name' => _x('Corporate Deals', 'post type general name'),
        'singular_name' => _x('Corporate Deals', 'post type singular     name'),
        'add_new_item' => __('Add New Briefing'),
        'edit_item' => __('Edit briefing'),
        'new_item' => __('New briefing'),
        'view_item' => __('View briefing'),
        'search_items' => __('Search Corporate Deals'),
        'not_found' =>  __('Nothing found'),
        'not_found_in_trash' => __('Nothing found in Trash'),
        'parent_item_colon' => ''
    );

    $args = array(
      'labels' => $labels,
      'public' => true,
      'has_archive' => false,
      'show_ui' => true,
      'capability_type' => 'post',
      'taxonomies'  => array( 'category' ),
      'hierarchical' => false,
      'publicly_queriable' => false,
      'show_ui' => true,
      'show_in_nav_menus'  => false,
      'exclude_from_search' => false,
      'menu_icon' => 'dashicons-welcome-add-page',  // Icon Path
      'menu_position' => 5,
      'show_in_menu'  =>    'blogs_menu',
      'query_var' => true,
      'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'revisions' ),
    );

    register_post_type( 'corporate-deals' , $args );
  }

?>

Możesz zobaczyć te wymienione tutaj:

Warto przeczytać!  Niestandardowe strony z wtyczką - WordPress Development Stack Exchange

i klikając w jeden tutaj:

/gateley-corporate-zespół-doradza-w-firmach-nabywaniu-of-kiddy-partners/

Jednakże… kiedy próbujesz wyświetlić drugą stronę paginacji, tutaj:

/Strona 2/

przekierowuje do:

Przeszukałem wysoko i nisko wszelkie przekierowania lub reguły przepisywania, ale nie mogę ich znaleźć.

Jedną rzeczą, którą zauważyłem, jest to, że jeśli dodam:

'rewrite' => array('slug' => 'latest-news','with_front' => false),

do mojej niestandardowej deklaracji pocztowej (tj. przepisanie „umowy korporacyjne” na „najnowsze wiadomości”), wtedy przekierowanie nie nastąpi.

Każda pomoc bardzo mile widziana. Z góry dziękuję.

Dodatkowo

Kod budujący listę postów to:

<?php // Corporate Deals

function paginatedcorporatedeals_func( $atts ) {

  extract( shortcode_atts( array(
    'pageid' => '{$pageid}',
    'title' => '{$title}',
    'showcontent' => '{$showcontent}',
    'newsurl' => '{$newsurl}',
    'postmeta' => '{$postmeta}'
  ), $atts ) );

  $output;

  global $post;

  $ws = 1;

  $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

  $args = array(
    'post_type'=>'corporate-deals',
    //'order'=>'ASC',
    'posts_per_page' => 16,
    'paged' => $paged,
  );

  $slug = the_slug();

  query_posts($args);

  // global $wp_query;

  // $postcount = $wp_query->found_posts;

  $count=0;

  if(have_posts()) {

    $divider="yes";
    $featuredimg = 'date';
    $truncate = 250;

    while (have_posts()) : the_post();

      global $post;

      $thetitle = get_the_title($post->ID);

      require get_template_directory() . '/assets/inc/plugins/vc-intergration/modules/shortcode-templates/media-list.php';

      $output .="<hr>";

      $count++;

    endwhile;

    $output .=  "<div class="vc_row clearfix"><div class="white-bar">".page_pagination()."</div></div>";

    wp_reset_query();
  }

  return $output;

}

add_shortcode( 'paginatedcorporatedeals', 'paginatedcorporatedeals_func' );

?>


Źródło

Warto przeczytać!  plugins — Dodanie filtra taksonomii do listy administratorów dla niestandardowego typu postu?