Filter Indexseite Plugin

Ich bin auf der Suche nach einem WordPress-Plugin, mit dem meine Benutzer anpassen können, welche Beiträge auf der Startseite erscheinen. Die Benutzer sollten eine Einstellungsseite haben, auf der sie auswählen können, aus welchen Kategorien und Tags sie Posts sehen möchten.

Weißt du, ob so etwas entwickelt wurde? Kostenlos oder Premium.

Solutions Collecting From Web of "Filter Indexseite Plugin"

Ich bin auf der Suche nach einem WordPress-Plugin, mit dem meine Benutzer anpassen können, welche Beiträge auf der Startseite erscheinen.

Ich bin mir nicht sicher, ob es bestimmte Plugins dafür gibt, aber es ist sicherlich mit ein paar functionen möglich.

Die Benutzer sollten eine Einstellungsseite haben, auf der sie auswählen können, aus welchen Kategorien und Tags sie Posts sehen möchten.

Einfacher als das Bereitstellen einer Einstellungsseite, die von der Profilseite getrennt ist, würde ich vorschlagen, der Profilseite des Benutzers ein paar neue Felder hinzuzufügen. Sie können die Home- Einstellungen des Bereichs aufrufen oder was immer Sie möchten.

Beispiel folgt …

Schritt 1 – Fügen Sie der Benutzerprofilseite benutzerdefinierte Felder hinzu

Hier nahm ich den gleichen Ansatz wie Mike bei der Beantwortung:
So fügen Sie der Benutzerprofilseite benutzerdefinierte Formularfelder hinzu und führen zwei Aktionen aus, um Benutzerprofilspeicherungen und Benutzeränderungen durch den Administrator zu berücksichtigen.

add_action( 'show_user_profile', 'home_prefs_profile_fields' ); add_action( 'edit_user_profile', 'home_prefs_profile_fields' ); function home_prefs_profile_fields( $user ) { $um = get_user_option( 'taxonomy_selection', $user->ID ); $tags = ( isset( $um['post_tag'] ) ) ? $um['post_tag'] : array(); $cats = ( isset( $um['categories'] ) ) ? $um['categories'] : array(); ?> 

Home Preferences


Choose which tags you want to display on the home page.
    < ?php wp_terms_checklist( 0, array( 'taxonomy' => 'post_tag', 'selected_cats' => $tags ) ); ?>



Choose which categories you want to display on the home page.
    < ?php wp_category_checklist( 0, 0, $cats, false ) ?>
< ?php }

Informationen zu den Begriffs- und Kategorie-Checklisten finden Sie in der Quelle (noch keine Dokumente).
http://core.trac.wordpress.org/browser/tags/3.0.2/wp-admin/includes/template.php#L217

Schritt 2 - Behandle das Speichern von Daten im Profil / Benutzer-Update

Wiederum zwei Aktionen, je nachdem, ob sich ein Benutzerprofil ändert oder ein anderer Benutzer Änderungen an einem anderen Benutzerprofil vornimmt.

 add_action( 'personal_options_update', 'save_home_prefs' ); add_action( 'edit_user_profile_update', 'save_home_prefs' ); function save_home_prefs( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) return false; $data = array(); if( isset( $_POST['tax_input'] ) ) { foreach( $_POST['tax_input'] as $taxonomy => $term_ids ) if( !taxonomy_exists( $taxonomy ) ) continue; else $data[$taxonomy] = array_map( 'intval', $term_ids ); } if( isset( $_POST['post_category'] ) ) $data['categories'] = $_POST['post_category']; update_user_meta( $user_id, 'taxonomy_selection', $data ); } 

HINWEIS: Es würde nicht schaden, das oben Genannte weiter zu bereinigen.

Schritt 3 - Passen Sie das CSS an

Ziehen Sie Kinderbegriffe ein, schweben Sie die Hauptlistenelemente, damit belegte Taxonomien nicht so viel Höhe verbrauchen.

 add_action( 'admin_print_styles-user-edit.php', 'tax_checklist_css' ); add_action( 'admin_print_styles-profile.php', 'tax_checklist_css' ); function tax_checklist_css() { ?>  < ?php } 

HINWEIS: 30% Breite auf den Listenelementen gibt Ihnen im Grunde das Aussehen von 3 Spalten von Begriffen, Sie können das CSS gerne anpassen.

Dies könnte genauso einfach in eine Enqueue umgewandelt werden, die ein gewisses Maß an Caching bietet, Inline-CSS ist schneller zu testen ist alles ...;)

Schritt 4 - Home-Abfrage basierend auf Benutzereinstellungen filtern

Fügen Sie basierend auf benutzerdefinierten Einstellungen für Tags und Kategorien einen Filter für Home-Abfragen hinzu.

 add_action( 'pre_get_posts', 'do_user_post_selection' ); function do_user_post_selection( $query ) { if( !is_home() || !is_user_logged_in() ) return; if( isset( $query->query_vars['post_type'] ) && ( 'nav_menu_item' == $query->query_vars['post_type'] ) ) return; if( 1 < did_action('wp') ) return; global $current_user; $tax_selection = get_user_option( 'taxonomy_selection', $current_user->ID ); if( empty( $tax_selection ) ) return; if( isset( $tax_selection['categories'] ) && ( is_array( $tax_selection['categories'] ) ) && ( !empty( $tax_selection['categories'] ) ) ) $query->set( 'category__in', $tax_selection['categories'] ); if( isset( $tax_selection['post_tag'] ) && ( is_array( $tax_selection['post_tag'] ) ) && ( !empty( $tax_selection['post_tag'] ) ) ) $query->set( 'tag__in', $tax_selection['post_tag'] ); return; } 

HINWEIS: Sie müssen keinen pre_get_posts Filter verwenden, Sie könnten parse_query oder Werte in ein WP_Query Objekt übergeben, ich persönlich finde den gewählten Hook einfach zu benutzen (und es ist das, was ich benutze).

UPDATE: Verschiebe die Home-Prefs-Elemente an den Anfang der Profilseite.

 function move_prefs() { ?>  < ?php } add_action( 'admin_head-user-edit.php', 'move_prefs' ); add_action( 'admin_head-profile.php', 'move_prefs' ); 

Hinweis: Es ist ein home_prefs_profile_fields HTML-Update für die function home_prefs_profile_fields ebenfalls erforderlich, ich habe die function in Schritt 1 entsprechend aktualisiert.

RE: Checkboxen, die von Abonnenten deaktiviert sind (siehe Kommentare). Der Grund dafür liegt in der functionsüberprüfung in den Term Checklist-functionen. Diese functionen werden normalerweise in Post-Erstellungs-Bildschirmen verwendet. Sie erwarten daher, dass der Benutzer einem Post (oder Typ) Terme zuordnen kann. In diesem Fall können wir das deaktivierte Attribut sicher entfernen (jQuery oben wurde mit der entsprechenden Änderung verbessert).

Ich hoffe, das hilft... 🙂

Haben Sie sich Justin Tadlocks Query Posts Plugin angeschaut?

Dieser Code ist ungetestet, aber lege ihn in deine function.php Datei und schau was passiert.

In der Theorie sollte das passieren:

  • Es fügt einen zusätzlichen Menüpunkt in der Admin-Oberfläche hinzu
  • Fügt zwei Metaboxen für Kategorien und Tags hinzu

In Ihrer Vorlage müssen Sie nur die Werte aus den Meta-Tags abrufen, indem Sie Folgendes verwenden:

 $categories = get_option('fp_categories'); $tags = get_option('fp_tags');; 

Dann benutze das in dir query_post .

Dies ist das Plugin / der Code:

 add_action('admin_menu', 'cms_options_menu'); function cms_options_menu() { //create new top-level menu add_menu_page('CMS options', __('CMS options'), 'administrator', __FILE__, 'cms_options_page',plugins_url('/images/icon.png', __FILE__)); //call register settings function add_action( 'admin_init', 'register_cms_options' ); } function register_cms_options() { //register our settings register_setting( 'cms-options', 'fp_categories' ); register_setting( 'cms-options', 'fp_tags' ); } function cms_options_page() { ?> 

CMS settings

< ?php settings_fields( 'cms-options' ); ?>
< ?php _e('Categories');?>
< ?php _e('Tags');?>

< ?php }