我正在开发我的第一个WP插件,我被卡住了。
我在内容编辑器下面的帖子页面上创建了一个定制字段(字段1)。它保存正确。:)
添加媒体时,我在媒体库弹出窗口中创建了一个自定义字段(字段2)。它保存正确。:)
我想做的是使用字段1中的值作为字段2的默认值。
我怀疑问题出在attachment_fields_to_edit回调函数中。
我认为$post现在指的是实际的“文件附件帖子”,而不是帖子本身,所以当我引用我保存的值时:
$post_meta = get_post_meta( $post->ID );
它实际上是提取与该附件相关联的所有元,而不是当前帖子。有可能从实际帖子中提取meta吗?
这段代码来自于法典:
function my_add_attachment_location_field( $form_fields, $post ) {
$field_value = get_post_meta( $post->ID, 'location', true );
$form_fields['location'] = array(
'value' => $field_value ? $field_value : '',
'label' => __( 'Location' ),
'helps' => __( 'Set a location for this attachment' )
);
return $form_fields;
}
add_filter( 'attachment_fields_to_edit', 'my_add_attachment_location_field', 10, 2 );
function my_save_attachment_location( $attachment_id ) {
if ( isset( $_REQUEST['attachments'][$attachment_id]['location'] ) ) {
$location = $_REQUEST['attachments'][$attachment_id]['location'];
update_post_meta( $attachment_id, 'location', $location );
}
}
add_action( 'edit_attachment', 'my_save_attachment_location' );
我如何获得当前帖子的_post_meta,我们正在将附件插入到这个帖子中?这需要在上面codex代码中的my _ add _ attachment _ location _ field回调函数中发生。
谢谢
好吧,试试另一种方式...您将无法在导航器中轻松获取帖子ID。我不确定位置是什么,但如果你想将图像保存为post meta,我使用这个............
步骤:
1.create一个新的js文件访问http://jsfiddle.net/dheffernan/BB37U/2/并将那里的js复制到js文件中。调用它miu_script.js或者如果你想更改它,你需要对下面的代码做一些mod。将它保存在你的插件文件夹中(如果你想将它移动到子文件夹,请在下面更改路径。
>
在下面的代码中输入您的函数-它会将图像位置保存为序列化的url,并在名为“_images”的字段中再次更改,如果您需要修改代码。
下面可能有错误,我有Oophtml" target="_blank">格式的,所以如果有问题请告诉我。如果有,请注意php错误,如果没有php错误但它不工作,请检查chrome或firefox中的控制台。我可以调试。
在函数中,php
function add_image_meta_box() {
add_meta_box(
'multi_image_upload_meta_box'
, __('Upload Multiple Images', 'miu_textdomain')
, 'render_meta_box_content'
, $post_type
, 'advanced'
, 'high'
);
}
add_action( 'add_meta_boxes', 'add_image_meta_box' );
function render_meta_box_content($post) {
wp_nonce_field('miu_inner_custom_box', 'miu_inner_custom_box_nonce');
$value = get_post_meta($post->ID, '_images', true); // <-- change field if wanted, there is 1 more below that will need the same name
$metabox_content = '<div id="miu_images"></div><input type="button" onClick="addRow()" value="Add Image" class="button" />';
echo $metabox_content;
$images = unserialize($value); //<--- when using the images use this!!
$script = "<script>
itemsCount= 0;";
if (!empty($images))
{
foreach ($images as $image)
{
$script.="addRow('{$image}');";
}
}
$script .="</script>";
echo $script;
}
function save_image($post_id){
if (!isset($_POST['miu_inner_custom_box_nonce']))
return $post_id;
$nonce = $_POST['miu_inner_custom_box_nonce'];
if (!wp_verify_nonce($nonce, 'miu_inner_custom_box'))
return $post_id;
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
return $post_id;
if ('page' == $_POST['post_type']) {
if (!current_user_can('edit_page', $post_id))
return $post_id;
} else {
if (!current_user_can('edit_post', $post_id))
return $post_id;
}
$posted_images = $_POST['miu_images'];
$miu_images = array();
foreach ($posted_images as $image_url) {
if(!empty ($image_url))
$miu_images[] = esc_url_raw($image_url);
}
update_post_meta($post_id, '_images', serialize($miu_images));<--if you changed this above.......make sure they match
}
add_action( 'save_post', 'save_image' );
function enqueue_scripts($hook){
if ('post.php' != $hook && 'post-edit.php' != $hook && 'post-new.php' != $hook)
return;
wp_enqueue_script('miu_script', plugin_dir_url(__FILE__) . 'miu_script.js', array('jquery')); //<--this is the path!!! change if wanted (prob a good idea to add to js folder)
}
add_action('admin_enqueue_scripts', 'enqueue_scripts');
您可以尝试以下操作:
/**
* Display custom 'location' attachment field
*/
function so_22850878_attachment_fields_to_edit( $form_fields, $post )
{
$field_value = get_post_meta( $post->post_parent, 'location', true );
$form_fields['location'] = array(
'value' => $field_value ? $field_value : '',
'label' => __( 'Location' ),
'helps' => __( 'Set a location for this attachment' )
);
return $form_fields;
}
add_filter( 'attachment_fields_to_edit',
'so_22850878_attachment_fields_to_edit', 10, 2 );
和
/**
* Edit attachment fields
*/
function so_22850878_edit_attachment( $attachment_id )
{
$p = get_post( $attachment_id );
if ( isset( $_REQUEST['attachments'][$attachment_id]['location'] ) )
{
$location = $_REQUEST['attachments'][$attachment_id]['location'];
// Save the value of the 'location' attachment field
// to the 'location' post meta of the post parent if it exists:
if( ! is_null( $p )
&& 0 < $p->post_parent
)
update_post_meta( $p->post_parent,
'location',
sanitize_text_field( $location )
);
}
}
add_action( 'edit_attachment', 'so_22850878_edit_attachment' );
以从媒体弹出窗口更新父帖子的位置
帖子元值。
如果您直接从媒体库页面编辑附件,您可能也想检查一下:
/**
* Save attachment fields
*/
function so_22850878_attachment_fields_to_save( $post, $attachment )
{
$p = get_post( $post['ID'] );
// Save the value of the 'location' attachment field
// to the 'location' post meta of the post parent if it exists:
if( isset( $attachment['location'] )
&& ! is_null( $p )
&& 0 < $p->post_parent
)
update_post_meta( $p->post_parent,
'location',
sanitize_text_field( $attachment['location'] )
);
return $post;
}
add_action( 'attachment_fields_to_save',
'so_22850878_attachment_fields_to_save', 10, 2 );
我不确定你的想法是什么样的工作流程,但我认为你的想法有问题,据我所知:
当您更新媒体弹出窗口中的位置
字段时,看起来您想要更新父帖子的位置
帖子元值。但是,由于当您将图像插入帖子编辑器时,帖子编辑屏幕不会更新,因此当您更新帖子时,您的位置
值将被旧值覆盖。
因此,我想知道是否可以使用隐藏的post元值,例如_location
?
希望这有帮助。
我能想到的一种方法是:
$actual_post_id=$post-
然后你可以做:
get_post_meta($actual_post_id)
问题内容: 我正在编写Go程序。从这个Go程序中,我想调用另一个文件中定义的Python函数并接收该函数的返回值,以便可以在Go程序的后续处理中使用它。我在将所有返回的数据恢复到我的Go程序时遇到了麻烦。以下是我认为可行的最低示例,但显然无效: gofile.go pythonfile.py 如果我打电话,我得到以下输出: 一些注意事项: 我在Python调用中使用该标志,因此可以直接调用该函数。
大家好,我是java多线程新手。有人能帮我吗: 我的服务: SpringBoot应用程序: 异步配置: 控制器: 当我点击这个来自邮递员的get请求时,它在响应中显示为空白。我知道我的调用是异步进行的,响应甚至在调用我的方法之前就回来了。有没有办法通过更改邮递员或Spring启动应用程序中的一些设置来查看此响应
我被迫在getJSON回调函数中使用该函数之外的数据。看一看: 这就是我尝试的,但是失败了,$值仍然设置为0,尽管在回调中它肯定设置为实际值。我知道为什么它会失败,因为AJAX请求是异步发送的。问题是,正确的方法,做回调里面的一切,是不可能的。如你所见,我需要在raty(插件)设置中检索JSON对象。我只会使用$. ajax()并将其设置为同步,但留档将其标记为1.8不建议使用。我宁愿不引入一个我
我有一个blob触发器Azure函数,每次将新文件添加到我的blob存储时都会调用该函数。我自动获取该文件的名称作为输入。除了名称之外,我还需要附加到给定文件的元数据。我一直在研究数据输入绑定,但我无法理解它。我需要做些什么才能将文件元数据作为输入?或者,甚至只是在我的函数中访问它?
问题内容: jQuery.unique允许您获取数组的唯一元素,但是文档说该函数主要供内部使用,并且仅对DOM元素起作用。另一个SO响应说该函数可以在数字上使用,但是此用例不一定是将来的证明,因为在文档中未明确说明。 鉴于此,是否存在“标准” jQuery函数,用于仅访问数组中的唯一值(特别是整数之类的基元)?(显然,我们可以使用函数构造一个循环,但是我们是jQuery的新手,并且想知道是否为此使