it-swarm.com.de

WP Dropdown-Liste "Job-Manager-Kategorie"; Platzhaltertext über Filter ändern

Ich habe stundenlang gegoogelt und keine wirklich hilfreichen Ergebnisse erzielt. Ich habe eine Website, die WP Job Manager verwendet. Eines der Suchfelder, die mit diesem Plugin geliefert werden, ist eine Kategorie-Dropdown-Liste.

Ich möchte den Platzhalter für diesen Text von "Wähle eine Kategorie ..." in "Wähle deine Sektoren ..." ändern.

Ich bin auf diesen Beitrag gestoßen: https://wordpress.org/support/topic/changing-placeholder-text-for-category-dropdown/

Dies erklärt, dass dies möglich ist.

Der folgende Code stammt aus dem WP Job Manager-Plug-in, um auf den obigen Link zu verweisen.

function job_manager_dropdown_categories( $args = '' ) {
    $defaults = array(
        'orderby'         => 'id',
        'order'           => 'ASC',
        'show_count'      => 0,
        'hide_empty'      => 1,
        'child_of'        => 0,
        'exclude'         => '',
        'echo'            => 1,
        'selected'        => 0,
        'hierarchical'    => 0,
        'name'            => 'cat',
        'id'              => '',
        'class'           => 'job-manager-category-dropdown ' . ( is_rtl() ? 'chosen-rtl' : '' ),
        'depth'           => 0,
        'taxonomy'        => 'job_listing_category',
        'value'           => 'id',
        'multiple'        => true,
        'show_option_all' => false,
        'placeholder'     => __( 'Choose a category…', 'wp-job-manager' ),
        'no_results_text' => __( 'No results match', 'wp-job-manager' ),
        'multiple_text'   => __( 'Select Some Options', 'wp-job-manager' )
    );

    $r = wp_parse_args( $args, $defaults );

    if ( ! isset( $r['pad_counts'] ) && $r['show_count'] && $r['hierarchical'] ){
        $r['pad_counts'] = true;
    }

    // WPML & Polylang caching per language
    if ( defined( 'ICL_SITEPRESS_VERSION' ) ) {
        $r['lang'] = apply_filters( 'wpml_current_language', NULL );
    } elseif ( function_exists( 'pll_current_language' ) ) {
        $r['lang'] = pll_current_language();
    }

    extract( $r );

// Store in a transient to help sites with many cats
    $categories_hash = 'jm_cats_' . md5( json_encode( $r ) . WP_Job_Manager_Cache_Helper::get_transient_version( 'jm_get_' . $r['taxonomy'] ) );
    $categories      = get_transient( $categories_hash );

    if ( empty( $categories ) ) {
        $categories = get_terms( $taxonomy, array(
            'orderby'         => $r['orderby'],
            'order'           => $r['order'],
            'hide_empty'      => $r['hide_empty'],
            'child_of'        => $r['child_of'],
            'exclude'         => $r['exclude'],
            'hierarchical'    => $r['hierarchical']
        ) );
        set_transient( $categories_hash, $categories, DAY_IN_SECONDS * 30 );
    }

    $name       = esc_attr( $name );
    $class      = esc_attr( $class );
    $id         = $id ? esc_attr( $id ) : $name;

    $output = "<select name='" . esc_attr( $name ) . "[]' id='" . esc_attr( $id ) . "' class='" . esc_attr( $class ) . "' " . ( $multiple ? "multiple='multiple'" : '' ) . " data-placeholder='" . esc_attr( $placeholder ) . "' data-no_results_text='" . esc_attr( $no_results_text ) . "' data-multiple_text='" . esc_attr( $multiple_text ) . "'>\n";

    if ( $show_option_all ) {
        $output .= '<option value="">' . esc_html( $show_option_all ) . '</option>';
    }

    if ( ! empty( $categories ) ) {
        include_once( JOB_MANAGER_PLUGIN_DIR . '/includes/class-wp-job-manager-category-walker.php' );

        $walker = new WP_Job_Manager_Category_Walker;

        if ( $hierarchical ) {
            $depth = $r['depth'];  // Walk the full depth.
        } else {
            $depth = -1; // Flat.
        }

        $output .= $walker->walk( $categories, $depth, $r );
    }

    $output .= "</select>\n";

    if ( $echo ) {
        echo $output;
    }

    return $output;
}

Ich würde mich über Ratschläge zum Erstellen eines Filters zum Ändern des Platzhaltertextes freuen.

Craig

1
Craig Watson

Basierend auf den Tests, die ich durchgeführt habe, kann die Platzhalterzeichenfolge Wählen Sie eine Kategorie ... nicht mit dem Filter submit_job_form_fields gefiltert werden, aber es gibt immer noch Möglichkeiten, diese Zeichenfolge zu ändern.

Eine Möglichkeit, den Text zu ändern, besteht darin, die job-filters.php-Standardvorlage des Plugins mit Ihrer eigenen zu überschreiben.

Kopieren Sie die Standardvorlage /wp-job-manager/templates/job-filters.php in Ihr Design: /your-theme/job_manager/job-filters.php

Bearbeiten Sie die Kopie von job-filters.php Ihres Themas, indem Sie das Argument placeholder zu beiden Aufrufen von job_manager_dropdown_categories() hinzufügen:

<?php wp_enqueue_script( 'wp-job-manager-ajax-filters' ); ?>

<?php do_action( 'job_manager_job_filters_before', $atts ); ?>

<form class="job_filters">
    <?php do_action( 'job_manager_job_filters_start', $atts ); ?>

    <div class="search_jobs">
        <?php do_action( 'job_manager_job_filters_search_jobs_start', $atts ); ?>

        <div class="search_keywords">
            <label for="search_keywords"><?php _e( 'Keywords', 'wp-job-manager' ); ?></label>
            <input type="text" name="search_keywords" id="search_keywords" placeholder="<?php esc_attr_e( 'Keywords', 'wp-job-manager' ); ?>" value="<?php echo esc_attr( $keywords ); ?>" />
        </div>

        <div class="search_location">
            <label for="search_location"><?php _e( 'Location', 'wp-job-manager' ); ?></label>
            <input type="text" name="search_location" id="search_location" placeholder="<?php esc_attr_e( 'Location', 'wp-job-manager' ); ?>" value="<?php echo esc_attr( $location ); ?>" />
        </div>

        <?php if ( $categories ) : ?>
            <?php foreach ( $categories as $category ) : ?>
                <input type="hidden" name="search_categories[]" value="<?php echo sanitize_title( $category ); ?>" />
            <?php endforeach; ?>
        <?php elseif ( $show_categories && ! is_tax( 'job_listing_category' ) && get_terms( 'job_listing_category' ) ) : ?>
            <div class="search_categories">
                <label for="search_categories"><?php _e( 'Category', 'wp-job-manager' ); ?></label>
                <?php if ( $show_category_multiselect ) : ?>
                    <?php job_manager_dropdown_categories( array( 'placeholder' => __( 'Choose a sector&hellip;', 'your-text-domain' ), 'taxonomy' => 'job_listing_category', 'hierarchical' => 1, 'name' => 'search_categories', 'orderby' => 'name', 'selected' => $selected_category, 'hide_empty' => false ) ); ?>
                <?php else : ?>
                    <?php job_manager_dropdown_categories( array( 'placeholder' => __( 'Choose a sector&hellip;', 'your-text-domain' ), 'taxonomy' => 'job_listing_category', 'hierarchical' => 1, 'show_option_all' => __( 'Any category', 'wp-job-manager' ), 'name' => 'search_categories', 'orderby' => 'name', 'selected' => $selected_category, 'multiple' => false ) ); ?>
                <?php endif; ?>
            </div>
        <?php endif; ?>

        <?php do_action( 'job_manager_job_filters_search_jobs_end', $atts ); ?>
    </div>

    <?php do_action( 'job_manager_job_filters_end', $atts ); ?>
</form>

<?php do_action( 'job_manager_job_filters_after', $atts ); ?>

<noscript><?php _e( 'Your browser does not support JavaScript, or it is disabled. JavaScript must be enabled in order to view listings.', 'wp-job-manager' ); ?></noscript>

Eine alternative Methode zum Ändern des Kategorie auswählen ... Texts ist die Verwendung des Filters gettext:

add_filter('gettext', 'wpse243242_change_wp_job_manager_text', 20, 3 );
function wpse243242_change_wp_job_manager_text( $translated_text, $untranslated_text, $domain ) {
    if ( 'wp-job-manager' !== $domain ) {
        return $translated_text;        
    }

    // make the changes to the text
    switch( $untranslated_text ) {
            // Multi category select
            case 'Choose a category&hellip;':
                $translated_text = __( 'Choose a sector&hellip;', 'text_domain' );
            break;

            // Single category select
            case 'Any category':
                $translated_text = __( 'Any sector', 'text_domain' );
            break;

            // add more items
     }

    return $translated_text;        
}
3
Dave Romsey