Вернуть результат цикла for с итерацией - PullRequest
0 голосов
/ 27 апреля 2019

Ну, я перестал пытаться получить поле из огромных форм в текущем представлении «все», в этом случае у меня было поле (содержащее SCALE01, SCALE02 и т. Д.), Которое бы справилось, но у меня нет пользователя в форме, чтобы зацепить его. И я в конце концов сдался.

Итак, здесь у меня есть кое-что, что работает, эхо выплевывает ответ по четыре раза каждый (есть четыре записи из показа fomiddable) примерно так:

<a href="file1">file1<a>
<a href="file2">file2<a>
<a href="file3">file3<a>
<a href="file4">file4<a>

(повторяется 4 раза)

Ссылки на файлы верны!

Мне нужно превратить это эхо в возвращение, поэтому, когда я помещаю шорткод из функции WordPress, возвращаемое значение дает мне первое, затем второе, затем третье и т. Д. В нужном месте, а не в верхней части страницы. И не четыре раза, а только один раз:)

function scale_verification_certificate_func($atts) {
    $current_user = wp_get_current_user();
    $ffield = FrmProEntriesController::get_field_value_shortcode(array(
            'field_id' => 140, 
            'user_id' => 'current'));

    for ($i = 1; $i <= 10; $i++) {        
        foreach (glob("./clients/Sites/" . $ffield . "/SCALE0". $i . "/*SCALE_VERIFICATION_CERTIFICATE*", GLOB_NOSORT) as $filename) {
            echo "<a href='./.$filename.'>.$filename<img src='../document.png' /></a> <br>";
        }
    }
}
add_shortcode( 'scale-verification-certificate', 'scale_verification_certificate_func' );

Буду признателен за любую помощь, извините, если я не очень хорошо написал свой вопрос, это мой первый вопрос:)

РЕДАКТИРОВАТЬ: я понимаю, почему это повторяется 4 раза, потому что это четыре папки, которые начинаются с этого имени, но независимо от того, я все равно буду признателен за помощь в остальных!

1 Ответ

0 голосов
/ 27 апреля 2019

Поскольку вы выяснили проблему 4x, для того, чтобы функция возвращала строку, вы могли просто накапливать результаты в каждом цикле и возвращать строку в конце. Вот так:

function scale_verification_certificate_func($atts) {
    $current_user = wp_get_current_user();
    $ffield = FrmProEntriesController::get_field_value_shortcode(array(
            'field_id' => 140,
            'user_id' => 'current'));

    $ret_string = "";  // initialize empty string
    for ($i = 1; $i <= 10; $i++) {
        foreach (glob("./clients/Sites/" . $ffield . "/SCALE0". $i . "/*SCALE_VERIFICATION_CERTIFICATE*", GLOB_NOSORT) as $filename) {
            // at each loop, append new segment
            $ret_string .= "<a href='./.$filename.'>.$filename<img src='../document.png' /></a> <br>";
        }
    }
    return $ret_string;  // now return the full string
}
...