将用户链接到自定义帖子类型

时间:2016-06-02 作者:hyp0thetical

我想将用户链接到自定义帖子类型(学院)。有人知道这样做的好方法吗?

最终目标是显示链接以查看和编辑他们的学院

我一直在使用高级自定义字段,但似乎没有一个关系字段支持链接用户

2 个回复
SO网友:kcbluewave890

如果您试图在用户配置文件区域链接帖子,下面的代码可能是一个很好的起点。你可以把它放在你的函数中。php文件。第一个函数在用户配置文件部分显示一个选择标记,其中包含自定义帖子类型中的所有帖子。选项值是帖子id,标题是帖子名称。下一个功能保存用户配置文件信息,添加或更新用户元字段(在本例中,我使用了“userphotos”,它将存储帖子的ID。当您想在网站上的任何位置显示用户的帖子时,可以使用WP\\u user\\u查询,并显示用户的元数据。如果您希望包含多篇帖子,请选中复选框或在select标记中使用multiple属性,并将帖子存储为元字段中的数组。下面的代码未经测试,也不太符合要求。)了解您希望用户配置文件部分的功能,如果这不是您想要的,请道歉。

<?php
function add_extra_user_fields( $user ) {
    $userid = get_user_meta($user->ID);
    $args = array(
     \'post_type\' => \'your_post_type\',
     \'posts_per_page\' => -1,
    );
    $query = new WP_Query($args);
    ?>
    <select name="testprofile">Select a Post</p>
    <?php if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post(); ?>
        <option value="<?php the_ID(); ?>" 
        if (get_user_meta( $userid, userphotos, true) == $userid ){ 
            echo \'selected\'; 
        }?>>
        <?php the_title(); ?>
        </option>
    <?php endwhile; endif; ?>
    </select>
    <?php
}

add_action( \'show_user_profile\', \'add_extra_user_fields\' );
add_action( \'edit_user_profile\', \'add_extra_user_fields\' );

function save_extra_user_fields( $user_id ) {
    update_user_meta( $user_id, \'userphotos\', sanitize_text_field( $_POST[\'testprofile\'] ) );
}

add_action( \'personal_options_update\', \'save_extra_user_fields\' );
add_action( \'edit_user_profile_update\', \'save_extra_user_fields\' );

SO网友:Milan Švehla

没有足够的声誉发表评论,因此:

多亏了kcbluewave890,我找到了一个解决方案,但仍有一些问题需要解决。这是我的函数工作代码。php文件:

function add_extra_user_fields( $user ) {
$args = array(
    \'post_type\' => \'YOUR_POST_TYPE\',
    \'posts_per_page\' => -1,
);
$query = new WP_Query($args);
?>
<h3>Select Your College</h3>
<select name="college">
    <?php if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post(); ?>
        <option value="<?php the_ID(); ?>"
               <? if (get_user_meta( $user->ID, "college", true) == get_the_ID() ) echo \'selected\'; ?>>
    <?php the_title(); ?>
    </option>
<?php endwhile; endif; ?>
</select>
<?php
}

add_action( \'show_user_profile\', \'add_extra_user_fields\' );
add_action( \'edit_user_profile\', \'add_extra_user_fields\' );

function save_extra_user_fields( $user_id ) {
update_user_meta( $user_id, \'college\', sanitize_text_field( $_POST[\'college\'] ) );
}

add_action( \'personal_options_update\', \'save_extra_user_fields\' );
add_action( \'edit_user_profile_update\', \'save_extra_user_fields\' );

相关推荐

显示作者姓名PHP(自制插件)

我有一个需要帮助的问题,因为我自己找不到解决办法。我接管了一个网站,之前有人在那里创建了一个自制插件。。使用默认插件“Contact Form 7”,用户可以在页面上创建帖子。()https://gyazo.com/c8b20adecacd90fb9bfe72ad2138a980 )关于自行创建的插件“Contact Form 7 extender”,帖子是通过PHP代码在后台生成的(https://gyazo.com/115a6c7c9afafd2970b66fd421ca76a3)其工作原理如下:如果