私は何時間もグーグルしてきましたが、本当に有用な結果は得られませんでした。私はWP Job Managerを使用するサイトを持っています。このプラグインに付属の検索フィールドの1つはカテゴリドロップダウンリストです。
このテキストのプレースホルダーを「カテゴリを選択してください」から「セクターを選択してください」に変更します。
私はこの記事に遭遇しました: https://wordpress.org/support/topic/changing-placeholder-text-for-category-dropdown/
これができることを説明します。
以下のコードは、上記のリンクを参照するためにWP Job Manager Pluginから取得されたものです。
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;
}
プレースホルダのテキストを変更するためのフィルタの作成方法についてのアドバイスがあれば幸いです。
クレイグ
私が行ったテストに基づいて、プレースホルダー文字列 カテゴリを選択します… / submit_job_form_fields
フィルタでフィルタすることはできませんが、それでもその文字列を変更する方法はあります。
テキストを変更する方法の1つは、プラグインのデフォルトのjob-filters.php
テンプレートを自分のもので上書きすることです。
デフォルトのテンプレート/wp-job-manager/templates/job-filters.php
をあなたのテーマにコピーしてください:/your-theme/job_manager/job-filters.php
両方のjob_manager_dropdown_categories()
の呼び出しにplaceholder
引数を追加して、テーマのjob-filters.php
のコピーを編集します。
<?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>
カテゴリを選択する… を変更する別の方法は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;
}