如何将功能 Wordpress 插件放入简码(一个用户头像)
How to put function Wordpress plugin Into Shortcode (One User Avatar)
我想弄清楚是否可以将这段代码插入 functions.php
中的 wordpress 短代码
<p id="<?php echo esc_attr( ( 'add-new-user' == $user ) ? 'wpua-upload-button' : 'wpua-upload-button-existing' ); ?>">
<input name="wpua-file" id="<?php echo esc_attr( ( 'add-new-user' == $user ) ? 'wpua-file' : 'wpua-file-existing' ); ?>" type="file" />
<button type="submit" class="button" id="<?php echo esc_attr( ( 'add-new-user' == $user ) ? 'wpua-upload' : 'wpua-upload-existing' ); ?>" name="submit" value="<?php esc_html_e( 'Upload', 'one-user-avatar' ); ?>">
<?php esc_html_e( 'Upload', 'one-user-avatar' ); ?>
</button>
</p>
这段代码是插件的一部分,这是文件:https://github.com/onedesigns/one-user-avatar/blob/main/includes/class-wp-user-avatar.php#L253
能不能有好心人帮我看看怎么走?对不起,我是代码新手,我没有太多的技能,我是一个粉丝。
编辑:我按照评论中给我的用户的建议,以这种方式修改了代码。按钮显示正确,但如果我选择图像并单击加载,则不会执行保存。
//CUSTOM SHORTCODE
function short_shortcode() {
//Global
global $current_user;
$user = $current_user;
ob_start();
?>
<form>
<p id="<?php echo esc_attr(('add-new-user' == $user) ? 'wpua-upload-button' : 'wpua-upload-button-existing'); ?>">
<input name="wpua-file" id="<?php echo esc_attr(('add-new-user' == $user) ? 'wpua-file' : 'wpua-file-existing'); ?>" type="file" />
<button type="submit" class="button" id="<?php echo esc_attr(('add-new-user' == $user) ? 'wpua-upload' : 'wpua-upload-existing'); ?>" name="submit" value="<?php esc_html_e('Upload', 'one-user-avatar'); ?>">
<?php esc_html_e('Upload', 'one-user-avatar'); ?>
</button>
</p>
</form>
<?php
return ob_get_clean();
}
add_shortcode('short', 'short_shortcode');
您需要捕获并 return 输出。以下是如何做到这一点:
<?php
function short_shortcode() {
ob_start();
?>
<p id="<?php echo esc_attr(('add-new-user' == $user) ? 'wpua-upload-button' : 'wpua-upload-button-existing'); ?>">
<input name="wpua-file" id="<?php echo esc_attr(('add-new-user' == $user) ? 'wpua-file' : 'wpua-file-existing'); ?>" type="file" />
<button type="submit" class="button" id="<?php echo esc_attr(('add-new-user' == $user) ? 'wpua-upload' : 'wpua-upload-existing'); ?>" name="submit" value="<?php esc_html_e('Upload', 'one-user-avatar'); ?>">
<?php esc_html_e('Upload', 'one-user-avatar'); ?>
</button>
</p>
<?php
return ob_get_clean();
}
add_shortcode('short', 'short_shortcode');
我找到了解决问题的办法。对于任何对此感兴趣的人,它在下面。我所做的是按照插件作者的建议,向从 https://github.com/onedesigns/one-user-avatar/blob/main/includes/class-wp-user-avatar-shortcode.php 中找到的 global 添加一些变量。 (有些可能不需要,但我已经包含了它们,因为我将在未来扩展短代码功能)。
之后,我引入了以下函数:do_action( 'wpua_update', $valid_user->ID );
(总是取自我上面链接的文件)。
最后我添加了我对表单标签和 ob_start ();
- return ob_get_clean();
感兴趣的代码
此外,在插件获取的 html 代码中,有必要为表单添加几行 php 以保存所有内容。
<? php wp_nonce_field ('update-user_'. $ user-> ID); ?>
<? php submit_button (__ ('Update Profile', 'one-user-avatar')); ?>
这是最终的工作代码
//SHORTCODE UPLOAD BUTTON ONE-USER-AVATAR
function short_shortcode() {
//Global
global $wpua_force_file_uploader,
$show_avatars,
$wpua_shortcode,
$wp_user_avatar,
$all_sizes,
$blog_id,
$post,
$wpdb,
$current_user,
$wp_user_avatar,
$wpua_allow_upload,
$wpua_edit_avatar,
$wpua_functions;
//Default user is current user
$user = $current_user;
//Function
do_action( 'wpua_update', $user->ID );
ob_start();
?>
<form id="wpua-edit-<?php echo esc_attr( $user->ID ); ?>" class="wpua-edit" action="" method="post" enctype="multipart/form-data">
<p id="<?php echo esc_attr(('add-new-user' == $user) ? 'wpua-upload-button' : 'wpua-upload-button-existing'); ?>">
<input name="wpua-file" id="<?php echo esc_attr(('add-new-user' == $user) ? 'wpua-file' : 'wpua-file-existing'); ?>" type="file" />
<button type="submit" class="button" id="<?php echo esc_attr(('add-new-user' == $user) ? 'wpua-upload' : 'wpua-upload-existing'); ?>" name="submit" value="<?php esc_html_e('Upload', 'one-user-avatar'); ?>">
<?php esc_html_e('Upload', 'one-user-avatar'); ?></button>
</p>
<?php wp_nonce_field( 'update-user_' . $user->ID ); ?>
<?php submit_button( __( 'Update Profile', 'one-user-avatar' ) ); ?>
</form>
<?php
return ob_get_clean();
}
add_shortcode('short', 'short_shortcode');
我想弄清楚是否可以将这段代码插入 functions.php
中的 wordpress 短代码<p id="<?php echo esc_attr( ( 'add-new-user' == $user ) ? 'wpua-upload-button' : 'wpua-upload-button-existing' ); ?>">
<input name="wpua-file" id="<?php echo esc_attr( ( 'add-new-user' == $user ) ? 'wpua-file' : 'wpua-file-existing' ); ?>" type="file" />
<button type="submit" class="button" id="<?php echo esc_attr( ( 'add-new-user' == $user ) ? 'wpua-upload' : 'wpua-upload-existing' ); ?>" name="submit" value="<?php esc_html_e( 'Upload', 'one-user-avatar' ); ?>">
<?php esc_html_e( 'Upload', 'one-user-avatar' ); ?>
</button>
</p>
这段代码是插件的一部分,这是文件:https://github.com/onedesigns/one-user-avatar/blob/main/includes/class-wp-user-avatar.php#L253
能不能有好心人帮我看看怎么走?对不起,我是代码新手,我没有太多的技能,我是一个粉丝。
编辑:我按照评论中给我的用户的建议,以这种方式修改了代码。按钮显示正确,但如果我选择图像并单击加载,则不会执行保存。
//CUSTOM SHORTCODE
function short_shortcode() {
//Global
global $current_user;
$user = $current_user;
ob_start();
?>
<form>
<p id="<?php echo esc_attr(('add-new-user' == $user) ? 'wpua-upload-button' : 'wpua-upload-button-existing'); ?>">
<input name="wpua-file" id="<?php echo esc_attr(('add-new-user' == $user) ? 'wpua-file' : 'wpua-file-existing'); ?>" type="file" />
<button type="submit" class="button" id="<?php echo esc_attr(('add-new-user' == $user) ? 'wpua-upload' : 'wpua-upload-existing'); ?>" name="submit" value="<?php esc_html_e('Upload', 'one-user-avatar'); ?>">
<?php esc_html_e('Upload', 'one-user-avatar'); ?>
</button>
</p>
</form>
<?php
return ob_get_clean();
}
add_shortcode('short', 'short_shortcode');
您需要捕获并 return 输出。以下是如何做到这一点:
<?php
function short_shortcode() {
ob_start();
?>
<p id="<?php echo esc_attr(('add-new-user' == $user) ? 'wpua-upload-button' : 'wpua-upload-button-existing'); ?>">
<input name="wpua-file" id="<?php echo esc_attr(('add-new-user' == $user) ? 'wpua-file' : 'wpua-file-existing'); ?>" type="file" />
<button type="submit" class="button" id="<?php echo esc_attr(('add-new-user' == $user) ? 'wpua-upload' : 'wpua-upload-existing'); ?>" name="submit" value="<?php esc_html_e('Upload', 'one-user-avatar'); ?>">
<?php esc_html_e('Upload', 'one-user-avatar'); ?>
</button>
</p>
<?php
return ob_get_clean();
}
add_shortcode('short', 'short_shortcode');
我找到了解决问题的办法。对于任何对此感兴趣的人,它在下面。我所做的是按照插件作者的建议,向从 https://github.com/onedesigns/one-user-avatar/blob/main/includes/class-wp-user-avatar-shortcode.php 中找到的 global 添加一些变量。 (有些可能不需要,但我已经包含了它们,因为我将在未来扩展短代码功能)。
之后,我引入了以下函数:do_action( 'wpua_update', $valid_user->ID );
(总是取自我上面链接的文件)。
最后我添加了我对表单标签和 ob_start ();
- return ob_get_clean();
此外,在插件获取的 html 代码中,有必要为表单添加几行 php 以保存所有内容。
<? php wp_nonce_field ('update-user_'. $ user-> ID); ?>
<? php submit_button (__ ('Update Profile', 'one-user-avatar')); ?>
这是最终的工作代码
//SHORTCODE UPLOAD BUTTON ONE-USER-AVATAR
function short_shortcode() {
//Global
global $wpua_force_file_uploader,
$show_avatars,
$wpua_shortcode,
$wp_user_avatar,
$all_sizes,
$blog_id,
$post,
$wpdb,
$current_user,
$wp_user_avatar,
$wpua_allow_upload,
$wpua_edit_avatar,
$wpua_functions;
//Default user is current user
$user = $current_user;
//Function
do_action( 'wpua_update', $user->ID );
ob_start();
?>
<form id="wpua-edit-<?php echo esc_attr( $user->ID ); ?>" class="wpua-edit" action="" method="post" enctype="multipart/form-data">
<p id="<?php echo esc_attr(('add-new-user' == $user) ? 'wpua-upload-button' : 'wpua-upload-button-existing'); ?>">
<input name="wpua-file" id="<?php echo esc_attr(('add-new-user' == $user) ? 'wpua-file' : 'wpua-file-existing'); ?>" type="file" />
<button type="submit" class="button" id="<?php echo esc_attr(('add-new-user' == $user) ? 'wpua-upload' : 'wpua-upload-existing'); ?>" name="submit" value="<?php esc_html_e('Upload', 'one-user-avatar'); ?>">
<?php esc_html_e('Upload', 'one-user-avatar'); ?></button>
</p>
<?php wp_nonce_field( 'update-user_' . $user->ID ); ?>
<?php submit_button( __( 'Update Profile', 'one-user-avatar' ) ); ?>
</form>
<?php
return ob_get_clean();
}
add_shortcode('short', 'short_shortcode');