2017-01-20 2 views
1

Ich versuche, einige Daten mit meinem WP Shortcode anzuzeigen, aber es zeigt alles außer Betrieb. Nach ein wenig Suchen sagen die Docs, dass Sie Return in der Funktion verwenden müssen, aber es funktioniert immer noch nicht.Wordpress Shortcode Anzeige von Daten außerhalb der Reihenfolge auch mit Return

Hier ist der Code

function dwwp_jobs_from_california($atts){ 

    $atts = shortcode_atts(array(
    'title' => 'All jobs in California:', 
    ), 
    $atts 
); 

    $query = new WP_Query(array('post_type' => 'job')); 
    $jobs = "<h1>" . $atts['title'] . '</h1><br>'; 
    if($query->have_posts()): 
    while ($query->have_posts()) : 
     $query->the_post(); 
     $jobs .= '<h3>' . the_title() . '</h3><br>'; 
    endwhile; 
    endif; 

    $jobs .= "End of the loop!"; 
    wp_reset_query(); 
    return $jobs; 
    } 

add_shortcode('jobs_california', 'dwwp_jobs_from_california'); 

In meinem Wordpress Seite:

"Content of the page" 

[jobs_california] 

Was es auf der Seite gerendert wird:

[jobs_california] 
"Content of the page" 

ich muss auch zugeben, dass ich bin nicht sehr daran gewöhnt arbeite mit PHP, tut mir leid, wenn meine Codequalität nicht gut ist.

Kann mir jemand sagen, was mache ich falsch? Danke im Voraus!

+0

Hallo! Also, wenn du "außer Betrieb" sagst, was meinst du? In welcher Reihenfolge sind sie und in welcher Reihenfolge erwarten Sie? – MacPrawn

+0

Sorry, mein Problem ist ein "häufiges Problem" bei Shortcodes, bei denen der Shortcode vor dem Seiteninhalt angezeigt wird. Ich werde die Frage bearbeiten :) –

+0

Aber Leute haben oft dieses Problem, wenn sie Echo anstelle der Rückkehr zur Funktion verwenden, aber das ist nicht der Punkt hier –

Antwort

2

Ich denke, das einzige Problem, das Sie haben, ist, dass Sie the_title() verwenden, die echo den Titel der Post wird ... Aber Sie möchten stattdessen eine HTML-Zeichenfolge erstellen, die von Ihrem Funktionscode zurückgegeben wird. Versuchen Sie es mit:

the_title('', '', false) 

oder, viel besser:

get_the_title() 

hoffe, das hilft!

+0

Vielen Dank. Genau das passierte! Fixed mit get_the_title() –

Verwandte Themen