2017-11-13 2 views
1

Ich versuche, eine Variable in functions.php Datei aufzurufen, aber es funktioniert nicht aus irgendeinem Grund. Nach dem, was ich gelesen habe, ist die Standardmethode zum Aufrufen von Suchwort in Wordpress mit der folgenden Methode durchgeführt. Es funktioniert gut in search.php aber nicht in functions.phpWie kann die Suchbegriffsvariable in functions.php aufgerufen werden?

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

ich in einem Array Verwendung derselben mache wie in functions.php Datei folgt aber nicht genannt wird.

Dies funktioniert nicht:

<?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() ?> 

Aber wenn ich die harte Code Suchbegriff „Bangalore“ im Code wird

<?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() ?> 

Arbeits Wie kann ich es für alle Keywords funktioniert ?

Dies ist das Skript, das diesen Beitrag ruft Dieses Skript in search.php läuft mehr Beiträge

nennen
<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> 

Der Suchbegriff aus dieser Suche kommt von

<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> 

lass es mich wissen Wenn Sie den vollständigen Code aus der Datei search.php und functions.php benötigen. Danke für jede Eingabe und Hilfe.

+0

Bitte teilen Sie das Skript, das diese Funktion aufruft. –

+0

Bitte überprüfen Sie den aktualisierten Beitrag für das Skript –

+0

Woher sollte der Suchbegriff kommen? Gibt es ein Formular auf dieser Seite? Wenn ja, fügen Sie bitte auch seinen Code hinzu. –

Antwort

1

Prozess:

  1. Der Besucher schreibt den Suchbegriff ein und klickt auf die Suchtaste
  2. jQuery verwenden wir den Suchbegriff zugreifen und sie mit unserer Anfrage an das PHP-Skript
  3. senden In Mit der PHP-Funktion erhalten wir den Suchbegriff und verwenden den "s" -Parameter in unserem args-Array für WP_Query.

Zugang der Suchbegriff mit 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"); ?>' 
    } 

Aktualisieren Sie Ihre PHP-Code:

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

Ich habe versucht, aber es funktioniert nicht –

+0

Versuchen Sie, es zu debuggen und warum nicht zu finden. Benutze in deiner Frage "Konsole".debug ($ ('# s'). val()); "und schreibe in deinem PHP" var_dump ($ search_term); ", dann benutze deine Konsole (Entwicklerwerkzeuge), um die Ausgabe dieser Variablen zu sehen und mich zu aktualisieren. –

+0

die Logik, die Sie verwenden, ist richtig, aber immer noch funktioniert es nicht –

1

Sie müssen die Variable in Ihrer Funktion zu übergeben für sie zur Verfügung stehen in dieser Funktion.

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, 

Und wenn Sie die Funktion aufrufen, geben Sie Ihre Variable $ search_query ein.

load_posts_by_ajax_search($search_query) 
+0

Ich habe es versucht, aber es funktioniert nicht –

+0

Hat es funktioniert .. Vielen Dank für die Hilfe 'searchTerm': $ ('# s'). Val() wurde ersetzt durch 'searchTerm': '' das funktioniert einwandfrei –

+0

ah ... ich sehe .. das ist toll, dass Sie es funktioniert haben. :) – ben721sg

Verwandte Themen