Je recherche Google pendant des heures sans résultat vraiment utile. J'ai un site qui utilise WP Job Manager. L'un des champs de recherche fournis avec ce plugin est une liste déroulante de catégories.
J'aimerais changer le caractère fictif de ce texte de "Choisissez une catégorie ..." à "Choisissez vos secteurs ..."
Je suis tombé sur ce post: https://wordpress.org/support/topic/changing-placeholder-text-for-category-dropdown/
Cela explique que cela peut être fait.
Le code ci-dessous est tiré du plug-in de gestionnaire de travaux WP pour référence avec le lien ci-dessus.
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;
}
J'apprécierais tout conseil sur la façon de créer un filtre pour changer le texte d'espace réservé.
Craig
Sur la base des tests que j'ai effectués, la chaîne de substitution Choisissez une catégorie… ne peut pas être filtrée avec le filtre submit_job_form_fields
, mais il existe toujours des moyens de modifier cette chaîne.
Une façon de modifier le texte consiste à remplacer le modèle job-filters.php
par défaut du plug-in par le vôtre.
Copiez le modèle par défaut, /wp-job-manager/templates/job-filters.php
sur votre thème: /your-theme/job_manager/job-filters.php
Modifiez la copie de job-filters.php
de votre thème en ajoutant l'argument placeholder
aux deux appels de job_manager_dropdown_categories()
:
<?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…', '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…', '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>
Une autre méthode pour modifier le Choisissez une catégorie… texte consiste à utiliser le filtre 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…':
$translated_text = __( 'Choose a sector…', 'text_domain' );
break;
// Single category select
case 'Any category':
$translated_text = __( 'Any sector', 'text_domain' );
break;
// add more items
}
return $translated_text;
}