Как написать функцию шорткода внутри другой функции шорткода

У меня есть собственный шорткод с меткой [form-edit] внутри этой функции, мне нужно выполнить один плагин, например, [Form id="10"]. Ниже приведен мой не рабочий код.

add_shortcode('form-edit', 'form_edit_function');
function form_edit_function(){
    $fid = $_GET['fid'];
    echo do_shortcode('[Form id="'.$fid.'"]');
}

Как сделать это возможным? пожалуйста помоги

2 ответа

Я думаю, что проблема заключается в использовании $_GET внутри функции, поскольку она может быть недоступна при вызове the_content или любой другой функции, которую вы добавляете.

function form_edit_function( $atts , $content = null ) {
// Extra attributes into variables
extract( shortcode_atts(
    array(
        'fid'           => '' // the default value if not passed
    ), $atts )
);

$html = do_shortcode('[Form id="' . $fid . '"]');

// store in variable and return other echo will not 
// put it in the correct place within your content
return $html;

}

// Use in post content or other places as [form-edit fid="1][/form-edit]
add_shortcode( 'form-edit', 'form_edit_function' );

Обычно шорткод отправляет свои выходные данные с помощью оператора RETURN, а не ECHO. Если вы подтвердите его, он будет отправлен за пределы обычного порядка действий запроса Wordpress. Он будет просто вставлен в заголовок вашего вывода, возможно, даже не виден. Кроме того, вы понимаете, что у вас есть два шорткода, "форма-редактирование" и "форма", верно? Оба безумно плохие имена для шорткода. Имена шорткода чувствительны к регистру. Вы уверены, что ваш второй шорткод - "Форма", а не "Форма"?

Другие вопросы по тегам