簡體   English   中英

如果 PHP 為空,如何向 Wordpress 用戶元字段添加值,如果不為空,如何向數組添加 append?

[英]How do I add a value to a Wordpress user meta field in PHP if it's empty or append to the array if it is not empty?

我目前正在嘗試向 Wordpress 用戶的元字段添加一個值,如果該字段沒有值,我想添加它,如果它已經有一個值,我想將它 append 到一個數組然后更新場。 我正在使用 AJAX 調用來觸發我的 php function。AJAX 調用正常工作,但我的 php function 中的某些內容無法正常工作。

我到目前為止是這樣的:

`
function lesson_watched() {
$lastValue_php = wp_unslash( $_POST['lesson_value'] );
$current_user_id = get_current_user_id();

$found = get_user_meta( $current_user_id, 'lessons_watched_ids', true );

if( empty( $found ) ) :  
update_user_meta( $current_user_id, 'lessons_watched_ids', array( $lastValue_php ) );
else :
$lessons_completed = array_merge(
get_user_meta( $current_user_id, 'lessons_watched_ids', true),
array(
$lastValue_php
)
);
update_user_meta( $current_user_id, 'lessons_watched_ids', $lessons_completed );
endif;

wp_die(); // Ends all AJAX handlers
}
`

我首先調用通過 AJAX 調用傳遞的值,然后定義當前用戶的 id 值。 之后,我創建$found以確定該用戶是否存在元字段。 如果沒有,那么我將其轉換為數組,然后將其傳遞給update_user_meta() 如果確實存在,我嘗試使用array_merge()將現有數組與最新值合並。 之后,我更新了用戶元字段。

我使用print_r()在我的頁面上打印了該用戶字段,這是我觀看兩個不同視頻后顯示的內容:

Array([0]=>Array([0]=>127[1]=>124))

這些數字是觀看視頻時的課程 ID,因此它正確地拉動了這兩個,但它似乎試圖將它嵌套在另一個數組中。

關於如何移除外部陣列,您有什么建議嗎? 另外,有沒有辦法只向數組添加一次課程 ID,如果它已經存在則阻止添加它?

謝謝你,伊恩

問題似乎出在第 21 行的array_mergearray_merge用於將多個 arrays 合並在一起,但在這種情況下,get_user_meta function 似乎正在返回一個數組,而您正試圖將該數組與一個新數組合並只包含新值的數組。 這導致新值嵌套在另一個數組中。

將第 21 行替換為以下內容並嘗試:

$lessons_completed = get_user_meta( $current_user_id, 'lessons_watched_ids', true);
$lessons_completed[] = $lastValue_php;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM