How to show data from database in wordpress?

2019-09-06 06:33发布

问题:

I am trying to add following code in WordPress, but I cant find the right way to do it. Please help me someone...

<?php
include("config.php");
$results = $mysqli->query("SELECT COUNT(*) as t_records FROM wp_posts");
$total_records = $results->fetch_object();
$total_groups = ceil($total_records->t_records/$items_per_group);
$results->close(); 
?>

It's work great nice if I use it outside of WordPress. But I don't know hot to implement this in my WordPress index.php

There is a lot of code in my theme so I can't give you exact code of the index page. But here is the main index.php file code

<?php

$is_filterable_index = is_home() && x_get_option( 'x_ethos_filterable_index_enable', '' ) == '1';

?>

<?php get_header(); ?>

  <div class="x-container-fluid max width main">

    <?php x_get_view( 'ethos', '_post', 'slider' ); ?>

    <div class="offset cf">
      <div class="<?php x_main_content_class(); ?>" role="main">

        <?php if ( $is_filterable_index ) : ?>
          <?php x_get_view( 'ethos', '_index' ); ?>
        <?php else : ?>
          <?php x_get_view( 'global', '_index' ); ?>          
        <?php endif; ?>
<?php /*?>         
<?php */?>      </div>
      <?php get_sidebar(); ?>

    </div>       
  </div>  

<div id="content"></div>


<?php get_footer(); ?>

回答1:

You should use the Wordpress db connection. Try this simple code and adapt it for your needs.

global $wpdb;
$query = "SELECT COUNT(*) as t_records FROM wp_posts";
$result = $wpdb->get_results($query);
var_dump($result);

http://codex.wordpress.org/Class_Reference/wpdb



回答2:

WordPress defines a class called wpdb, which contains a set of functions used to interact with a database.

global $wpdb; //global connection object 
$results = $wpdb->get_var( "SELECT COUNT(*) as t_records FROM wp_posts" ); // The get_var function returns a single variable from the database
$total_groups = ceil($results->t_records/$items_per_group);

check



回答3:

Use global Wordpress db object

global $wpdb;

$total_groups = $wpdb->get_var("SELECT COUNT(*) as t_records FROM wp_posts");


回答4:

The right way to do this would be by using wordpress post meta.Post meta's are built exactly for this kind of stuff. All validation and security features are taken care of by these functions, so you dont have to worry about anything. All you have to do is

GETTING VALUES

<?php $meta_values = get_post_meta( $post_id, $key, $single ); ?>

CREATING / UPDATING VALUES

<?php update_post_meta($post_id, $meta_key, $meta_value, $prev_value); ?>

DELETING VALUES

 <?php delete_post_meta($post_id, $meta_key, $meta_value); ?> 

Similarly you have meta values functions for users as well. Checkout the codex for further info,



回答5:

Use $wpdb

<?php
global $wpdb;
$total_records = $wpdb->get_var("SELECT COUNT(*) as t_records FROM $wpdb->posts");
$total_groups = ceil($total_records/$items_per_group);
?>

There are various methods depending on what you want to do with results (if there are several rows or columns, for example, you wouldn't use get_var)

I used $wpdb->posts instead of wp_posts in case someone changes the table prefix (eg in wp-config.php).