如何在functions.php中调用搜索词变量?

时间:2017-11-13 12:39:56

标签: php ajax wordpress

我正在尝试调用functions.php文件中的变量,但由于某种原因它无效。根据我的阅读,在Wordpress中调用搜索词的默认方法是使用以下方法完成的。它在search.php中正常工作,但在functions.php

中却没有
<?php $search_query = get_search_query(); ?>
<div align="center">
<?php echo $search_query ?>
</div>

我在functions.php文件中使用数组中的相同内容,但它没有被调用。

这不起作用:

<?php
function load_posts_by_ajax_callback_search() {
    check_ajax_referer('load_more_posts_search', 'security');
    $paged_search = $_POST['page'];
    $args_search = array(
        'posts_per_page' => '20',
        's' => $search_query,
        'paged' => $paged_search,
    );
    $my_posts_search = new WP_Query( $args_search );
    if ( $my_posts_search->have_posts() ) :
        ?>
        <?php while ( $my_posts_search->have_posts() ) : $my_posts_search->the_post() ?>

但是,当我硬编码搜索词时,班加罗尔&#34;在代码中,它正在工作

<?php
function load_posts_by_ajax_callback_search() {
    check_ajax_referer('load_more_posts_search', 'security');
    $paged_search = $_POST['page'];
    $args_search = array(
        'posts_per_page' => '20',
        's' => 'Bangalore',
        'paged' => $paged_search,
    );
    $my_posts_search = new WP_Query( $args_search );
    if ( $my_posts_search->have_posts() ) :
        ?>
        <?php while ( $my_posts_search->have_posts() ) : $my_posts_search->the_post() ?>

如何让它适用于所有关键字?

这是调用此帖子的脚本 此脚本在search.php中运行以调用更多帖子

<script type="text/javascript">
var ajaxurl = "<?php echo admin_url( 'admin-ajax.php' ); ?>";
var page = 2;
jQuery(function($) {
$('body').on('click', '.loadmore', function() {

    var data = {
        'action': 'load_posts_by_ajax_search',
        'page': page,
        'security': '<?php echo wp_create_nonce("load_more_posts_search"); ?>'
    };

    $.post(ajaxurl, data, function(response) {
        $('.my-posts').append(response);
        page++;
    });
});
});

</script>

搜索词来自此搜索

<form method="get" id="searchform" action="<?php bloginfo('url'); ?>" target="_self">
<div>
<input style="text-align:center;width:100%;margin:0 0 12px; 0;border-color:#4a235a;color:#000000;" placeholder='Eg:Location,Skill,Company' class="text" type="text" value="" name="s" id="s" />
</div> 
<div>
<input type="submit" style="text-align:center;margin:0 0 0 0;width:100%;border:1.5px solid;border-color:grey;background-color:#4a235a;color:#f4511e;" class="submit button" name="submit" value="<?php _e('Search');?>" />
</div>
</form>

如果您需要完整的代码,请告诉我来自search.php和functions.php文件。感谢您的任何意见和帮助。

2 个答案:

答案 0 :(得分:1)

<强>过程:

  1. 访问者编写搜索字词并点击搜索按钮
  2. 使用jQuery,我们将访问搜索词并将其与我们的请求一起发送到PHP脚本
  3. 在PHP函数中,我们将获取搜索词,并在我们的args数组中使用“s”参数作为WP_Query。
  4. 使用jQuery访问搜索字词

    $('body').on('click', '.loadmore', function() {
    
        var data = {
            'action': 'load_posts_by_ajax_search',
            'page': page,
            'searchTerm': $('#s').val(), //Get the search term.
            'security': '<?php echo wp_create_nonce("load_more_posts_search"); ?>'
        }
    

    更新您的PHP代码:

    $paged_search = $_POST['page'];
    $search_term = esc_attr($_POST['searchTerm']);
    $args_search = array(
        'posts_per_page' => '20',
        's' => $search_term,
        'paged' => $paged_search,
    );
    

答案 1 :(得分:1)

您需要将变量传递给函数才能在该函数中使用。

function load_posts_by_ajax_callback_search($searchInput) {
    check_ajax_referer('load_more_posts_search', 'security');
    $paged_search = $_POST['page'];
    $args_search = array(
        'posts_per_page' => '20',
        's' => $searchInput,
        'paged' => $paged_search,

当你调用该函数时,你输入了$ search_query变量。

load_posts_by_ajax_search($search_query)