web-dev-qa-db-ja.com

データベースから表示し、ワードプレスプラグインでもっと読み込むためにajaxを使う方法

私はPluginを開発しました。それは自動的にデータベースにビデオURLを作成します。

テーブルはid、title、URL、Thurlから構成されています。 wp-adminパネルのフォームを使用してコンテンツをデータベースに送信できます(pkによるビデオの場合)。

データベースから行を取得して表示したいと思います。最初にページがロードされるときには3つのURLしか表示されず、さらにロードされるとクリックされるときに3つ以上表示されるようになります。 WordPressで。

http://demos.codexworld.com/load-more-data-using-jquery-ajax-php-from-database/ / Wordpressプラグインは上記のURLのようなものを作るべきです。

これを解決するために私を助けてください。

以下はそのためのコードです。

    <?php
/*
Plugin Name: pkvideos
Plugin URI: http://pavan.com
Author: Pavan 
Version: 1.0
Description: Videos of IndianFolk.
Text Domain: pavan
Requires at least: 3.0
Tested up to: 4.7.3
*/

add_action('admin_menu', 'test_plugin_setup_menu');

function test_plugin_setup_menu(){
        add_menu_page( 'If Videos', 'If Videos by PK', 'manage_options', 'if-videos-by-pk', 'postvideo' );
        add_submenu_page('if-videos-by-pk', 'Edit Videos', 'Edit Videos', 'manage_options', 'if-videos-edit' );
        add_submenu_page('if-videos-by-pk', 'About Me', 'About Me', 'manage_options', 'if-videos-about' );
}

function postvideo(){
        echo "<h1>IndianFolk Videos</h1>";

        ?>
        <form action="" method="post">
 Title :<input type="text" name="title" required><br>
 Video Url: <input type="text" name="url" required><br>
 Thumbnail Url: <input type="text" name="thurl" required><br>
 <input type="submit" value="Submit" name="submit">
</form>


        <?php
        if(isset($_POST['submit'])){ //check if form was submitted
  $title = $_POST['title']; //get input text
  $url = $_POST['url'];
  $thurl = $_POST['thurl'];
  $aData = array(
            'title' => $title,
            'url' => $url,
            'thurl'=> $thurl
            );

  global $wpdb;
  $res = $wpdb->insert('wp_ifvideos', $aData);      
   $siteurll=get_site_url();

} 

}

function create_plugin_database_table() {
 global $wpdb;
 $table_name = $wpdb->prefix . 'ifvideos';
 $sql = "CREATE TABLE $table_name (
 id mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
 title varchar(50) NOT NULL,
 url longtext NOT NULL,
 thurl longtext NOT NULL,
 PRIMARY KEY  (id)
 );";

 require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
 dbDelta( $sql );
}

register_activation_hook( __FILE__, 'create_plugin_database_table' );

/*=//This is used for adding form as the shortcode in pages or posts or widgets
function wp_first_shortcode(){
echo "Hello, This is your another shortcode!";
?>

<form action="" method="post">
 Title :<input type="text" name="title"><br>
 Url: <input type="text" name="url"><br>
 Thumbnail Url: <input type="text" name="thurl"><br>
 <input type="submit" value="Submit" name="submit">
</form>
<?php

if(isset($_POST['submit'])){ //check if form was submitted
  $title = $_POST['title']; //get input text
  $url = $_POST['url'];
  $thurl = $_POST['thurl'];
  $aData = array(
            'title' => $title,
            'url' => $url,
            'thurl'=> $thurl
            );

  global $wpdb;
  $res = $wpdb->insert('wp_ifvideos', $aData);      
   $siteurll=get_site_url();

}  

}//this is used for adding short code 
add_shortcode('first', 'wp_first_shortcode');*/

function videos_info() 
{
    global $wpdb; 

$videos = $wpdb->get_results( "SELECT * FROM wp_ifvideos ORDER BY id DESC" , ARRAY_N);

foreach ( $videos as $video ) {
    //Here $user[1], 1 is the column number.
    echo do_shortcode("[video width='256' height='144' 
 poster='$video[3]' mp4='$video[2]'][/video]");
 echo $video[1]. '<br>';
}
?>

<?php
}
add_shortcode('showinfo','videos_info');


function video_ajax()
{
    ?>

    <?php

}
 add_shortcode('ajaxvideo','video_ajax');
?>

以下のコードを変更してください。

$videos = $wpdb->get_results( "SELECT * FROM wp_ifvideos ORDER BY id DESC" , ARRAY_N);

foreach ( $videos as $video ) {
    //Here $user[1], 1 is the column number.
    echo do_shortcode("[video width='256' height='144' 
 poster='$video[3]' mp4='$video[2]'][/video]");
 echo $video[1]. '<br>';
}
?>

<?php
}
add_shortcode('showinfo','videos_info');


function video_ajax()
{
    ?>

    <?php

}
3
Pavan Kalyan

AJAXリクエストにiframeを使用することで、AJAXコードを習得してデバッグするのがはるかに簡単になります。これを試してください。

function videos_info() {
    global $wpdb; 

    // add LIMIT 3 here
    $videos = $wpdb->get_results( "SELECT * FROM wp_ifvideos ORDER BY id DESC LIMIT 3" , ARRAY_N);

    foreach ( $videos as $video ) {
        echo do_shortcode("[video width='256' height='144' poster='$video[3]' mp4='$video[2]'][/video]");
        echo $video[1]. '<br>';
    }

    $ajaxurl = admin_url('admin-ajax.php');
    echo "<iframe style='display:none;' name='loadmorevids' id='loadmorevids' src='javascript:void(0);'></iframe>";
    echo "<script>function loadmorevideos(offset) {
        document.getElementById('loadmorevids').src = '".$ajaxurl."?action=video_ajax&offset='+offset;}</script>";    
    echo "<div id='morevideos-3'><a href='javascript:void(0);' onclick='loadmorevideos(\"3\");'>Load More Videos</a></div>";
}

// For Logged in Users
add_action('wp_ajax_video_ajax', 'video_ajax');
// For Logged Out Users
add_action('wp_ajax_video_ajax', 'video_ajax');

function video_ajax() {

    global $wpdb;    
    $videos = $wpdb->get_results( "SELECT * FROM wp_ifvideos ORDER BY id DESC" , ARRAY_N);

    $offset = $_GET['offset']; $html = '';
    foreach ( $videos as $i => $video ) {
        // limit to 3 videos using offset
        if ( ($i > ($offset-1)) && ($i < ($offset+2)) ) {
            $html .= do_shortcode("[video width='256' height='144' poster='$video[3]' mp4='$video[2]'][/video]");
            $html .= $video[1]. '<br>';
        }
    }

    // append the new load more link
    $html .= '<div id="morevideos-'.($offset+3).'">';
    $html .= '<a href="javascript:void(0);" onclick="loadmorevids('.($offset+3).');">Load More Videos</a></div>';

    // replace any single quotes with escaped ones
    $html = str_replace("'", "\\'", $html);
    // (or alternatively)
    // $html = str_replace("'", "&apos;", $html);

    // replace the previous loadmore link with the loaded videos
    echo "<script>parent.document.getElementById('morevideos-".$offset."').innerHTML = '".$html."';</script>";
    exit;

}
1
majick

これは、適切なAjax呼び出しを行うためのCodexです https://codex.wordpress.org/AJAX_in_Plugins

その非常にシンプルなあなたのAjaxにアクションを追加します。

Nonceについてもお読みください https://codex.wordpress.org/WordPress_Nonces

2
Thamaraiselvam