# betterdocs/4.9.3/views/layouts/category-box/layout-4.php

BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ &amp; Chatbot, version 4.9.3. 42 lines.

- Page: https://pluginprobe.com/plugins/betterdocs/4.9.3/code/views/layouts/category-box/layout-4.php
- Raw: https://pluginprobe.com/plugins/betterdocs/4.9.3/raw/views/layouts/category-box/layout-4.php
- Modified: 2026-06-23T11:52:12+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/betterdocs/4.9.3/code/views/layouts/category-box/layout-4.php#L10-L20`.

```php
<?php
// phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound -- view template receives variables via extract(); prefixing is impractical.
	
if ( ! defined( 'ABSPATH' ) ) {
    exit;
}
$attributes = [
		'href'    => esc_url( $permalink ),
		'data-id' => isset( $term->term_id ) ? esc_attr( $term->term_id ) : 0,
		'class'   => [ 'category-box category-' . esc_attr( $term->slug ) ]
	];

	if ( ! isset( $column ) ) {
		$column = 4;
	}

	if ( $terms_number % $column == 0 ) {
		$wrapper_class[] = 'no-border-right';
	}

	if ( $terms_count <= $reminder ) {
		$wrapper_class[] = 'no-border-bottom';
	}

	if ( $reminder == 0 && $terms_count <= $column ) {
		$wrapper_class[] = 'no-border-bottom';
	}

	if ( isset( $wrapper_class ) && is_array( $wrapper_class ) && ! empty( $wrapper_class ) ) {
		$attributes['class'] = array_merge( $attributes['class'], $wrapper_class );
	}

	$attributes = betterdocs()->template_helper->get_html_attributes( $attributes );
	?>

<a
	<?php echo $attributes; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>>
	<div class="betterdocs-single-category-inner">
		<?php $view_object->get( 'layout-parts/header' ); ?>
	</div>
</a>

```
