Tôi đang tạo một cổng thông tin khách hàng là khách hàng của tôi có thể duy trì các dự án của họ và để lại phản hồi trong Wordpress. Tôi có hai loại bài đăng tùy chỉnh được gọi là "Khách hàng" và "Dự án" và mỗi loại đều lấy thông tin từ nhau trong phần phụ trợ. Khi tôi tạo một ứng dụng khách, nó sẽ tự động tạo postID của nó vào menu thả xuống trên loại bài đăng dự án là tôi có thể gán một ứng dụng khách cho một dự án.
Những gì tôi đang cố gắng thực hiện là bằng cách hiển thị tất cả các dự án được liên kết với ứng dụng khách được chọn trên một trang ở mặt trước. Trang đơn sẽ là cổng thông tin khách, được tạo bởi loại bài đăng của khách hàng.
Tôi dường như không thể hiển thị bài viết liên quan. Đây là mã của tôi single.php
sẽ hiển thị các dự án trên cổng khách hàng.
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$loop = new WP_Query( array(
'post_type' => array( 'projects'),
'posts_per_page' => -1,
'paged' => $paged,
'meta_query' => array(
array(
'key' => 'a_client', // name of custom field
'value' => '"' . get_the_ID() . '"',
'compare' => 'LIKE'
)
)
));
?>
Dưới đây là mã tôi đang sử dụng để gán khách hàng cho một dự án trong bảng quản trị dự án. Kịch bản lệnh này hiển thị bất kỳ ứng dụng khách nào tôi đã tạo trong trang khách hàng và hiển thị tên của họ trong menu thả xuống.
add_action( 'add_meta_boxes', 'add_clients_custom_metabox' );
function add_clients_custom_metabox() {
add_meta_box( 'custom-metabox', __( 'Clients' ), 'clients_custom_metabox', 'projects', 'side', 'high' );
}
function clients_custom_metabox($post) {
global $post,$current_user;
//remember the current $post object
$real_post = $post;
//get curent user info (we need the ID)
get_currentuserinfo();
//create nonce
echo '<input type="hidden" name="clients_meta_box_nonce" value="', wp_create_nonce(basename(__FILE__)), '" />';
//get saved meta
$selected = get_post_meta( $post->ID, 'a_clients', true );
//create a query for all of the user clients posts
$clients_query = new WP_Query();
$clients_query->query(array(
'post_type' => 'client_portal',
'posts_per_page' => -1,
'author' => $current_user->ID));
if ($clients_query->have_posts()){
echo '<select name="a_clients" id="a_clients">';
//loop over all post and add them to the select dropdown
echo '<option>Assign a client</option>';
while ($clients_query->have_posts()){
$clients_query->the_post();
echo '<option value="'.$post->ID.'" ';
if ( $post->ID == $selected){
echo 'selected="selected"';
}
echo '>'.$post->post_title .'</option>';
}
echo '<select>';
}
//reset the query and the $post to its real value
wp_reset_query();
$post = $real_post;
}
//hook to save the post meta
add_action( 'save_post', 'save_clients_custom_metabox' );
// Process the custom metabox fields
function save_clients_custom_metabox( $post_id ) {
global $post;
// verify nonce
if (!wp_verify_nonce($_POST['clients_meta_box_nonce'], basename(__FILE__))) {
return $post_id;
}
// check autosave
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
return $post_id;
}
// check permissions
if ('events' == $_POST['post_type']) {
if (!current_user_can('edit_page', $post_id)) {
return $post_id;
}
} elseif (!current_user_can('edit_post', $post_id)) {
return $post_id;
}
if( $_POST ) {
$old = get_post_meta($post_id, 'a_clients', true);
$new = $_POST['a_clients'];
if ($new && $new != $old){
update_post_meta($post_id, 'a_clients', $new);
}
}
}
Mã đầy đủ cho single.php http://pastebin.com/na7djwsq
Đăng ký Loại bài đăng Tôi đang sử dụng Loại bài đăng dự án được gọi => dự án Loại bài đăng của khách hàng được gọi => client_portal
client
should be a_client
and @bigant841 is saving the meta as an array, so it looks like this: [a_clients] => Array ([0] => 91)
projects
? Not project
?
paged
set to$client_ID
? you're also settingposts_per_page
to return all posts.