在 WordPress 中通过 AJAX 加载页面内容
Load PAGE content via AJAX in WordPress
所以我正在尝试建立一个通过 AJAX 加载页面的网站,但如果它不起作用,就转到正常的页面地址。我在互联网上尝试了不同的教程,但无法正常工作。我真的被困在了这里。
这是我使用的教程:AJAX load Wordpress Content
这是我的代码:
scripts.js
$(document).ready(function() {
// Check for hash value in URL
var hash = window.location.hash.substr(1);
var href = $('#menu-itmotr-menu li a').each(function(){
var href = $(this).attr('href');
if(hash==href.substr(0,href.length-5)){
var toLoad = hash+'.html #content';
$('#content').load(toLoad)
}
});
$('#menu-itmotr-menu li a').click(function(){
var toLoad = $(this).attr('href')+' #content';
$('#content').hide('fast',loadContent);
$('#load').remove();
$('#wrapper').append('<span id="load">LOADING...</span>');
$('#load').fadeIn('normal');
window.location.hash = $(this).attr('href').substr(0,$(this).attr('href').length-5);
function loadContent() {
$('#content').load(toLoad,'',showNewContent())
}
function showNewContent() {
$('#content').show('normal',hideLoader());
}
function hideLoader() {
$('#load').fadeOut('normal');
}
return false;
});});
page.php
<?php get_header(); ?>
<div id="container">
<div class="row live-section">
<div class="col-7" style="border-right: 1px solid black; height:100%;">
<iframe width="100%" height="475" src="https://www.youtube.com/embed/UMNgPEw8GnE?controls=0" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="col-5">
<div id="content">
<?php
// TO SHOW THE PAGE CONTENTS
while ( have_posts() ) : the_post(); ?>
<div class="page-content">
<?php the_content(); ?>
</div>
<?php
endwhile; //resetting the page loop
wp_reset_query(); //resetting the page query
?>
</div>
</div>
</div>
</div>
<?php get_footer(); ?>
header.php
<html <?php language_attributes(); ?>>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title><?php wp_title('«', true, 'right'); ?> <?php bloginfo('name'); ?></title>
<meta name="description" content="">
<meta name="author" content="">
<meta name="viewport" content="width=device-width">
<link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />
<script src="https://code.jquery.com/jquery-3.5.0.js"></script>
<?php wp-head ?>
<link rel="stylesheet" type="text/css" href="<?php echo get_stylesheet_directory_uri(). '/style.css' ?>">
<link rel="stylesheet" type="text/css" href="<?php echo get_stylesheet_directory_uri(). '/script.js' ?>">
<link rel="stylesheet" type="text/css" href="<?php echo get_stylesheet_directory_uri(). '/css/itmotr.css' ?>">
<link rel="stylesheet" type="text/css" href="<?php echo get_stylesheet_directory_uri(). '/css/bootstrap.min.css' ?>">
</head>
<body>
<nav>
<div class="row itmotr-header">
<div class="col-7">
<?php if ( has_custom_logo() ) : ?>
<div class="site-logo"><?php the_custom_logo(); ?></div>
<?php endif; ?>
</div>
<div class="col-5">
<?php
wp_nav_menu( array(
'theme_location' => 'itmotr-header',
'container_class' => 'itmotr-header-meunu' ) );
?>
</div>
</div>
</nav>
我在某处读到我需要将这两行添加到我的主题的 function.php 中:
// creating Ajax call for WordPress
add_action( 'wp_ajax_nopriv_get_latest', 'get_latest' );
add_action( 'wp_ajax_get_latest', 'get_latest' );
这是我的一个名为程序的页面的源代码。 YouTube payer 是为了功能检查,将被直播取代,需要在浏览网站时继续付费
<html lang="en-US">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Program « itmotr radio</title>
<meta name="description" content="">
<meta name="author" content="">
<meta name="viewport" content="width=device-width">
<link rel="pingback" href="http://itmotr-beta.local/xmlrpc.php" />
<script src="https://code.jquery.com/jquery-3.5.0.js"></script>
<link rel="stylesheet" type="text/css" href="http://itmotr-beta.local/wp-content/themes/ITMOTR-THEME/style.css">
<link rel="stylesheet" type="text/css" href="http://itmotr-beta.local/wp-content/themes/ITMOTR-THEME/script.js">
<link rel="stylesheet" type="text/css" href="http://itmotr-beta.local/wp-content/themes/ITMOTR-THEME/css/itmotr.css">
<link rel="stylesheet" type="text/css" href="http://itmotr-beta.local/wp-content/themes/ITMOTR-THEME/css/bootstrap.min.css">
</head>
<body>
<nav>
<div class="row itmotr-header">
<div class="col-7">
<div class="site-logo"><a href="http://itmotr-beta.local/" class="custom-logo-link" rel="home"><img width="500" height="125" src="http://itmotr-beta.local/wp-content/uploads/2020/09/itmotr-logo.png" class="custom-logo" alt="itmotr radio" srcset="http://itmotr-beta.local/wp-content/uploads/2020/09/itmotr-logo.png 500w, http://itmotr-beta.local/wp-content/uploads/2020/09/itmotr-logo-300x75.png 300w" sizes="(max-width: 500px) 100vw, 500px" /></a></div>
</div>
<div class="col-5">
<div class="itmotr-header-meunu"><ul id="menu-itmotr-menu" class="menu"><li id="menu-item-58" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-home menu-item-58"><a href="http://itmotr-beta.local/">Chat</a></li>
<li id="menu-item-52" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-50 current_page_item menu-item-52"><a href="http://itmotr-beta.local/program/" aria-current="page">Program</a></li>
<li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25"><a href="http://itmotr-beta.local/archive/">Archive</a></li>
<li id="menu-item-53" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-53"><a href="http://itmotr-beta.local/about/">About</a></li>
</ul></div> </div>
</div>
</nav><div id="container">
<div class="row live-section">
<div class="col-7" style="border-right: 1px solid black; height:100%;">
<iframe width="100%" height="475" src="https://www.youtube.com/embed/UMNgPEw8GnE?controls=0" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="col-5">
<div id="content">
<div class="page-content">
<figure class="wp-block-image size-large is-resized"><img loading="lazy" src="http://itmotr-beta.local/wp-content/uploads/2020/09/118772221_1195993277430854_6461524319873454907_o-1024x576.png" alt="" class="wp-image-26" width="1024" height="576" srcset="http://itmotr-beta.local/wp-content/uploads/2020/09/118772221_1195993277430854_6461524319873454907_o-1024x576.png 1024w, http://itmotr-beta.local/wp-content/uploads/2020/09/118772221_1195993277430854_6461524319873454907_o-300x169.png 300w, http://itmotr-beta.local/wp-content/uploads/2020/09/118772221_1195993277430854_6461524319873454907_o-768x432.png 768w, http://itmotr-beta.local/wp-content/uploads/2020/09/118772221_1195993277430854_6461524319873454907_o-1536x864.png 1536w, http://itmotr-beta.local/wp-content/uploads/2020/09/118772221_1195993277430854_6461524319873454907_o.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
我错过了什么?从头开始构建 WordPress 主题,不要有任何其他 AJAX 或可能干扰此的奇怪请求。非常感谢您的帮助 <3
非常感谢!
此致,
一个 php 和 ajax 菜鸟 :)
看来和我运行的本地服务器有关。
在线发布时,AJAX加载是这样的!
所以我正在尝试建立一个通过 AJAX 加载页面的网站,但如果它不起作用,就转到正常的页面地址。我在互联网上尝试了不同的教程,但无法正常工作。我真的被困在了这里。
这是我使用的教程:AJAX load Wordpress Content
这是我的代码:
scripts.js
$(document).ready(function() {
// Check for hash value in URL
var hash = window.location.hash.substr(1);
var href = $('#menu-itmotr-menu li a').each(function(){
var href = $(this).attr('href');
if(hash==href.substr(0,href.length-5)){
var toLoad = hash+'.html #content';
$('#content').load(toLoad)
}
});
$('#menu-itmotr-menu li a').click(function(){
var toLoad = $(this).attr('href')+' #content';
$('#content').hide('fast',loadContent);
$('#load').remove();
$('#wrapper').append('<span id="load">LOADING...</span>');
$('#load').fadeIn('normal');
window.location.hash = $(this).attr('href').substr(0,$(this).attr('href').length-5);
function loadContent() {
$('#content').load(toLoad,'',showNewContent())
}
function showNewContent() {
$('#content').show('normal',hideLoader());
}
function hideLoader() {
$('#load').fadeOut('normal');
}
return false;
});});
page.php
<?php get_header(); ?>
<div id="container">
<div class="row live-section">
<div class="col-7" style="border-right: 1px solid black; height:100%;">
<iframe width="100%" height="475" src="https://www.youtube.com/embed/UMNgPEw8GnE?controls=0" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="col-5">
<div id="content">
<?php
// TO SHOW THE PAGE CONTENTS
while ( have_posts() ) : the_post(); ?>
<div class="page-content">
<?php the_content(); ?>
</div>
<?php
endwhile; //resetting the page loop
wp_reset_query(); //resetting the page query
?>
</div>
</div>
</div>
</div>
<?php get_footer(); ?>
header.php
<html <?php language_attributes(); ?>>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title><?php wp_title('«', true, 'right'); ?> <?php bloginfo('name'); ?></title>
<meta name="description" content="">
<meta name="author" content="">
<meta name="viewport" content="width=device-width">
<link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />
<script src="https://code.jquery.com/jquery-3.5.0.js"></script>
<?php wp-head ?>
<link rel="stylesheet" type="text/css" href="<?php echo get_stylesheet_directory_uri(). '/style.css' ?>">
<link rel="stylesheet" type="text/css" href="<?php echo get_stylesheet_directory_uri(). '/script.js' ?>">
<link rel="stylesheet" type="text/css" href="<?php echo get_stylesheet_directory_uri(). '/css/itmotr.css' ?>">
<link rel="stylesheet" type="text/css" href="<?php echo get_stylesheet_directory_uri(). '/css/bootstrap.min.css' ?>">
</head>
<body>
<nav>
<div class="row itmotr-header">
<div class="col-7">
<?php if ( has_custom_logo() ) : ?>
<div class="site-logo"><?php the_custom_logo(); ?></div>
<?php endif; ?>
</div>
<div class="col-5">
<?php
wp_nav_menu( array(
'theme_location' => 'itmotr-header',
'container_class' => 'itmotr-header-meunu' ) );
?>
</div>
</div>
</nav>
我在某处读到我需要将这两行添加到我的主题的 function.php 中:
// creating Ajax call for WordPress
add_action( 'wp_ajax_nopriv_get_latest', 'get_latest' );
add_action( 'wp_ajax_get_latest', 'get_latest' );
这是我的一个名为程序的页面的源代码。 YouTube payer 是为了功能检查,将被直播取代,需要在浏览网站时继续付费
<html lang="en-US">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Program « itmotr radio</title>
<meta name="description" content="">
<meta name="author" content="">
<meta name="viewport" content="width=device-width">
<link rel="pingback" href="http://itmotr-beta.local/xmlrpc.php" />
<script src="https://code.jquery.com/jquery-3.5.0.js"></script>
<link rel="stylesheet" type="text/css" href="http://itmotr-beta.local/wp-content/themes/ITMOTR-THEME/style.css">
<link rel="stylesheet" type="text/css" href="http://itmotr-beta.local/wp-content/themes/ITMOTR-THEME/script.js">
<link rel="stylesheet" type="text/css" href="http://itmotr-beta.local/wp-content/themes/ITMOTR-THEME/css/itmotr.css">
<link rel="stylesheet" type="text/css" href="http://itmotr-beta.local/wp-content/themes/ITMOTR-THEME/css/bootstrap.min.css">
</head>
<body>
<nav>
<div class="row itmotr-header">
<div class="col-7">
<div class="site-logo"><a href="http://itmotr-beta.local/" class="custom-logo-link" rel="home"><img width="500" height="125" src="http://itmotr-beta.local/wp-content/uploads/2020/09/itmotr-logo.png" class="custom-logo" alt="itmotr radio" srcset="http://itmotr-beta.local/wp-content/uploads/2020/09/itmotr-logo.png 500w, http://itmotr-beta.local/wp-content/uploads/2020/09/itmotr-logo-300x75.png 300w" sizes="(max-width: 500px) 100vw, 500px" /></a></div>
</div>
<div class="col-5">
<div class="itmotr-header-meunu"><ul id="menu-itmotr-menu" class="menu"><li id="menu-item-58" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-home menu-item-58"><a href="http://itmotr-beta.local/">Chat</a></li>
<li id="menu-item-52" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-50 current_page_item menu-item-52"><a href="http://itmotr-beta.local/program/" aria-current="page">Program</a></li>
<li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25"><a href="http://itmotr-beta.local/archive/">Archive</a></li>
<li id="menu-item-53" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-53"><a href="http://itmotr-beta.local/about/">About</a></li>
</ul></div> </div>
</div>
</nav><div id="container">
<div class="row live-section">
<div class="col-7" style="border-right: 1px solid black; height:100%;">
<iframe width="100%" height="475" src="https://www.youtube.com/embed/UMNgPEw8GnE?controls=0" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="col-5">
<div id="content">
<div class="page-content">
<figure class="wp-block-image size-large is-resized"><img loading="lazy" src="http://itmotr-beta.local/wp-content/uploads/2020/09/118772221_1195993277430854_6461524319873454907_o-1024x576.png" alt="" class="wp-image-26" width="1024" height="576" srcset="http://itmotr-beta.local/wp-content/uploads/2020/09/118772221_1195993277430854_6461524319873454907_o-1024x576.png 1024w, http://itmotr-beta.local/wp-content/uploads/2020/09/118772221_1195993277430854_6461524319873454907_o-300x169.png 300w, http://itmotr-beta.local/wp-content/uploads/2020/09/118772221_1195993277430854_6461524319873454907_o-768x432.png 768w, http://itmotr-beta.local/wp-content/uploads/2020/09/118772221_1195993277430854_6461524319873454907_o-1536x864.png 1536w, http://itmotr-beta.local/wp-content/uploads/2020/09/118772221_1195993277430854_6461524319873454907_o.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
我错过了什么?从头开始构建 WordPress 主题,不要有任何其他 AJAX 或可能干扰此的奇怪请求。非常感谢您的帮助 <3
非常感谢!
此致, 一个 php 和 ajax 菜鸟 :)
看来和我运行的本地服务器有关。
在线发布时,AJAX加载是这样的!