Перезаписать список категорий WP Job Manager Walker - PullRequest
0 голосов
/ 18 февраля 2020

Я хотел установить родителя категории для таксономии "job_listing_category" как optgroup, если у него есть дочерние элементы. Как и this !

Мне удалось это исправить, заменив основной файл плагина WP Job Manager class-wp-job-manager-category-walker. php с:

<?php
/**
 * File containing the class WP_Job_Manager_Category_Walker.
 *
 * @package wp-job-manager
 */

if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

/**
 * Walks through categories.
 *
 * @extends Walker
 * @package wp-job-manager
 * @since 1.0.0
 */
class My_WP_Job_Manager_Category_Walker extends WP_Job_Manager_Category_Walker {

    /**
     * Tree type that the class handles.
     *
     * @var string
     */
    public $tree_type = 'category';

    /**
     * Database fields to use.
     *
     * @var array
     */
    public $db_fields = [
        'parent' => 'parent',
        'id'     => 'term_id',
        'slug'   => 'slug',
    ];


  function start_el( &$output, $category, $depth = 0, $args = array(), $id = 0 ) {

    $pad = str_repeat('&nbsp;', $depth * 3);



    $cat_name = apply_filters('list_cats', $category->name, $category);
    if ('list' == $args['has_children'] && $args['taxonomy'] == 'job_listing_category'){
//    $this->optgroup = true;
      $output .= "<optgroup class=\"level-$depth\" label=\"".$cat_name."\" >";
    } else {
      $output .= "<option class=\"level-$depth\" value=\"".$category->term_id."\"";
      if ( $category->term_id == $args['selected'] )
              $output .= ' selected="selected"';
      $output .= '>';
      $output .= $pad.$cat_name;
      if ( $args['show_count'] )
              $output .= '&nbsp;&nbsp;('. $category->count .')';
      $output .= "</option>";
    }

  }

  function end_el(&$output,$object,$depth) {
    if ('list' == $args['has_children'] && $args['taxonomy'] == 'job_listing_category') {
      $output .= '</optgroup>';
    }
  }
}

Проблема, с которой я сейчас сталкиваюсь, заключается в том, что ее можно перезаписать всякий раз, когда плагин администратора заданий WP будет обновлен!

Поэтому Я пытался следовать предложению , чтобы исправить эту проблему, но пока ни одно из предложений не работает. Возможно, у меня неправильный фильтр.

function wp_job_manager_optgroup_parent_category( $args ){

       // include new walker class - where ever you saved/named it
       //include_once( 'wp-job-manager/class-wp-job-manager-categroy-walker.php' ); 
       // set the name as the new walker for the widget args
       $args['walker'] = new My_WP_Job_Manager_Category_Walker;
       return $args;
}
add_filter( 'job_manager_job_filters_search_jobs_start', 'wp_job_manager_optgroup_parent_category' );

также пробовал следующие фильтры:

  • job_manager_job_filters_search_jobs_start
  • job_manager_job_filters_before
  • job_manager_term_multiselect_field_args
  • job_manager_dropdown_categories

Есть предложения, как это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...