function get_yoast_custom_title() {
if ( is_single() ) {
$string = get_the_title();
} else {
$string = 'Заголовок по умолчанию';
}
return $string;
}
// Define the action for register yoast_variable replacments.
function register_custom_yoast_variables() {
wpseo_register_var_replacement( '%%CustomTitle%%', 'get_yoast_custom_title', 'advanced', __( 'Some instead title text', 'wpgen' ) );
}
// Add action.
add_action( 'wpseo_register_extra_replacements', 'register_custom_yoast_variables' );
function get_category_post_count() {
$string = '';
if ( is_category() && isset( get_queried_object()->count ) ) {
$string = get_queried_object()->count;
}
return $string;
}
// Define the action for register yoast_variable replacments.
function register_custom_yoast_variables() {
wpseo_register_var_replacement( '%%PostCount%%', 'get_category_post_count', 'advanced', __( 'Some instead title text', 'wpgen' ) );
}
// Add action.
add_action( 'wpseo_register_extra_replacements', 'register_custom_yoast_variables' );
register_post_type()
указал аргумент 'has_archive' => 'repetitors'
, это общий архив для всех записей этого типа. Так же вам будет достаточно регистрации одной таксономииadd_action( 'init', 'education_register_post_type' );
function education_register_post_type() {
// Taxonomy repetitor_cat.
register_taxonomy( 'repetitor_cat', array( 'repetitor' ), array(
'labels' => array(
'name' => _x( 'Repetitor category', 'taxonomy general name', 'education' ),
'singular_name' => _x( 'Repetitor categories', 'taxonomy singular name', 'education' ),
'search_items' => __( 'Search Repetitor category', 'education' ),
'popular_items' => __( 'Popular Repetitor category', 'education' ),
'all_items' => __( 'All Repetitor categories', 'education' ),
'parent_item' => null,
'parent_item_colon' => null,
'edit_item' => __( 'Edit Repetitor category', 'education' ),
'update_item' => __( 'Update Repetitor category', 'education' ),
'add_new_item' => __( 'Add new Repetitor category', 'education' ),
'new_item_name' => __( 'New Repetitor category name', 'education' ),
'menu_name' => __( 'Repetitor categories', 'education' ),
),
'public' => true,
'show_tagcloud' => true,
'hierarchical' => false,
'query_var' => true,
'show_in_quick_edit' => true,
'sort' => true,
) );
// Post type repetitor.
register_post_type( 'repetitor', array(
'labels' => array(
'name' => __( 'Repetitors', 'education' ),
'singular_name' => __( 'Repetitor', 'education' ),
'add_new' => __( 'Add Repetitor', 'education' ),
'add_new_item' => __( 'Add new Repetitor', 'education' ),
'edit_item' => __( 'Edit Repetitor', 'education' ),
'new_item' => __( 'New Repetitor', 'education' ),
'view_item' => __( 'View Repetitor', 'education' ),
'search_items' => __( 'Search Repetitor', 'education' ),
'not_found' => __( 'Repetitor not found', 'education' ),
'not_found_in_trash' => __( 'Repetitor not found in trash', 'education' ),
'menu_name' => __( 'Repetitors', 'education' ),
),
'public' => true,
'show_in_rest' => true, // Включает Gutenberg.
'capability_type' => 'post',
'hierarchical' => false,
'has_archive' => 'repetitors',
'rewrite' => array( 'slug' => 'repetitors', 'with_front' => false, 'pages' => true, 'feeds' => false, 'feed' => false ),
'query_var' => true,
'supports' => array( 'page-attributes', 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments', 'custom-fields' ),
'taxonomies' => array( 'repetitor_cat' ),
) );
}
rewrite
и фильтры post_type_link
и term_link
$wp_query
, проверить можно распечатав этот запросglobal $wp_query;
var_dump( $wp_query );
pre_get_posts
add_action( 'pre_get_posts', 'blog_posts' );
function blog_posts( $query ) {
if ( ! is_admin() && $query->is_main_query() && is_page_template( 'blog.php' ) ) {
$query->set( 'post_type', 'post' );
$query->set( 'posts_per_page', '10' );
}
}
wp_query()
, но учитывайте, что функция пагинации the_posts_navigation()
работает только с глобальным запросомfunction get_seo_city() {
$city = get_post_meta( get_the_ID(), '_city', true );
if ( ! $city ) {
$string = 'Город по умолчанию';
}
return $string;
}
// Define the action for register yoast_variable replacments.
function register_custom_yoast_variables() {
wpseo_register_var_replacement( '%%City%%', 'get_seo_city', 'advanced', __( 'Some instead title text', 'wpgen' ) );
}
// Add action.
add_action( 'wpseo_register_extra_replacements', 'register_custom_yoast_variables' );
get_terms()
$args = array(
'taxonomy' => 'card_cat',
'hide_empty' => false,
);
$terms = get_terms( $args );
if ( $terms ) {
foreach ( $terms as $key => $term ) {
echo '<h2>' . $term->term_id . '</h2>';
}
}
get_the_terms()
$terms = get_the_terms( $post->ID, 'card_cat' );
if ( $terms ) {
foreach ( $terms as $key => $term ) {
echo '<h2>' . $term->term_id . '</h2>';
}
}
get_term_by()
— получает указанный термин (элемент таксономии) по заголовку, слагу или по переданному ID термина$term = get_term_by( 'slug', 'example', 'card_cat' );
if ( $term ) {
echo '<h2>' . $term->term_id . '</h2>';
}
get_terms()
— получает элементы (термины) указанной таксономии по переданным параметрам$args = array(
'taxonomy' => 'card_cat',
'slug' => array( 'example' );
'hide_empty' => false,
);
$terms = get_terms( $args );
if ( $terms ) {
foreach ( $terms as $key => $term ) {
echo '<h2>' . $term->term_id . '</h2>';
}
}
get_the_terms()
— получает элементы таксономии (термины), которые относятся к указанному посту (записи)$terms = get_the_terms( $post->ID, 'card_cat' );
if ( $terms ) {
foreach ( $terms as $key => $term ) {
echo '<h2>' . $term->term_id . '</h2>';
}
}
do_robots()
, которая создает динамический файл robots.txt. Для добавления своих правил вы можете использовать хук robots_txt
add_filter( 'robots_txt', 'add_robotstxt', -1 );
function add_robotstxt( $text ) {
$text .= "Disallow: */comments";
return $text;
}
wp_robots
add_filter( 'wp_robots', 'wpz_robots' );
function wpz_robots( $robots ) {
if ( is_archive() && is_tax( 'product_tag' ) ) {
$robots['noindex'] = true;
$robots['nofollow'] = true;
}
return $robots;
}
robots_txt
добавить тоже самое в файл robots.txtadd_filter( 'robots_txt', 'wpz_robots_txt', 20, 2 );
function wpz_robots_txt( $output, $public ) {
if ( is_archive() && is_tax( 'product_tag' ) ) {
$output .= "Disallow: /product_tag/\n";
}
return $output;
}
https://example.loc/products/?type=furniture&color=white
function get_seo_instead_title() {
$string = '';
if ( is_single() && get_post_type() === 'product' ) {
$string = get_the_title();
$params = array( 'type', 'color' );
// Добавляем в заголовок параметры get-запроса
foreach ( $params as $key => $param ) {
$var = get_query_var( $param, false );
if ( $var ) {
$string .= ', ' . $var;
}
}
// Делаем перевод
if ( determine_locale() === 'ru_RU' ) {
$converter = array(
'furniture' => 'мебель',
'white' => 'белый',
);
$string = strtr( $string, $converter );
}
}
if ( $string === '' ) {
if ( is_post_type_archive() ) {
$string = get_queried_object()->label;
} elseif ( is_archive() ) {
$string = get_queried_object()->name;
} elseif ( is_single() ) {
$string = get_the_title();
} else {
$string = 'Дефолтный заголовок (для главной)';
}
}
return $string;
}
// Define the action for register yoast_variable replacments.
function register_custom_yoast_variables() {
wpseo_register_var_replacement( '%%InsteadTitle%%', 'get_seo_instead_title', 'advanced', 'Some instead title text' );
}
add_action( 'wpseo_register_extra_replacements', 'register_custom_yoast_variables' );