当我从select中选择下拉菜单的语音时,我试图用ajax显示自定义帖子类型(espositori)帖子。
在file1.php内部,我有以下代码:
<select id="tipologia-cliente" name="cpt" onchange="showVariables(this.value)">
// some options
</select>
而ajax脚本是
<script>
function showVariables(str) {
var xhttp;
if (str.length == 0) {
document.getElementById("main-content").innerHTML = "";
return;
}
xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("main-content").innerHTML = this.responseText;
}
};
xhttp.open("GET", "/wp-content/themes/TemplateName/templates-page/getcpt.php?q="+str, true);
xhttp.send();
}
</script>
在getcpt.php文件中,代码为:
$args = array(
'post_type' => 'espositori',
'numberposts' => -1
);
$myquery = new WP_Query( $args );
if($myquery->have_posts()):
while($myquery->have_posts()):
$myquery->the_post();
the_title();
echo '<br>';
endwhile;
wp_reset_query();
endif;
当我选择一个选项时,我在控制台上收到此错误 GET https://www.mysite.it/wp-content/themes/mysite/templates-page/getcpt.php?q=espositori 500(内部服务器错误)
如果我用简单的回显“ Hello World!”替换getcpt.php代码,则此工作...
有人可以帮助我吗? 非常感谢
答案 0 :(得分:0)
使用此代码。当您需要设置发布限制时,该属性为posts_per_page
。 WP_Query link
$args = array(
'post_type' => 'espositori',
'posts_per_page' => -1,
);
global $post;
$myquery = new WP_Query( $args );
if($myquery->have_posts()):
while($myquery->have_posts()):
$myquery->the_post();
the_title();
echo '<br>';
endwhile;
wp_reset_query();
endif;
答案 1 :(得分:0)
这是使用WordPress AJAX的工作代码。
将此添加到 functions.php :
add_action('wp_ajax_load_custom_espositori', 'load_custom_espositori_ajax_handler'); // wp_ajax_{action}
add_action('wp_ajax_nopriv_load_custom_espositori', 'load_custom_espositori_ajax_handler'); // wp_ajax_nopriv_{action}
function load_custom_espositori_ajax_handler() {
$args = array(
'post_type' => 'espositori',
'posts_per_page' => -1
);
$myquery = new WP_Query( $args );
if($myquery->have_posts()):
while($myquery->have_posts()):
$myquery->the_post();
the_title();
echo '<br>';
endwhile;
wp_reset_query();
endif;
wp_die();
}
将此添加到模板文件:
<script>
function showVariables(str) {
var xhttp;
if (str.length == 0) {
jQuery('#main-content').html('');
return;
}
jQuery.ajax({
url : '<?php echo site_url(); ?>/wp-admin/admin-ajax.php', // AJAX handler
data : { action : 'load_custom_espositori', qry : str },
type : 'POST',
success : function( $result ){
if( $result ) {
jQuery('#main-content').html($result);
}
}
});
}
</script>
让我知道WordPress版本是否有效。
答案 2 :(得分:0)
尝试改用$ wpdb全局对象。这是您代码中的示例:
$args = array(
'post_type' => 'espositori',
'posts_per_page' => -1,
'post_status' => 'publish',
);
global $wpdb;
$posts = $wpdb->get_posts($args);
if(!empty($posts)){
foreach($posts as $post){
setup_postdata($post);
//You can use the_title() the_content() the_excerpt() the_permalink() etc...
echo get_the_title($post->ID);
echo '<br />';
}
}
希望有帮助!