如果我理解得很好,那么您希望在每个帖子中附加一个从另一篇帖子中获取的元值,但后者需要是动态的,因此不能在函数中硬编码。
在OP中,您说帖子id是“用户定义的”。这到底是什么意思?如果它存储在某处或作为查询变量提供,最简单的解决方案是将检索所选帖子id的代码移动到函数中:
function get_my_content( $content ) {
// assuming post id is saved as option
$my_post_id = get_option( \'selected_post\' );
$my_post = get_post( $my_post_id );
$my_content = get_post_meta( $my_content->ID, \'wp_c_field\', true );
return $content . $my_content;
}
add_filter( \'the_content\', \'get_my_content\' );
或
function get_my_content( $content ) {
// assuming post id is passed as query var: example.com?thepost=xxx
$my_post_id = filter_input( INPUT_GET, \'thepost\', FILTER_SANITIZE_NUMBER_INT );
$my_post = get_post( $my_post_id );
$my_content = get_post_meta( $my_content->ID, \'wp_c_field\', true );
return $content . $my_content;
}
add_filter( \'the_content\', \'get_my_content\' );
用户可以通过不同的方式选择帖子id,但不知道您是如何选择帖子的。我不能更具体地说,但请考虑将帖子id的检索移到回调中的一般建议。
如果出于任何原因,您无法编辑回调以在其中移动post id检索,但您已将所选id保存在变量中,则可以使用PHP 5.3+closure and use
statement:
// your original function
function get_my_content( $id ) {
$my_content = get_post( $id );
return get_post_meta( $my_content->ID, \'wp_c_field\', true );
}
$selected_id = 1817; // user-selected id, stored in a variable
add_filter( \'the_content\', function( $content ) use( $selected_id ) {
return $content . get_my_content( $selected_id );
} );