我的表单正在做它需要的东西(根据是否存在来添加/删除帖子中的标签)。但是 - 一旦我提交表单页面没有按预期更新,$ buttonTitle不会更新,除非我在另一个选项卡中重新加载页面。如果我尝试刷新,我收到消息'确认表格重新提交',我是一个完整的菜单到PHP表格,但这是我的代码......
<?php
$idTag = $current_user->ID;
$spitOutTag = (string)$idTag;
if (has_tag( $spitOutTag, $post )) {
$buttonTitle = 'REMOVE TAG';
} else {
$buttonTitle = 'ADD TAG';
} ?>
<form name="primaryTagForm" action="<?php echo the_permalink() ?>" id="primaryTagForm" method="POST" enctype="multipart/form-data" >
<fieldset>
<input type="hidden" name="newtags" id="newtags" value="<?php echo $current_user->ID; ?>" />
<?php wp_nonce_field( 'post_nonce', 'post_nonce_field' ); ?>
<button id="btn-join" class="btn btn-lg" type="submit"><?php echo $buttonTitle ?></button>
</fieldset>
</form>
<?php if ( is_user_logged_in() && isset( $_POST['newtags'] ) ) {
if (has_tag( $spitOutTag, $post )) {
// Get all the tags as an array of names
$tags = wp_get_post_tags( get_the_ID(), array('fields' => 'names') );
// Remove the tag from the array
$index = array_search( $idTag, $tags );
unset( $tags[$index] );
// Reset the tags
wp_set_post_tags( get_the_ID(), $tags );
} else {
wp_set_post_tags(get_the_ID(), sanitize_text_field($_POST['newtags']), true );
}
} ?>
答案 0 :(得分:2)
问题是您在检查后分配了标签,这就是为什么按钮没有变化,您需要像这样安排代码:
首先,检查是否已发送某些标签并将其应用于帖子:
<?php if ( is_user_logged_in() && isset( $_POST['newtags'] ) ) {
............
} ?>
然后检查按钮:
if (has_tag( $spitOutTag, $post )) {
$buttonTitle = 'REMOVE TAG';
} else {
$buttonTitle = 'ADD TAG';
} ?>
最后打印HTML:
<form name="primaryTagForm" action="<?php echo the_permalink() ?>"
....
</form>