我是Wordpress&的新手。 PHP,请原谅这个问题的天真,如果有的话。
我正在构建一个插件,我需要从数据库中选择值并使用值创建一个新的HTML页面。我正在使用自定义模板文件。
到目前为止我做了什么
从数据库中提取值
Load&在我的插件文件中显示我自己的模板
add_action( 'init', 'leb_add_endpoint' ); function leb_add_endpoint() { add_rewrite_endpoint( 'result', EP_PERMALINK ); } add_action( 'template_include', 'leb_render_template' ); function leb_render_template($default_template) { //some code removed for brevity if ( ! is_singular() || !isset($wp_query->query_vars['result']) ) { return $default_template; } $sample_result = $wpdb->get_var($wpdb->prepare($sql)); $default_template = plugin_dir_path(__FILE__) . '/my-custom-template.php'; return $default_template; }
my-custom-template.php
的内容如下
<?php
/* Template Name: My Template*/
echo '<h1>Testing</h1>';
?>
页面显示没有任何问题。我想要的只是将$sample_result
和其他类似结果从数据库中插入my-custom-template.php
我需要根据从DB中提取的值生成动态页面。所以每次创建的最终页面可能都不同。例如。如果有人点击www.example.com/sample-post/result
,则会显示一个页面,其中包含从数据库中提取的值。如果有人点击www.example.com/another-sample-post/result
,则会显示不同的页面,其中包含不同的值。这两个页面都具有相同的设计,只有少数几个值不同。这就是我想要实现的目标。
我该怎么做?请帮我。我被卡住了。 :(
答案 0 :(得分:2)
那么为什么不在 my-custom-template.php < my-custom-template.php 中使用 $ wp_query / p>
<?php
/* Template Name: My Template*/
global $wp_query;
echo '<pre>';
print_r($wp_query); // Use this in case you want to see what else do you have with you.
echo '<pre/>';
// Now you can use $wp_query to build your dynamic query at run time.
// This will allow you to perform task at run time
?>
如果您已将某些内容保存为元
<?php
$meta_values = get_post_meta( $post_id, $key, $single );
?>
如果您想检索子帖,那么
<?php
if ( have_posts() ) :
// Start the Loop.
while ( have_posts() ) : the_post();
// Do your stuff here such as below
the_title();
the_content();
endwhile;
else:
echo 'No Post Found';
endif;
?>
答案 1 :(得分:1)
我已经测试了代码
// Add a new var to query vars
function result_add_query_vars( $vars ){
$vars[] = 'result';
return $vars;
}
add_filter( 'query_vars', 'result_add_query_vars' );
// Add endpoint
function result_add_endpoint() {
add_rewrite_endpoint( 'result', EP_ROOT );
}
add_action( 'init', 'result_add_endpoint');
// change the template
function result_render_template($template)
{
global $wp_query;
if ( array_key_exists( 'result', $wp_query->query_vars ) ) {
$result = get_query_var('result');
$new_template = plugin_dir_path(__FILE__) . '/my-custom-template.php';
return $new_template;
} else {
return $template;
}
}
add_action( 'template_include', 'result_render_template' );
现在,您可以在自定义模板中检索查询var
/*
* Template Name: My Custom Template
*/
$result = get_query_var('result');
echo $result;
答案 2 :(得分:0)
1)在活动模板的function.php中写下此函数。
function leb_render_template() {
//some code removed for brevity
//$sql = 'YOUR_QUERY_CODE'
$sample_result = $wpdb->get_var($wpdb->prepare($sql));
return $my_template;
}
add_action('wp_ajax_leb_render_template', 'leb_render_template');
add_action('wp_ajax_nopriv_leb_render_template', 'leb_render_template');
2)自定义模板中的调用功能。
<?php
/* Template Name: My Template*/
echo '<h1>Testing</h1>';
$result = leb_render_template();
print_r($result); // Print Your function output.
?>