簡體   English   中英

如何為自定義字段創建可排序的管理面板列,以計算Wordpress中的頁面印象數

[英]How to make a sortable admin panel column for a custom field counting the number of page impressions in Wordpress

為了實現我所要求的,我使用此代碼

輸出視圖數

function getPostViews($postID){
$count_key = 'post_views_count';
$count = get_post_meta($postID, $count_key, true);
if($count==''){
    delete_post_meta($postID, $count_key);
    add_post_meta($postID, $count_key, '0');
    return "0";    }
return $count.'';}

注冊視圖

function setPostViews($postID) {
$count_key = 'post_views_count';
$count = get_post_meta($postID, $count_key, true);
if($count==''){
    $count = 0;
    delete_post_meta($postID, $count_key);
    add_post_meta($postID, $count_key, '0');
}else{
    $count++;
    update_post_meta($postID, $count_key, $count);    }}

在管理面板中輸出視圖計數

add_filter('manage_pages_columns', 'posts_column_views');
add_action('manage_pages_custom_column', 'posts_custom_column_views',10,2);
add_filter('manage_posts_columns', 'posts_column_views');
add_action('manage_posts_custom_column', 'posts_custom_column_views',10,2);
function posts_column_views($defaults){
    $defaults['post_views'] = __('Views');
    return $defaults;}
function posts_custom_column_views($column_name, $id){
    if($column_name === 'post_views'){
        echo getPostViews(get_the_ID());    }}

這很好用!!!

添加了對列進行排序的功能

add_filter('manage_edit-post_sortable_columns', 'add_views_sortable_column');
add_filter('manage_edit-page_sortable_columns', 'add_views_sortable_column');
add_filter('manage_edit-slides_sortable_columns', 'add_views_sortable_column');
add_filter('manage_edit-hp_highlights_sortable_columns', 'add_views_sortable_column');
add_filter('manage_edit-portfolio_sortable_columns', 'add_views_sortable_column');
add_filter('manage_edit-staff_sortable_columns', 'add_views_sortable_column');
add_filter('manage_edit-services_sortable_columns', 'add_views_sortable_column');
add_filter('manage_edit-testimonials_sortable_columns', 'add_views_sortable_column');
add_filter('manage_edit-faqs_sortable_columns', 'add_views_sortable_column');
function add_views_sortable_column($sortable_columns){
  $sortable_columns['post_views'] = 'views_views';
  return $sortable_columns;}

通過以/wp-admin/edit.php?orderby=views_views&order=desc的形式輸入字符串,應該可以按“ 視圖 ”列進行排序,但實際上它是對“ 日期 ”而不是“ 視圖 ”進行排序。

更改查詢以對WordPress顯示的列進行排序。 按數值為數字的隨機字段排序

(方法1)

add_filter('pre_get_posts', 'add_column_views_request');
function add_column_views_request( $object ){
  if( $object->get('orderby') != 'views_views' )
    return;
  $object->set('meta_key', 'post_views');
  $object->set('orderby', 'meta_value_num');}

(方法2)

add_action( 'pre_get_posts', 'add_column_views_request', 1 );
function add_column_views_request( $query ) {
  if ( $query->is_main_query() && ( $orderby = $query->get( 'orderby' ) ) ) {
    switch( $orderby ) {
        case 'views_views':
            $query->set( 'meta_key', 'post_views' );
            $query->set( 'orderby', 'meta_value' );
        break;}}}

(方法3)

add_filter('request', 'add_column_views_request');
function add_column_views_request( $vars ) {
    if ( 'views_views' == $vars['orderby'] ){
    $vars['meta_key'] = 'post_views';
    $vars['orderby'] = 'meta_value_num';}
    return $vars;}

但是現在排序不返回結果:“ 找不到條目。

我應該做
方法1

 $object->set('meta_key', 'post_views_count');

方法二

 $query->set( 'meta_key', 'post_views_count' );

方法3

 $vars['meta_key'] = 'post_views_count';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM