php (WP)将文章标题保存为可以过滤的Meta(复选框,下拉列表)

yduiuuwa  于 2023-09-29  发布在  PHP
关注(0)|答案(1)|浏览(120)

用蹩脚的英语问个简单的蠢问题。我需要保存/更新后的标题作为元字段的方式可以过滤(由Jetsmatrfilter或其他过滤器)
我有一些自定义后,包含文本,文本区,复选框和电台内置JetEngine(但与ACF兼容)。
现在,我正试图建立一些视觉过滤器为这个自定义职位。问题是过滤器(下拉)只适用于通过复选框,单选框或选择字段添加的值。
我已经添加了一个脚本,保存后标题作为后Meta但它是一个文本字段,所以过滤器不工作。

function wpse_275785_save_title_as_meta( $post_id, $post, $update ) {
    update_post_meta( $post_id, 'post_title', $post->post_title );
}
add_action( 'save_post', 'wpse_275785_save_title_as_meta', 99, 3 );

有没有一种方法可以自动保存文章标题为选中单选框或复选框?如果我也更新帖子的话,这是一种有效的方法。
是否有其他方法将文章标题保存为可过滤字段?

wlwcrazw

wlwcrazw1#

问题在于数据类型:文本字段通常不能以与复选框、单选框或选择字段相同的方式进行过滤。
下面是一个PHP函数,它将文章标题保存在序列化数组中,模仿复选框的行为:

function wpse_275785_save_title_as_meta( $post_id, $post, $update ) {
    // Mimic checkbox data structure
    $checkbox_data = array(
        '0' => $post->post_title
    );
    
    // Serialize the array for storage
    $serialized_data = maybe_serialize($checkbox_data);
    
    // Update the post meta
    update_post_meta( $post_id, 'post_title_checkbox', $serialized_data );
}

add_action( 'save_post', 'wpse_275785_save_title_as_meta', 99, 3 );

post_title_checkbox更改为您计划使用的实际Meta键,并确保配置过滤器以指向此新元键。
要解决这个问题,您应该调整PHP函数,以模拟JetEngine或ACF期望复选框或单选按钮的数据结构。给定提供的示例(benefit array),预期的格式似乎是具有键值对的嵌套数组。

function wpse_275785_save_title_as_meta( $post_id, $post, $update ) {
    // Mimic checkbox data structure used by JetEngine or ACF
    $checkbox_data = array(
        array(
            'field1' => $post->post_title
        )
    );
    
    // Update the post meta
    update_post_meta( $post_id, 'post_title_checkbox', $checkbox_data );
}

add_action( 'save_post', 'wpse_275785_save_title_as_meta', 99, 3 );

field1替换为您计划使用的Meta密钥,并将过滤器配置为指向此密钥post_title_checkbox

相关问题