在前端使用自定义视图:
您可以尝试修改
SELECT
使用以下(alpha)插件在前端进行查询:
<?php
/**
* Plugin Name: wpdb - a custom SELECT view for the wp_posts table on the front-end
* Version: alpha
*/
! is_admin() && add_filter( \'query\', function( $query ) {
global $wpdb;
$view = \'calculated_posts\'; // <-- Edit to your needs.
if( \'select\' === mb_substr( strtolower( $query ) , 0, 6 ) )
if( false !== mb_stripos( $query, $wpdb->posts ) )
$query = str_ireplace( $wpdb->posts, $view, $query );
return $query;
}, PHP_INT_MAX );
通过使用
query
的过滤器
wpdb
班
我们不想修改INSERT
, UPDATE
和DELETE
查询。
这只会影响从本机进行的查询wpdb
类,但不是例如直接调用MySQLi。
请注意,插件和主题当然有可能由本机提供wpdb
连接到数据库时初始化。
也可能有更复杂查询的示例,例如选择和插入的组合。可以修改上述插件以适应这些情况。
Notice: 请记住在尝试之前进行备份。
访问自定义视图的额外字段:
额外字段
rating_average
字段现在应在中可用
WP_Post
实例,如:
$post->rating_average
我们还可以创建自定义模板标记:
function get_the_rating_average()
{
$post = get_post();
return ! empty( $post ) ? $post->rating_average : false;
}
这里我只是修改
get_the_ID()
作用
相应的显示功能为:
function the_rating_average()
{
echo get_the_rating_average();
}
现在,我们可以轻松访问循环中的额外字段:
$q = new WP_Query( array( \'posts_per_page\' => \'5\' ) );
while( $q->have_posts() ) : $q->the_post();
the_title();
the_rating_average(); #<-- displaying our extra field here
endwhile;
我们最好为额外字段使用默认字段尚未使用的名称。