Wie kann ich zwingen das Category Widget (Drop-Down-Stil), um die Kategorie Slug statt der? Cat = #?Wordpress Kategorie Widget Drop-Down Slugs
Antwort
Wir können Kraftanzeige tun Standard-Wordpress Kategorie-Widget auf unsere Anforderung außer Kraft zu setzen. Dies ist nicht die beste Methode zum Überschreiben von Standard-Wordpress-Widgets. Es wird am besten sein, neue Widget-Klasse zu registrieren und Methode anzupassen. Ich denke, Sie können die gleiche Widget-Klasse ändern Name, Variablen, ID, um das gleiche wie Standard-Widget, aber anders, es hat keine Auswirkungen auf Standard-Wordpress-Widgets. Unterhalb der Override-Kategorie ändern Sie das Dropdown-Menü für die Änderung des Widgets für die Standardkategorie, wenn dies für Sie hilfreich ist.
<?php
/*
* Plugin Name: Test
*/
add_action('widgets_init', 'plugin_prefix_widgets_init');
function plugin_prefix_widgets_init(){
register_widget('WP_Widget_Custom_Categories');
}
if(! class_exists('WP_Widget_Categories'))
include ABSPATH.'wp-includes/widgets/class-wp-widget-categories.php';
class WP_Widget_Custom_Categories extends WP_Widget_Categories{
public function widget($args, $instance) {
// Apply conditinal tag to sepicific template only. Any other display to remove override widget display.
/*if(! is_page('page_slug')){
parent::widget($args, $instance);
return;
}*/
static $first_dropdown = true;
/** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */
$title = apply_filters('widget_title', empty($instance['title']) ? __('Categories') : $instance['title'], $instance, $this->id_base);
$c = ! empty($instance['count']) ? '1' : '0';
$h = ! empty($instance['hierarchical']) ? '1' : '0';
$d = ! empty($instance['dropdown']) ? '1' : '0';
echo $args['before_widget'];
if ($title) {
echo $args['before_title'] . $title . $args['after_title'];
}
$cat_args = array(
'orderby' => 'name',
'show_count' => $c,
'hierarchical' => $h
);
if ($d) {
$dropdown_id = ($first_dropdown) ? 'cat' : "{$this->id_base}-dropdown-{$this->number}";
$first_dropdown = false;
echo '<label class="screen-reader-text" for="' . esc_attr($dropdown_id) . '">' . $title . '</label>';
$cat_args['show_option_none'] = __('Select Category');
$cat_args['id'] = $dropdown_id;
$cat_args['value_field'] = 'slug';
if(is_category())
$cat_args['selected'] = get_term(get_query_var('cat'), 'category')->slug ;
/**
* Filter the arguments for the Categories widget drop-down.
*
* @since 2.8.0
*
* @see wp_dropdown_categories()
*
* @param array $cat_args An array of Categories widget drop-down arguments.
*/
wp_dropdown_categories(apply_filters('widget_categories_dropdown_args', $cat_args));
?>
<script type='text/javascript'>
/* <![CDATA[ */
(function() {
var dropdown = document.getElementById("<?php echo esc_js($dropdown_id); ?>");
function onCatChange() {
if (dropdown.options[ dropdown.selectedIndex ].value != -1) {
location.href = "<?php echo home_url(); ?>/category/"+dropdown.options[ dropdown.selectedIndex ].value;
}
}
dropdown.onchange = onCatChange;
})();
/* ]]> */
</script>
<?php
} else {
?>
<ul>
<?php
$cat_args['title_li'] = '';
/**
* Filter the arguments for the Categories widget.
*
* @since 2.8.0
*
* @param array $cat_args An array of Categories widget options.
*/
wp_list_categories(apply_filters('widget_categories_args', $cat_args));
?>
</ul>
<?php
}
echo $args['after_widget'];
}
// Only need to change customize widget method to display as requirement
}
Entschuldigung für schlechtes Englisch.
Ich habe dies auf Wordpress-Foren gefunden. Es ist ziemlich alt, aber löst Ihr Problem. cat slug in dropdown wp forums
<?php
function replace_id_for_slug($option){
$categories = get_categories("hide_empty=0");
preg_match('/value="(\d*)"/', $option[0], $matches);
$id = $matches[1];
$slug = "";
foreach($categories as $category){
if($category->cat_ID == $id){
$slug = $category->slug;
}
}
return preg_replace("/value=\"(\d*)\"/", "value=\"$slug\"", $option[0]);
}
$select = wp_dropdown_categories("hierarchical=1&hide_empty=0&echo=0");
$select = preg_replace_callback("#<option[^>]*>[^<]*</option>#", "replace_id_for_slug", $select);
echo $select;
?>
<script type="text/javascript"><!--
var dropdown = document.getElementById("cat");
function onCatChange() {
if (dropdown.options[dropdown.selectedIndex].value != -1) {
location.href = "<?php echo get_option('home');?>/"+dropdown.options[dropdown.selectedIndex].value+"/";
}
}
dropdown.onchange = onCatChange;
--></script>
Wenn Sie nicht gegen ein zusätzliches Plugin sind, gibt es auch diese Option, da die anderen Antworten Ihren Code aufschlüsseln.
- 1. Wordpress - Kategorie hinzufügen zu index.php
- 2. Multi-Select-Kategorie WordPress Customizersteuerung
- 3. Wordpress erhalten Kategorie Eltern als Kategorie Array
- 4. Wordpress - Aktuelle Kategorie Eltern
- 5. Wordpress - Kategorie Post Order
- 6. Benutzerdefinierte Kategorie Seitenumbruch Wordpress
- 7. Wordpress Kategorie Vorlage Frage
- 8. Kategorie nur in WordPress
- 9. Wordpress - Wie Posts nach Kategorie gruppiert angezeigt?
- 10. Wordpress widget creation
- 11. Wordpress Widget speichern
- 12. Wordpress - Display spezifische Widget
- 13. Erstellen Sie ein Kategorie-Menü mit WordPress
- 14. Change wordpress widget zeigen Beiträge von bestimmten post_tag anstelle von bestimmten Kategorie
- 15. Make Wordpress Unterkategorien Kategorie Template
- 16. Wordpress Kategorie Kopfspalte zeigt nicht
- 17. Wordpress bekommen Kategorie von Beschreibung
- 18. Wordpress Dropdown - hinzufügen Pfeil
- 19. Wordpress und Widget mit TinyMCE
- 20. WordPress-Hook für Widget-Titel?
- 21. Yshout5 in einem Wordpress Widget?
- 22. Bild-Overlay-Widget Wordpress Jupiter
- 23. Wordpress benutzerdefinierte Widget Bild hochladen
- 24. Wordpress - wp_options - widget option_value strucuture
- 25. Drop-down-Menü Wordpress-Widget
- 26. Wordpress erhalten Sie die Kategorie Name für jede Kategorie
- 27. Wie kann ich diese Dropdown-Kategorie mit meiner anderen Dropdown-Kategorie übereinstimmen?
- 28. WordPress populäre Beiträge, wie Beiträge wie Kategorie angezeigt werden?
- 29. wordpress-kategorie in wp nav menü
- 30. Wordpress - Kategorie zeigt nicht alle Beiträge
Was ist Ihre Kategorie Slug? Hast du * Category Base * in deine Kategorie geändert? Bitte klären Sie Ihre Frage! – MinhTri
Jede Kategorie. Jeder hat seine eigene Schnecke, und ich habe Tausende von ihnen. Standardmäßig werden in der Anzeige "Category Widget" alle Links zu den Kategorien angezeigt, die über ihren jeweiligen Slug verknüpft sind. Wenn Sie es in Dropdown-Liste statt in Liste ändern, ändern sich alle Kategorien in der Dropdown-Liste zu? Cat = # anstelle des Slugs (/ category/the_slug) – Kevin
Haben Sie die [Permalink Settings] (https: // codex .wordpress.org/Using_Permalinks)? – MinhTri