Javascript 基于上一页的变量在wordpress上生成页面

Javascript 基于上一页的变量在wordpress上生成页面,javascript,php,json,wordpress,endpoint,Javascript,Php,Json,Wordpress,Endpoint,几周来我一直在谷歌上搜索和尝试不同的东西,现在我会直接问 首先要注意的是,这一切都在Wordpress上,这似乎让一切变得更加困难 我想做的是单击一个链接将我引导到一个单独的页面。但是,该链接将有一个特定的ID,具体取决于您单击的对象。因此,从技术上讲,所有链接都会将您带到同一页面,但当页面加载时,它将使用链接中的ID生成页面上的数据 我所有的数据都是基于不同端点的JSON,我正在js文件中生成页面数据并将其插入到一个div中 原始页面上的数据在for循环中生成,如: for (var i =

几周来我一直在谷歌上搜索和尝试不同的东西,现在我会直接问

首先要注意的是,这一切都在Wordpress上,这似乎让一切变得更加困难

我想做的是单击一个链接将我引导到一个单独的页面。但是,该链接将有一个特定的ID,具体取决于您单击的对象。因此,从技术上讲,所有链接都会将您带到同一页面,但当页面加载时,它将使用链接中的ID生成页面上的数据

我所有的数据都是基于不同端点的JSON,我正在js文件中生成页面数据并将其插入到一个div中

原始页面上的数据在for循环中生成,如:

for (var i = 0; i < data.length; i++) {
    var trow = '<tr>';
    trow += '<td><a href="?id=' + data[i].itemID + '">' + data[i].info1 + '</a></td>';
    trow += '<td>' + data[i].info2 + '</td>';
    trow += '<td>' + data[i].info3 + '</td>';
    trow += '</tr>';
    table += trow;
}
for(变量i=0;i
因此,在新页面上,我只使用数据(不管ID是什么)生成它,而不使用for循环

在两种看似可行的解决方案中,我两者都有问题:

-除了href url之外,我不知道如何通过javascript页面发送变量,但是我不知道如何在javascript中使用该变量

-如果我能用PHP发送它(我也不能),我就不能将PHP变量转换成javascript变量


如果有任何不清楚的地方,请告诉我,我会尽快通知你。谢谢大家的帮助。

首先,您需要添加一个重写,以便能够接收请求-您可以通过将以下内容添加到主题的functions.php文件中来完成此操作:

add_action( 'init', 'my_rewrites' );
function my_rewrites(){
    add_rewrite_rule(
            '^your-slug/([^/]*)/?',
            'index.php?your-slug-data-id=$matches[1]',
            'top'
    );
}
然后,创建一个将利用此数据的新模板文件。您需要添加一个钩子,这样当您的重写运行时,它会拉入正确的模板文件,如下所示:

add_action( 'pre_get_posts', 'show_your_new_page', 1 );
function show_your_new_page( $wp_query ) {
    if ( ! is_admin() && $wp_query->is_main_query() && isset( $wp_query->query['your-slug-data-id'] ) ) {
        include( TEMPLATEPATH . '-child/your-new-template.php' );
        exit();
    }
}
现在,在新模板文件(new template.php)中,您可以使用
get\u query\u var('your slug data ID')

完成新页面设置后,只需将表格href更改为转到:

您可以使用PHP发送和检索

http://myurlplace.com?id=123

Then retrieve it within say the header like:

$myVarId = $_GET['id'];

Then in your javascript

var myId = '<?=$myVarId?>';
http://myurlplace.com?id=123
然后在标题中检索它,如:
$myVarId=$_GET['id'];
然后在javascript中
var myId='';

我要强调的是,这是一个简单的解决方案,完全取决于您的需要,但这会起作用。

根据数据来源,您可以做几件事


这些数据是来自数据库还是来自其他外部来源?

我在另一个问题中发现了这一点。它能够完成我所需要的。对不起,如果我没有说清楚这是可行的。由于我对wordpress没有太多的了解,所以我无法测试其他人给出的答案,但它们可能非常有效,而且效果更好

var getUrlParameter = function getUrlParameter(sParam) {
var sPageURL = decodeURIComponent(window.location.search.substring(1)),
sURLVariables = sPageURL.split('&'),
sParameterName,
i;

for (i = 0; i < sURLVariables.length; i++) {
    sParameterName = sURLVariables[i].split('=');

    if (sParameterName[0] === sParam) {
        return sParameterName[1] === undefined ? true : sParameterName[1];
    }
  }
}

var playerId = getUrlParameter('pid');
var getUrlParameter=函数getUrlParameter(sParam){
var sPageURL=decodeURIComponent(window.location.search.substring(1)),
sURLVariables=sPageURL.split(“&”),
sParameterName,
我
对于(i=0;i
我知道这只是一个例子,但我会认真避免使用短标签:\数据来自数据库,但就我对api端点的理解而言,我不是直接从数据库调用数据。您是从浏览器(javascript)还是从服务器(php)请求数据?我将首先尝试此方法,但我有一些关于什么是占位符和什么是代码的问题。在第一段代码中,是“index.php”实际引用了它,还是只是示例中的一个占位符?类似地,在第二个块中,“TEMPLATEPATH”是这样保留的,还是应该将完整路径放在模板的位置上?index.php和TEMPLATEPATH都应该保持原样。你应该(可选)更改的项目有:
显示你的新页面
你的新模板.php
我的重写
你的slug
,和
你的slug数据id
还要注意,一旦你添加了这个重写,你需要刷新wordpress重写,以便它注册这个。