HivePress полезные приёмы

Получить значение атрибута из объекта объявления

Объект объявления наследуется от объекта записи. Поэтому ID объявления можно получить стандартно:

$post->ID

А далее, в зависимости от вида атрибута, применяем два подхода. В следующих примерах, slug атрибута «animal».

Множественный атрибут

То есть, набор чекбоксов или select. Такой атрибут реализован как таксономия. Поэтому находим его так:

$animals = get_the_terms( $post->ID, 'hp_listing_animal' );
$animal = $cities[0]->name; // Имя первого, как пример

Одиночный атрибут

Это может быть текстовое поле. Значение атрибута находится внутри объекта под защитой, а для его получения предусмотрен геттер get_{attr_name}. Вот пример для атрибута «animal»:

$listing = \HivePress\Models\Listing::query()->get_by_id($post->ID);
$animal = $listing->get_animal();

Вставить значение атрибута в карточку объявления

add_filter(
	'hivepress/v1/templates/listing_view_page/blocks',
	function( $blocks, $template ) {
		$listing = $template->get_context( 'listing' );

		if ( $listing ) {
			$blocks = hivepress()->helper->merge_trees(
				[ 'blocks' => $blocks ],
				[
					'blocks' => [
						'listing_actions_primary' => [
							'blocks' => [
								'animal' => [
									'type'    => 'content',
									'content' => '<div>' . esc_attr( $listing->get_animal() ) . '</div>',
									'_order'  => 5, // выше-ниже в блоке actions_primary
								],
							],
						],
					],
				]
			)['blocks'];
		}

		return $blocks;
	},
	1000,
	2
);

Оставьте комментарий