chomovva

Кастомный метабокс таксономии при редактировании поста

Для удобства в работе решил создать для кастомной таксономии свой метабокс. Таксономия иерархическая, будет использоваться только два уровня: первый – "область", вторая – "группы". Пост может входить только в один термин. Каждый термин имеет свой код.
К примеру:
030 Гуманитарные науки

032 История и археология
034 Культурология
…….

Написал функцию вывода метабокса и при регистрации таксономии (register_taxonomy) добавил её имя в параметре meta_box_cb

Код функции:

[code-
public function meta_box_select( $post, $box ) {
wp_enqueue_script( ‘select2’ );
wp_add_inline_script( "select2", "jQuery( ‘#taxonomy-{$this->name} select’ ).select2();", "after" );
wp_enqueue_style( ‘select2’ );
$terms = get_terms( array(
‘taxonomy’ => $this->name,
‘orderby’ => ‘name’,
‘order’ => ‘ASC’,
‘get’ => ‘all’,
‘hierarchical’ => true,
‘hide_empty’ => false,
) );
if ( ( $terms ) && ( ! empty( $terms ) ) && ( ! is_wp_error( $terms ) ) ) {
$optgroups = wp_list_filter( $terms, array( ‘parent’ => 0 ) );
$result
= "<div id=\"taxonomy-{$this->name}\" class=\"categorydiv\">";
$result- = " <input type=\"hidden\" value=\"0\" name=\"tax_input[{$this->name}]
\">";
$result- = " <select name=\"tax_input[{$this->name}]
\" class=\"widefat\"><option value=\"\"></option>";
foreach ( $optgroups as $optgroup ) {
$options = wp_list_filter( $terms, array( ‘parent’ => $optgroup->term_id ) );
if ( ( ! $options ) && ( empty( $options ) ) ) continue;
$optgroup_code = get_term_meta( $optgroup->term_id, "{$this->slug}_code", true );
$result- = sprintf( ‘<optgroup label="%1$02d – %2$s">’, $optgroup_code, $optgroup->name );
foreach ( $options as $option ) {
$option_code = get_term_meta( $option->term_id, "{$this->slug}_code", true );
$result
= sprintf(
‘<option id="taxonomy_term_%1$s" value="%2$s" %3$s>%5$s – %4$s</option>’,
$option->term_id,
$option->slug,
selected( is_object_in_term( $post->ID, $this->name, $option->term_id ), true, false ),
$option->name,
$option_code
);
}
$result- = "</optgroup>";
}
$result
= " </select>";
$result- = "</div>";
} else {
$result
= __( ‘Термины не найдены’, ‘pstu-enrollee’ );
}
echo implode( "\r\n", $result );
}
[/code]

Метабокс выводится нормально, но выбранный термин не сохраняется. Опытным путём понял, что если при регистрации таксономии добавить ‘hierarchical’ => true, всё норм, но требуется именно иерархическая таксономия.

Подскажите, что исправить, чтобы термин нормально прикреплялся к посту?

Интернационализация/локализация темы

Здравствуйте. Пытаюсь разобраться с интернационализацией и локализацией темы, нашел в интернете много статей на эту тему, общий смысл понял, но в каждой статье своя вариация на размещение, именование файлов переводов, использование ф-ций wp. В результате не получается перевести тему. Для того чтобі разобраться в єтом вопросе и потренироваться создал простую "тему" из 3-х файлов (index.php, functions.php, style.css) с одной фразой для перевода. Подскажите, что я делаю не так:
Файл index.php
<html>
<head <?php language_attributes(); ?> >
<title><?php wp_title( ” ); ?></title>
<?php wp_head(); ?>
</head>
<body <?php body_class(); ?> >

<h1><?php wp_title( ” ); ?></h1>

<p><?php _e( ‘РУС’, ‘qwer13’ ); ?></p>

<?php wp_footer(); ?>
</body>
</html>
===============
файл functions.php

<?php

function mytheme_init() {
load_theme_textdomain( ‘qwer13′, get_template_directory().’/languages’ );
}
add_action( ‘after_setup_theme’, ‘mytheme_init’ );

?>
================
файл style.css
/*
Theme Name: qwer13
Theme URI: translate.com
Author: chomovva
Author URI: https://site.ru/
Description: ИНТЕРНАЦИОНАЛИЗАЦИИ ТЕМЫ ДЛЯ WORDPRESS
Version: 1.0
Text Domain: qwer13
*/
================
Создал переводы для украинского, английского языков и поместил их в папку languages. Названия файлов:

uk_UA.mo
uk_UA.po
en_EN.mo
en_EN.po

Перевод создавал в программе POEdit.
Архив с "темой" прилагаю qwer13.zip
Меняю в админке язык сайта на укранский или английский – на странице все равно "РУС". Что я делаю не так???

Anonymous
Отправить
Ответ на: