在w3schools或其他任何地方,我都见过以链接或形式使用php文件。但在我尝试创建了9000多次带有php文件get请求的链接之后,Wordpress从未让我这样做。这就是我正在做的:
这是Wordpress模板的一部分,我从DB中获取值,并创建缩略图,其中包含每个值的链接:
<?php
global $wpdb;
$wp_albums = $wpdb->get_results("SELECT * FROM mngr_albums ORDER BY Releasedate");
foreach($wp_albums as $a) :
echo \'<a href="javascript: loadDoc()">\' ?>
<div class="col-xs-4 col-sm-4 col-md-4 col-lg-4" name="albums">
<div class="thumbnail col-xs-12 col-sm-12 col-md-12 col-lg-12" name="albums">
<?php
echo \'<img src="\' . $a->Image . \'" width="320" height="320" alt="\'. $a->Image .\'">\';
echo \'<br><p style="text-align: center" id="artist" name="\'.$a->Artist.\'">\'.$a->Artist.\'</p>\';
echo \'<p style="text-align:center; font-size:18px" id="album" name="\'.$a->Album.\'">\'.$a->Album.\'</p>\'; ?>
</div>
</div>
</a>
<?php endforeach; ?>
创建链接后,我在同一模板中使用AJAX请求生成函数:
<script>
function loadDoc() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("container").innerHTML = this.responseText;
}
};
var artist = document.getElementById("artist").getAttribute("name");
var album = document.getElementById("album").getAttribute("name");
xhttp.open("GET", "?artist=" + artist + "&album=" + album, true);
xhttp.send();
}
</script>
因此,在get请求之前
?artist=" + artist + "&album=" + album
我需要使用此脚本放置指向文件的链接:
<?php
$artist = $_REQUEST["artist"];
$album = $_REQUEST["album"];
$tracks = $wpdb->get_results("SELECT * FROM mngr_tracks WHERE Artist = \'".$artist."\' AND Album = \'".$album."\'");
echo \'<ul id="list" style="z-index: 1000">\';
foreach($tracks as $t) {
echo \'<li>\';
echo \'<a href="javascript: track()" id="track" name="\'.$t->FileName.\'">\'.$t->Track.\'</a>\';
echo \'</li>\';
}
echo \'</ul>\';
if($_REQUEST[\'file\'] != \'\') {
$file = $_REQUEST[\'file\'];
echo $file;
$p = $wpdb->get_results("SELECT FileDir FROM mngr_tracks WHERE FileName=\'". $file ."\'");
foreach ($p as $pat) {
$path = $pat->FileDir;
}
}
?>
让我们在步骤3中调用脚本
file.php
. 我需要将其放置在何处以实现get请求?我试着把它保存在
C:\\wordpress\\htdocs\\wp-content\\themes\\this-theme
并通过
127.0.0.1\\wordpress\\wp-content\\themes\\this-theme\\file.php?album=Album&artist=Artist
-- 它从来没有起过作用。我还尝试将步骤3中的代码放入
functions.php
向它发出请求,就像
\\functions.php?album=Album&artist=Artist
-- 没有什么
我想也许file.php
不是由服务器上的PHP处理的,但当我打开时,它总是显示空白页而不是代码127.0.0.1\\wordpress\\wp-content\\themes\\this-theme\\file.php
在浏览器中。
我需要把file.php
? 在发出get请求时,我需要如何从客户端访问它?
最合适的回答,由SO网友:Johansson 整理而成
不建议这样做,但如果要这样做,请按以下方式执行:
将文件保存在WordPress的根文件夹中,就在index.php
. 然后,需要WordPress的核心文件,通过以下代码:
define(\'WP_USE_THEMES\', false);
global $wp, $wp_query, $wp_the_query, $wp_rewrite, $wp_did_header;
require(\'wp-load.php\');
现在,即使该文件实际上不是WordPress的一部分,也可以将其视为一个文件,您可以使用它做任何事情。
但是,这可能会导致安全问题,因此我建议您仅出于教育目的尝试。
要使用AJAX与WordPress通信,请改用Rest API。您可以在中找到一个简单的解决方案this 答复