Last active
November 24, 2022 15:37
-
-
Save thisbit/27da8d40352a2ebed8ec62e544ecb15f to your computer and use it in GitHub Desktop.
generateblocks_query_loop_args ordered by post_views_count
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* | |
* GenerateBlocks & GeneratePress implementation of post ordering based on post views. | |
*/ | |
// set the view counter | |
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 View"; | |
} | |
return $count.' Views'; | |
} | |
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); | |
} | |
} | |
// Remove issues with prefetching adding extra views | |
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0); | |
// Add to a column in WP-Admin | |
add_filter('manage_posts_columns', 'posts_column_views'); | |
add_action('manage_posts_custom_column', 'posts_custom_column_views',5,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()); | |
} | |
} | |
// modify the query block ouput order | |
function gb_query_by_views( $query_args, $attributes ) { | |
if ( ! empty( $attributes['className'] ) && strpos( $attributes['className'], 'order_by_views' ) !== false ) { | |
$query_args['post_type'] = 'post'; | |
$custom_args = array( | |
'meta_key' => 'post_views_count', | |
'orderby' => 'meta_value_num', | |
'order' => 'DESC', | |
); | |
} else { | |
return $query_args; | |
} | |
return array_merge( $query_args, $custom_args ); | |
} | |
add_filter( 'generateblocks_query_loop_args', 'gb_query_by_views', 10, 2 ); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* The Template for displaying all single posts. | |
* | |
* @package GeneratePress | |
*/ | |
if ( ! defined( 'ABSPATH' ) ) { | |
exit; // Exit if accessed directly. | |
} | |
get_header(); | |
?> | |
<div <?php generate_do_attr( 'content' ); ?>> | |
<main <?php generate_do_attr( 'main' ); ?>> | |
<?php | |
/** | |
* generate_before_main_content hook. | |
* | |
* @since 0.1 | |
*/ | |
do_action( 'generate_before_main_content' ); | |
if ( generate_has_default_loop() ) { | |
while ( have_posts() ) : | |
the_post(); | |
echo getPostViews(get_the_ID()); | |
generate_do_template_part( 'single' ); | |
endwhile; | |
setPostViews(get_the_ID()); | |
} | |
/** | |
* generate_after_main_content hook. | |
* | |
* @since 0.1 | |
*/ | |
do_action( 'generate_after_main_content' ); | |
?> | |
</main> | |
</div> | |
<?php | |
/** | |
* generate_after_primary_content_area hook. | |
* | |
* @since 2.0 | |
*/ | |
do_action( 'generate_after_primary_content_area' ); | |
generate_construct_sidebars(); | |
get_footer(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment