Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Umieszczenie pętli w return
Forum PHP.pl > Forum > PHP
AboutMe
Dzień doby

Muszę umieścić poniższy kod w return, czy w ogóle da się to zrobić przez łączenie stringów czy może przyposać to jakoś do zmiennej, jak to ugryźć?

  1. if ( bp_has_members( 'type=popular&max=' . $number_of_members . '' ) ) :
  2. while ( bp_members() ) : bp_the_member(); ?>
  3. <a href="<?php bp_member_permalink() ?>" title="<?php bp_member_name(); ?> (<?php bp_member_last_active(); ?>)"><?php bp_member_avatar('width=150&height=150') ?></a>
  4. <?php endwhile;
  5. endif;


Generalnie potrzebuję tego do shortcode gdzie kod musi być umieszczony w return, w innym wypadku shortcode zostanie wyświetlony poza wrapperem.
Tomplus
  1. if ( bp_has_members( 'type=popular&max=' . $number_of_members . '' ) ) :
  2. while ( bp_members() ) : bp_the_member();
  3. $content .= '<a href="'.bp_member_permalink().'" title="'.bp_member_name().' ('.bp_member_last_active().')">'.bp_member_avatar('width=150&height=150').'</a>
  4. endwhile;
  5. return $content;
  6. endif;


Pewnie to coś do wordpress? Powinno to działać. Ale ogólnie jeżeli coś prezentujesz jako echo najpierw, chcesz jako echo w innym miejscu to przypisz do zmiennej.


AboutMe
Tak to wordpress. Dziwna sprawa bo teraz wewnątrz wrappera wyświetla dokładnie to

  1. <a href="" title=" ()"></a>


a poza wrapperem to - http://pastebin.com/jKwDMGG0
Tomplus
Daj poniższe dwie linijki w {} a nie w : i endwhile. Zrób tak jak w byś pisał pętle w PHP

bp_the_member();
$content .= '<a>...';
AboutMe
Dzięki, tylko jak to zrobić z tym dwukropkiem po while?

  1. function popular_bp_members($atts, $content = null) {
  2. extract(shortcode_atts(array(
  3. "number_of_members" => '20'
  4. ), $atts));
  5.  
  6. if ( bp_has_members( 'type=popular&max=' . $number_of_members . '' ) )
  7. while ( bp_members() ) : bp_the_member() {
  8. $content .= '<a href="'.bp_member_permalink().'" title="'.bp_member_name().' ('.bp_member_last_active().')">'.bp_member_avatar('width=150&height=150').'</a>';
  9. return $content;
  10. }
  11. endif; ?>
  12. <div class="clear"></div><?php
  13.  
  14. }
  15.  
  16. add_shortcode("popular-bp-members", "popular_bp_members");
Tomplus
Dwukropek substytut nawiasów

Przykład:
  1. <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>


To samo tylko rozpisane:

  1. <?php
  2. if ( have_posts() ) {
  3. while ( have_posts() ) {
  4. the_post();
  5. }
  6. }
  7. ?>


Więcej na ten temat masz tutaj: https://codex.wordpress.org/The_Loop
AboutMe
Wywala mi błąd Parse error: syntax error, unexpected '{' tutaj while ( bp_members() ) : bp_the_member() {

  1. function popular_bp_members($atts, $content = null) {
  2. extract(shortcode_atts(array(
  3. "number_of_members" => '20'
  4. ), $atts));
  5.  
  6. if ( bp_has_members( 'type=popular&max=' . $number_of_members . '' ) )
  7. while ( bp_members() ) : bp_the_member() {
  8. $content .= '<a href="'.bp_member_permalink().'" title="'.bp_member_name().' ('.bp_member_last_active().')">'.bp_member_avatar('width=150&height=150').'</a>';
  9. return $content;
  10. }
  11. endif; ?>
  12. <div class="clear"></div><?php
  13.  
  14. }
  15.  
  16. add_shortcode("popular-bp-members", "popular_bp_members");
Tomplus
Nie ma co się dziwić.

po ma być:

while ( bp_members() ) {
bp_the_member()


czyli bez dwukropka.
AboutMe
Hmm ciągle nie działa, ten sam błąd

  1. if ( bp_has_members( 'type=popular&max=' . $number_of_members . '' ) )
  2. while ( bp_members() ) {
  3. bp_the_member() {
  4. $content .= '<a href="'.bp_member_permalink().'" title="'.bp_member_name().' ('.bp_member_last_active().')">'.bp_member_avatar('width=150&height=150').'</a>';
  5. return $content;
  6. }
  7. }
  8. endif;
nospor
Gdy pozbywasz sie dwukropkow, to i pozbyc sie masz wszelkich endow. A na dal w kodzie masz
endif;

No i co to jest
bp_the_member() {
?
AboutMe
bp_the_member() to część pętli bez której nic nie wyciągniesz

Taki kod niestety również nie działa Parse error: syntax error, unexpected '{'

  1. function popular_bp_members($atts, $content = null) {
  2. extract(shortcode_atts(array(
  3. "number_of_members" => '20'
  4. ), $atts));
  5.  
  6. if ( bp_has_members( 'type=popular&max=' . $number_of_members . '' ) )
  7. while ( bp_members() ) {
  8. bp_the_member() {
  9. $content .= '<a href="'.bp_member_permalink().'" title="'.bp_member_name().' ('.bp_member_last_active().')">'.bp_member_avatar('width=150&height=150').'</a>';
  10. return $content;
  11. } }
  12. ?>
  13. <div class="clear"></div><?php
  14.  
  15. }
  16.  
  17. add_shortcode("popular-bp-members", "popular_bp_members");
nospor
Cytat
bp_the_member() to część pętli bez której nic nie wyciągniesz

Nie chodzilo mi co robi funkcja bp_the_member() tylko chodzuli mi o bzdurny kod
bp_the_member() {
To jest zle temu masz bledy... widze aluzja nie dotarla tongue.gif

nie
bp_the_member() {

a:
bp_the_member();
I masz usunac } ktory byl dla tego {
AboutMe
Dzięki ale taki kod robi dokładnie do samo jak to http://forum.php.pl/index.php?showtopic=25...p;#entry1207615 z tą różnicą że wyświetla tylko jeden profil. Chyba jednak zrobię to w widgecie zamiast w shortcode.

  1. function popular_bp_members($atts, $content = null) {
  2. extract(shortcode_atts(array(
  3. "number_of_members" => '20'
  4. ), $atts));
  5.  
  6. if ( bp_has_members( 'type=popular&max=' . $number_of_members . '' ) )
  7. while ( bp_members() ) {
  8. bp_the_member();
  9. $content .= '<a href="'.bp_member_permalink().'" title="'.bp_member_name().' ('.bp_member_last_active().')">'.bp_member_avatar('width=150&height=150').'</a>';
  10. return $content;
  11. }
  12. ?>
  13. <div class="clear"></div><?php
  14.  
  15. }
  16.  
  17. add_shortcode("popular-bp-members", "popular_bp_members");
nospor
Nie wiem, nie znam sie na WP. Ja ci jedynie poprawilem PARSE ERRORy wink.gif
Tomplus
Korzystałeś w ogóle z tego manuala dla pętli do Wordpressa co podałem w trzecim moim poście?
W sumie tam logicznie wszystko wytłumaczyli, z przykładami.
AboutMe
Tak, pętla działa ok gdy stworzy się z niej widget ale znalazłem już rozwiązanie, wystarczy na końcu pętli użyć

  1. $myvariable = ob_get_clean();
  2. return $myvariable;


https://code.tutsplus.com/tutorials/create-...eters--wp-32199
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.