123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- <?php
- if ( ! defined( 'ABSPATH' ) ) {
- exit; // Exit if accessed directly
- }
- if ( ! class_exists( 'ACF_Taxonomy_Field_Walker' ) ) :
- class ACF_Taxonomy_Field_Walker extends Walker {
- /**
- * What the class handles.
- *
- * @since 2.1.0
- * @var string
- */
- public $tree_type = 'category';
- /**
- * DB fields to use.
- *
- * @since 2.1.0
- * @var array
- */
- public $db_fields = array(
- 'parent' => 'parent',
- 'id' => 'term_id',
- );
- /**
- * The field being rendered.
- *
- * @since 1.0.0
- * @var array
- */
- public $field;
- /**
- * Constructor
- *
- * @date 20/4/21
- * @since 1.0.0
- *
- * @param array $field The field being rendered.
- * @return void
- */
- function __construct( $field ) {
- $this->field = $field;
- }
- /**
- * Starts the list before the elements are added.
- *
- * @see Walker:start_lvl()
- *
- * @since 1.0.0
- *
- * @param string $output Used to append additional content (passed by reference).
- * @param int $depth Depth of category. Used for tab indentation.
- * @param array $args An array of arguments. @see wp_terms_checklist()
- */
- public function start_lvl( &$output, $depth = 0, $args = array() ) {
- $indent = str_repeat( "\t", $depth );
- $output .= "$indent<ul class='children acf-bl'>\n";
- }
- /**
- * Ends the list of after the elements are added.
- *
- * @see Walker::end_lvl()
- *
- * @since 1.0.0
- *
- * @param string $output Used to append additional content (passed by reference).
- * @param int $depth Depth of category. Used for tab indentation.
- * @param array $args An array of arguments. @see wp_terms_checklist()
- */
- public function end_lvl( &$output, $depth = 0, $args = array() ) {
- $indent = str_repeat( "\t", $depth );
- $output .= "$indent</ul>\n";
- }
- /**
- * Start the element output.
- *
- * @see Walker::start_el()
- *
- * @since 1.0.0
- *
- * @param string $output Used to append additional content (passed by reference).
- * @param WP_Term $term The current term object.
- * @param int $depth Depth of the term in reference to parents. Default 0.
- * @param array $args An array of arguments. @see wp_terms_checklist()
- * @param int $id ID of the current term.
- */
- public function start_el( &$output, $term, $depth = 0, $args = array(), $id = 0 ) {
- $is_selected = in_array( $term->term_id, $this->field['value'] );
- // Generate array of checkbox input attributes.
- $input_attrs = array(
- 'type' => $this->field['field_type'],
- 'name' => $this->field['name'],
- 'value' => $term->term_id,
- );
- if ( $is_selected ) {
- $input_attrs['checked'] = true;
- }
- $output .= "\n" . '<li data-id="' . esc_attr( $term->term_id ) . '">' .
- '<label' . ( $is_selected ? ' class="selected"' : '' ) . '>' .
- '<input ' . acf_esc_attrs( $input_attrs ) . '/> ' .
- '<span>' . acf_esc_html( $term->name ) . '</span>' .
- '</label>';
- }
- /**
- * Ends the element output, if needed.
- *
- * @see Walker::end_el()
- *
- * @since 1.0.0
- *
- * @param string $output Used to append additional content (passed by reference).
- * @param WP_Term $category The current term object.
- * @param int $depth Depth of the term in reference to parents. Default 0.
- * @param array $args An array of arguments. @see wp_terms_checklist()
- */
- public function end_el( &$output, $category, $depth = 0, $args = array() ) {
- $output .= "</li>\n";
- }
- }
- endif;
|