Sortieren von benutzerdefinierten Spalten in WordPress-Admin-Seiten
Lesezeit: 4 Minuten
John Mc Murray
Ich versuche, eine benutzerdefinierte Spalte im Admin-Bearbeitungsbildschirm zu sortieren. Die Spalte enthält einen ganzzahligen Wert (Stimmenzählung).
Um die Spalte zu generieren, verwende ich diesen “Standard” -Code:
Das Problem versucht, diese Spalte zu sortieren. Ich habe hier und auf anderen Seiten viele Antworten gelesen und weiß, wie man dies sortiert, wenn der Wert von post_meta stammt, aber wie Sie sehen können, stammt der Wert in diesem Fall von einem Rückgabewert eines Funktionsaufrufs.
Gibt es eine Möglichkeit, eine benutzerdefinierte Spalte zu sortieren, die nicht auf einem post_meta-Wert basiert?
Können Sie Ihre Frage aktualisieren und den Code von einfügen cutify-votes/classes/class.API.php? Oder Sie können es auf Pastebin.com posten und den Link zum Einfügen zu Ihrer Frage hinzufügen.
– Sally CJ
13. Mai 2018 um 11:15 Uhr
Danke Sally CJ, aber der Code in der Klasse ist nicht relevant. Relevant ist, dass es sich um einen ganzzahligen Wert handelt, der zurückgegeben wird. Ich habe mein Codebeispiel oben aktualisiert, um ein zufälliges int statt eines Funktionsaufrufs zu verwenden.
– John Mc Murray
17. Mai 2018 um 10:13 Uhr
Entschuldigung, aber sind Sie sicher, dass class “ist nicht relevant”? Ich meine, es muss eine Methode geben/function in dem class die die Stimmenzahl für bestimmte Beiträge speichert/aktualisiert, richtig? Auch wenn die Anzahl der Stimmen nicht in der Metatabelle der Beiträge gespeichert wird.
– Sally CJ
18. Mai 2018 um 4:32 Uhr
@JohnMcMurray Sie verwenden die Randfunktion und generieren jedes Mal eine neue Nummer. Wenn Sie also versuchen, die Spaltenrandfunktion zu sortieren, generieren Sie eine neue Nummer, sodass Sie kein perfektes Ergebnis erhalten, sodass Sie einen eindeutigen Post-Voting-Wert in Post-Meta speichern müssen, dann wird es funktionieren fein.
– Mukesh Panchal
18. Mai 2018 um 6:29 Uhr
Anand Choudhary
Spalten registrieren Als Erstes müssen Sie eine Spalte registrieren
<?php
add_action( 'manage_cake_posts_custom_column', 'my_cake_column_content', 10, 2 );
function my_cake_column_content( $column_name, $post_id ) {
if ( 'slices' != $column_name )
return;
//Get number of slices from post meta
$slices = get_post_meta($post_id, 'slices', true);
echo intval($slices);
} ?>
Machen Sie eine Spalte sortierbar
<?php
add_filter( 'manage_edit-cake_sortable_columns',
'my_sortable_cake_column' );
function my_sortable_cake_column( $columns ) {
$columns['slices'] = 'slice';
//To make a column 'un-sortable' remove it from the array
//unset($columns['date']);
return $columns;
} ?>
Danke Anand, aber mein Code macht das bereits und ich erwähne, dass ich den Wert von post_meta nicht bekomme …
– John Mc Murray
10. Mai 2018 um 7:43 Uhr
Hi Anand, Stack Snippets sind nur für JS/HTML/CSS, bitte überprüfe: Ausführbare Code-Snippets in Fragen und Antworten
– Brasilo
15. Mai 2018 um 15:08 Uhr
Der einfachste Weg, wenn Sie kein Plugin entwickeln, besteht darin, ein vorhandenes zu verwenden, z Admin-Spalten weil es Ihnen ermöglicht, mehrere erweiterte Aktionen auszuführen: Bestellungen, Hinzufügen von Spalten, …
Danke, aber ich kann dafür kein Plugin verwenden. Die Spalte erhält ihre Daten nicht aus einem Metafeld, sondern einen ganzzahligen Rückgabewert aus einem Funktionsaufruf. Alle diese Plugins hängen von eingebauten WordPress-Daten (Postmeta usw.) ab, und das habe ich nicht
– John Mc Murray
17. Mai 2018 um 10:08 Uhr
Themenfa
Sie müssen benutzerdefinierte hinzufügen query_orderby zu WP_Query wenn wp versucht, Posts nach Ihrer benutzerdefinierten Spalte zu ordnen. so was:
add_action( 'pre_get_posts', 'my_entry_vote_orderby' );
function my_entry_vote_orderby( $query ) {
global $wpdb;
// Only filter in the admin
if( ! is_admin() )
return;
$orderby = $query->get( 'orderby');
// Only filter if orderby is set to 'entry_vote_count'
if( 'entry_vote_count' == $orderby ) {
// We need the order - default is ASC
$order = isset( $query->query_vars ) && isset( $query->query_vars[ 'order' ] ) && strcasecmp( $query->query_vars[ 'order' ], 'desc' ) == 0 ? 'DESC' : 'ASC';
// Order the posts by vote count
$query->query_orderby = "ORDER BY ( SELECT vote_count FROM {$wpdb->posts} posts WHERE posts.post_type="post" AND posts.post_status="publish" ) {$order}";
}
}
13716900cookie-checkSortieren von benutzerdefinierten Spalten in WordPress-Admin-Seitenyes
Verwenden Sie diese fantastischen Plugins wordpress.org/plugins/codepress-admin-columns
– Anand Choudhary
10. Mai 2018 um 6:16 Uhr
Können Sie Ihre Frage aktualisieren und den Code von einfügen
cutify-votes/classes/class.API.php
? Oder Sie können es auf Pastebin.com posten und den Link zum Einfügen zu Ihrer Frage hinzufügen.– Sally CJ
13. Mai 2018 um 11:15 Uhr
Danke Sally CJ, aber der Code in der Klasse ist nicht relevant. Relevant ist, dass es sich um einen ganzzahligen Wert handelt, der zurückgegeben wird. Ich habe mein Codebeispiel oben aktualisiert, um ein zufälliges int statt eines Funktionsaufrufs zu verwenden.
– John Mc Murray
17. Mai 2018 um 10:13 Uhr
Entschuldigung, aber sind Sie sicher, dass
class
“ist nicht relevant”? Ich meine, es muss eine Methode geben/function
in demclass
die die Stimmenzahl für bestimmte Beiträge speichert/aktualisiert, richtig? Auch wenn die Anzahl der Stimmen nicht in der Metatabelle der Beiträge gespeichert wird.– Sally CJ
18. Mai 2018 um 4:32 Uhr
@JohnMcMurray Sie verwenden die Randfunktion und generieren jedes Mal eine neue Nummer. Wenn Sie also versuchen, die Spaltenrandfunktion zu sortieren, generieren Sie eine neue Nummer, sodass Sie kein perfektes Ergebnis erhalten, sodass Sie einen eindeutigen Post-Voting-Wert in Post-Meta speichern müssen, dann wird es funktionieren fein.
– Mukesh Panchal
18. Mai 2018 um 6:29 Uhr