自定义作者字段+现有分类--将两者动态集成?

时间:2012-09-20 作者:Caroline

我正在尝试集成现有自定义分类法和自定义作者配置文件字段中的值。我希望这些值用作作者在更新/填写个人资料时可以选择的选项。

下面的工作-种类。(位于functions.php文件中)

它会保存到数据库(users表),但“checked”收音机不会保存。它也无法在配置文件部分中正确打印,如下所示(在单选按钮之前)checked="checked" />

。。。这是完整的代码

<tr>
<th><label for="sorority"><?php _e(\'What sorority are you in?\'); ?></label></th>
    <td>
        <?php $sorority = get_the_author_meta( \'sorority\', $user->ID ); ?>
        <?php
             $terms = get_terms("sorority");
             $count = count($terms);
             echo \'<ul>\';
                    foreach ( $terms as $term ) {   
                        echo \'<li><input type="radio" value="\' . esc_attr( $term->name ) . \'" name="sorority" <?php if ($sorority == "\' . esc_attr( $term->name ) . \'") { ?>checked="checked"<?php }?> />\'.$term->name.\'</li>\';
             }
             echo "</ul>";
            ?>
    </td>
</tr>
有什么想法吗?我认为问题在于这一行:

 <?php if ($sorority == "\' . esc_attr( $term->name ) . \'") { ?>checked="checked"<?php }?> 

2 个回复
最合适的回答,由SO网友:Caroline 整理而成

我想,对于任何需要帮助的人,我相信你也可以使用类别/标签(也可以使用无线电输入和checked=“checked”:

<tr>
 <th><label for="sorority"><?php _e(\'Sorority is...\') ?></label></th>
  <td><?php $sorority = get_the_author_meta( \'sorority\', $user->ID ); ?>
    <select name="sorority" id="sorority">
    <?php $terms = get_terms(\'sorority\'); foreach ( $terms as $term ) { ?>
    <option name="sorority" value="<?php echo $term->name; ?>" <?php if ( $sorority == $term->name ) {?> selected="selected" <?php }?>><?php echo $term->name; ?></option>
    <?php } ?>
    </select>
 </td> 
</tr>

SO网友:Caroline

马马杜卡,

感谢您的回复。不,这不是一件事后保存的事情——这会创建额外的用户配置文件字段(http ~/wp admin/user edit.php),其值也是自定义分类法的“后代”。

例如,分类法=冰淇淋,后代/儿童/分类法=巧克力,香草。我想让巧克力和香草成为作家在个人资料中被问及“你最喜欢什么口味的冰淇淋”时可以选择的选项

请参阅我的函数中的代码。下面的php文件。这会吐出正确的数据,但当输出到屏幕时,它会被“破坏”(如单选按钮前所示:checked="checked" />Chi Omega)

此外,选中并保存单选按钮时不会另存为选中,但它会将正确选择的值存储到用户表数据库中。

非常感谢您的帮助。

add_action ( \'show_user_profile\', \'my_show_extra_profile_fields\' );
add_action ( \'edit_user_profile\', \'my_show_extra_profile_fields\' );
function my_show_extra_profile_fields ( $user ) 
{
?>
<h3>Additional Information</h3>
<table class="form-table">

<tr>
        <th><label for="sorority"><?php _e(\'What is your sorority?\'); ?></label></th>
        <td>
        <?php $sorority = get_the_author_meta( \'sorority\', $user->ID ); ?>
        <?php
             $terms = get_terms("sorority");
             $count = count($terms);
             echo \'<ul>\';
                    foreach ( $terms as $term ) {   
                        echo \'<li><input type="radio" value="\' . esc_attr( $term->name ) . \'" name="sorority" <?php if ($sorority == "\' . esc_attr( $term->name ) . \'") { ?>checked="checked"<?php }?> />\'.$term->name.\'</li>\';
             }
             echo "</ul>";
            ?>
</td>           
</tr>

</table>
<?php }   
add_action ( \'personal_options_update\', \'my_save_extra_profile_fields\' ); 
add_action ( \'edit_user_profile_update\', \'my_save_extra_profile_fields\' );

function my_save_extra_profile_fields( $user_id )
{ if ( !current_user_can( \'edit_user\', $user_id ) )
    return false;
update_usermeta( $user_id, \'sorority\', $_POST[\'sorority\'] );
}

结束

相关推荐

Get author's first name

我可能有点傻,但谁能给我指出正确的方向呢。我试图简单地将作者的名字显示为循环中的链接。但似乎没有任何选择get_author 标签这就是我目前得到的。Posted by <a href=\"<?php echo esc_url( get_author_posts_url( get_the_author_meta( \'ID\' ) ) ); ?>\" rel=\"author\"><?php printf( __( \'%s\' ), get_the_author() );