Php post type title

Создаем кастомный тип записи (Custom Post Type) с кастомными категориями (Custom Taxonomy)

Создаем кастомный тип записи (Custom Post Type) Articles с кастомными категориями (Custom Taxonomy) Articles Category.

[vc_row][vc_column][vc_message color=»alert-warning» message_box_color=»alert-warning» icon_type=»pixelicons» icon_pixelicons=»vc_pixel_icon vc_pixel_icon-alert»]Это будет наиболее полезная статья по Custom Post Type[/vc_message][/vc_column][/vc_row]

В моем случае все стандартные записи — это Товары, поэтому Статьи выведем через кастомные записи.

В файле функций functions.php регистрируем кастомный тип записи Articles:

function wptp_create_post_type() < $labels = array( 'name' =>__( 'Articles' ), 'singular_name' => __( 'Articles' ), 'add_new' => __( 'New Article' ), 'add_new_item' => __( 'Add New Article' ), 'edit_item' => __( 'Edit Article' ), 'new_item' => __( 'New Article' ), 'view_item' => __( 'View Article' ), 'search_items' => __( 'Search Articles' ), 'not_found' => __( 'No Articles Found' ), 'not_found_in_trash' => __( 'No Articles found in Trash' ), ); $args = array( 'labels' => $labels, 'has_archive' => true, 'public' => true, 'hierarchical' => false, 'menu_position' => 5, 'supports' => array( 'title', 'editor', 'excerpt', 'custom-fields', 'thumbnail' ), ); register_post_type( 'articles', $args ); > add_action( 'init', 'wptp_create_post_type' );

Если вы хотите, чтобы в кастомных постах выводились стандартные категории, тогда привяжите их к таксономии Категорий:

'taxonomies' => array('category'),

Если для кастомных постов вы создаете еще и кастомные таксономии, то связывать их надо с созданными таксономиями, если брать пример ниже, то это будут articles_category

'taxonomies' => array('articles_category'),

Затем для кастомного типа записи Articles регистрируем таксономии ‘Article Category’, чтобы разные записи могли принадлежать разным категориям.

function wptp_register_taxonomy() < register_taxonomy( 'articles_category', 'articles', array( 'labels' =>array( 'name' => 'Article Categories', 'singular_name' => 'Article Category', 'search_items' => 'Search Article Categories', 'all_items' => 'All Article Categories', 'edit_item' => 'Edit Article Categories', 'update_item' => 'Update Article Category', 'add_new_item' => 'Add New Article Category', 'new_item_name' => 'New Article Category Name', 'menu_name' => 'Article Category', ), 'hierarchical' => true, 'sort' => true, 'args' => array( 'orderby' => 'term_order' ), 'show_admin_column' => true ) ); > add_action( 'init', 'wptp_register_taxonomy' );

Для кастомной таксономии можно изменить слаг на более красивый, чтобы он не был articles_category , но нужно учесть, чтобы таких слдагов больше не было на других страницах или постах, иначе будут проблемы:

'rewrite' => array( 'slug' => 'blog' ),
[vc_row][vc_column][vc_message color=»alert-warning» message_box_color=»alert-warning» icon_type=»pixelicons» icon_pixelicons=»vc_pixel_icon vc_pixel_icon-alert»]При изменении слагов необходимо обновить настройки «Постоянных ссылок» в админке, иначе будете получать 404 ошибку вместо нужной страницы.[/vc_message][/vc_column][/vc_row]

Больше примеров можно найти здесь и здесь. Но привести весь этот код в порядок помогла эта статья, за что автору большая благодарность.

За внешний вид кастомной записи отвечает файл single.php , но чтобы изменить вид кастомной записи можно создать файл single-.php — в моем случае будет single-articles.php со своим содержимым.

Теперь нужно вывести кастомные записи на странице. По умолчанию за отображение архива кастомных записей отвечает файл index.php . Но можно создать файл, который будет отвечать за вывод кастомных записей в своей таксономии.

Вариант 1 — самый правильный. Выводим записи в таксономии так же как и в обычной категории.

Для этого создаем файл taxonomy-.php — в моем случае будет taxonomy-articles_category.php и в нем выводим обычный цикл, как и для стандартных записей в категории:

В файле tax-item.php выводим данные, которые нам нужно получить из каждой записи, например, заголовок, ссылку на запись, миниатюру и excerpt.

В файле pagination.php выводим пагинацию вот такого формата.

Цикл не изменяем, пагинация отлично работает. Это самый оптимальный вариант для отображения Кастомных Таксономий.

Вариант 2 — если нет кастомных таксономий, то можно просто получить все кастомные записи в виде Архива

Для этого в шаблоне создаем файл archive-.php — в моем случае будет archive-articles.php , в котором точно так же как и в таксономии выводим обычный цикл, только вместо заголовка Таксономии выводим имя кастомного типа записи :

При этом варианте, если не создана страница архива для кастомной записи, тогда получить список всех кастомных записей можно по прямой ссылке BLOG_URL?post_type= или в моем случае http://site.com/articles/ .

Вариант 3. Просто выводим все кастомные записи Articles на странице с заданным шаблоном

 'articles', 'posts_per_page' => -1 ); $loop = new WP_Query( $args ); while ( $loop->have_posts() ) : $loop->the_post(); get_template_part( 'include/tax-item' ); endwhile; ?>

get_template_part( ‘include/tax-item’ ); — в файле tax-item.php я вывожу содержимое записи, которое нужно мне для отображения записей внутри цикла (заголовок, миниатюру, дату, цитату и т.д.)

Этот вариант выводит все записи Articles на странице, не зависимо от таксономий (категорий).

А если нам нужно вывести каждую категорию отдельно со своими новостями, тогда используем первый вариант, описанный выше.

При этом, если вы используете плагин Yoast SEO и используете его хлебные крошки:

Тогда при выборе в настройках плагина таксономии «Articles Category» в «Taxonomy to show in breadcrumbs for post types», в хлебных крошках вы получите ссылку на категорию, к которой принадлежит Новость, при других вариантах вывода кастомных записей это не получалось сделать.

Taxonomy to show in breadcrumbs for post types

Решение нашел на сайте byheart.ru wp-admin/upgrade.php ?_wp_http_referer= %2Fwp-admin%2F Ошибка wp-admin/upgrade.php ?_wp_http_referer=wp-admin появилась, когда произвел обновление…

Суть задачи — у нас есть записи с дополнительными полями, в которых указан рейтинг записи,…

Получает массив данных о категориях относящихся к указанному посту. Функцию можно использовать за пределами Цикла…

Выводим 8 самых просматриваемых записей. Количество просмотров каждой записи считает плагин Post Views Counter. Небольшое…

Источник

post_type_archive_title() │ WP 3.1.0

Выводит или возвращает заголовок для архивной страницы произвольного типа постов. Этот Тег шаблона предназначен для использования на страницах, который выводятся файлами шаблона: archive.php и archive-.php .

Хуки из функции

Возвращает

Использование

$prefix(строка) Текст, который будет перед заголовком.
По умолчанию: » $display(логический) true — выведет на экран, false — просто, вернет для обработки.
По умолчанию: true

Примеры

#1 Как работает функция

Допустим у нас есть зарегистрированный тип записи (см. register_post_type()) movie у которого параметр lable равен «фильмы» и параметр has_archive равен true (т.е. у типа есть архивная страница). Теперь, если мы вызовем эту функцию на странице архива http://example.com/movie , то мы должны увидеть следующий заголовок:

Список изменений

Код post_type_archive_title() post type archive title WP 6.2.2

function post_type_archive_title( $prefix = '', $display = true ) < if ( ! is_post_type_archive() ) < return; >$post_type = get_query_var( 'post_type' ); if ( is_array( $post_type ) ) < $post_type = reset( $post_type ); >$post_type_obj = get_post_type_object( $post_type ); /** * Filters the post type archive title. * * @since 3.1.0 * * @param string $post_type_name Post type 'name' label. * @param string $post_type Post type. */ $title = apply_filters( 'post_type_archive_title', $post_type_obj->labels->name, $post_type ); if ( $display ) < echo $prefix . $title; >else < return $prefix . $title; >>

Cвязанные функции

archive (архивы записей)

Типы записей

  • add_post_type_support()
  • get_post_permalink()
  • get_post_type()
  • get_post_type_object()
  • get_post_types()
  • get_the_post_type_description()
  • is_post_type_hierarchical()
  • is_post_type_viewable()
  • post_type_exists()
  • post_type_supports()
  • register_post_type()
  • remove_post_type_support()
  • set_post_type()
  • unregister_post_type()

Основные

  • bloginfo()
  • calendar_week_mod()
  • get_archives_link()
  • get_bloginfo()
  • get_calendar()
  • get_current_blog_id()
  • get_footer()
  • get_header()
  • get_search_form()
  • get_sidebar()
  • get_template_part()
  • is_404()
  • is_active_sidebar()
  • is_admin()
  • is_attachment()
  • is_author()
  • is_category()
  • is_comment_feed()
  • is_date()
  • is_day()
  • is_dynamic_sidebar()
  • is_embed()
  • is_feed()
  • is_front_page()
  • is_home()
  • is_month()
  • is_page_template()
  • is_paged()
  • is_preview()
  • is_search()
  • is_single()
  • is_singular()
  • is_ssl()
  • is_sticky()
  • is_tag()
  • is_tax()
  • is_year()
  • language_attributes()
  • register_sidebar()
  • setup_postdata()
  • the_archive_description()
  • wp_enqueue_script()
  • wp_enqueue_style()
  • wp_footer()
  • wp_get_archives()
  • wp_get_document_title()
  • wp_head()
  • wp_login_form()
  • wp_login_url()
  • wp_loginout()
  • wp_logout_url()
  • wp_lostpassword_url()
  • wp_register()
  • wp_title()

Источник

Display all post titles of current post type

I have a custom post type called press . I’m on the template single-press.php I want to get the post titles of my custom post type named as «press». Here is my code,please guide me?

 query_vars['post_type']; if ( 'press' == $post_type )< $query->query_vars['posts_per_page'] = -1; return; > > add_action('pre_get_posts', 'all_posts_custom_posts',1); ?> 

Be extremely careful with [‘posts_per_page’] = -1; consider moving to a variable and calling apply filters on it to ensure that should you wish to change this to all recent posts, or to allow plugin / theme users to customise via hooks instead of code editing theme or plugin.

4 Answers 4

As you are on, ‘single-press.php’ , this is single ‘press’ post type page. As per your question, it seems you want to display archive of all ‘press’ posts, along with current posts highlighted.

As we are on single ‘press’ post page, no need to check for post type.

We can directly add following loop with modification in structure, as per your need,

So now we have given a class ‘wdm-current-post’ to the current post. All the posts will now be listed with the current post highlighted in the list.

You can get all posts of custom post type as you required to get all posts title with its permalink by using wp-query.

Code where you want to display all posts title with its permalink

As I am going to get custom posts title in list

 jQuery(document).ready(function() < var current = location.pathname; jQuery('.cat_link').each(function()< var jQuerythis = jQuery(this); // if the current path is like this link, make it active // indexOf(something) if the value never occurs it returns -1 and in this condition if indexOf(something) !== -1 means result !== -1 or results exists then add class active. if(jQuerythis.attr('href').indexOf(current) !== -1)< jQuerythis.addClass('active'); >>); >); 

#You can use this WP_Query

$arg = new WP_Query( array( 'post_type' => 'postypename') ); while ( $arg->have_posts() ) : $arg->the_post(); the_title(); endwhile; 

What you describe is called a Post Type Archive and it comes baked in with WordPress. It should show up on your site at example.com/press, assuming that you haven’t give it a different slug with the rewrite arg of on your register_post_type() function for the post type.

At that address, the query is automatically going to be showing all posts of the type «press.» However, if you want to show all of them without paging, you will need to use pre_get_posts :

function wpse162905_modify_query( $query ) < if( !is_admin() && is_main_query() && is_post_type_archive( 'press' ) ) < $query->set( 'posts_per_page', -1 ); > > add_action( 'pre_get_posts', 'wpse162905_modify_query' ); 

Finally, you’ll want to modify the page template to show just the title as a link. To do that, you’ll modify the archive-press.php theme file. As shown on the Template Hierarchy codex page, you can see that is the template that controls post type archives. At its most basic, that file probably includes this:

Источник

Читайте также:  Jdbc sample in java
Оцените статью