J'ai développé un plugin. Il crée automatiquement les URL de la vidéo dans la base de données.
La table est composée de id, titre, URL, Thurl. Nous pouvons envoyer le contenu à la base de données en utilisant le formulaire du panneau wp-admin (If videos by pk).
Je veux récupérer les lignes de la base de données et les afficher.Tout d'abord, lorsque la page se charge, elle ne devrait afficher que 3 URL et lorsque vous cliquez sur Charger plus, elle devrait en afficher 3 de plus, etc., essentiellement. J'ai besoin de savoir comment implémenter ajax. dans WordPress.
http://demos.codexworld.com/load-more-data-using-jquery-ajax-php-from-database/ Le plugin Wordpress devrait créer quelque chose comme l'URL ci-dessus.
S'il vous plaît aidez-moi à résoudre ce problème.
Vous trouverez ci-dessous le code correspondant.
<?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');
?>
S'il vous plaît aidez-moi à apporter les modifications au code ci-dessous.
$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
}
Voici une approche. En utilisant une variable iframe
pour la demande AJAX, il peut être beaucoup plus facile d'apprendre et de déboguer votre code AJAX ... essayez ceci:
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("'", "'", $html);
// replace the previous loadmore link with the loaded videos
echo "<script>parent.document.getElementById('morevideos-".$offset."').innerHTML = '".$html."';</script>";
exit;
}
Voici le Codex pour faire les appels ajax appropriés https://codex.wordpress.org/AJAX_in_Plugins
C'est très simple d'ajouter de l'action à votre Ajax.
Lire également sur nonce https://codex.wordpress.org/WordPress_Nonces