我一直在尝试添加一个字段进行快速编辑。它以某种方式工作:它会显示出来,如果在输入字段中输入一个值,该值就会保存到自定义字段中。但是,似乎找不到检索自定义字段值的方法。以下是我目前得到的信息:
add_action(\'quick_edit_custom_box\', \'ilc_quickedit_show\', 10, 2);
function ilc_quickedit_show( $col, $type ) {
if( $type != \'event\' ) return; ?>
<fieldset class="inline-edit-col-left">
<div class="inline-edit-col">
<div class="inline-edit-group">
<label for="eventdate" style="font: italic 12px Georgia, serif;">Event Date</label>
<span class="input-text-wrap">
<input type="text" name="eventdate" id="eventdate" size="10" value="">
</span>
</div>
</div>
</fieldset>
<?php
}
输入的值通过以下方式保存:
add_action(\'save_post\',\'ilc_quickedit_save\',10,3);
function ilc_quickedit_save($post_id, $post) {
if( $post->post_type != \'event\' ) return;
update_post_meta($post_id, \'Event Date\', $_POST[\'eventdate\']);
}
正如您肯定注意到的,这是针对自定义帖子类型“event”的。但是,我无法检索值并填充字段。好了,这涉及到内联编辑帖子。但是我找不到任何方法使用inlineEditPost来检索自定义字段值。甚至post id也可以在JavaScript范围内使用
add_action(\'admin_head-edit.php\', \'ilc_quickedit_get\');
function ilc_quickedit_get() { ?>
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery(\'a.editinline\').live(\'click\', function() {
var id = inlineEditPost.getId(this);
alert("Post id: " + id);
});
});
</script>
<?php
}
下载了自定义字段模板插件来剖析代码,发现它们正在重新定义inlineEditPost函数的部分,所以我考虑做同样的事情。然而,它们似乎是通过存储副本的选项数组来实现的。如果您已经解决了这个问题,是否可以共享用于检索每个自定义字段的值的内容?
最合适的回答,由SO网友:Elio 整理而成
好的,我知道了,下面是代码:
function ilc_quickedit_save($post_id, $post) {
if( $post->post_type != \'evento\' ) return;
if (isset($_POST[\'is_quickedit\']))
update_post_meta($post_id, \'eventdate\', $_POST[\'eventdate\']);
}
function ilc_quickedit_get() {
$html = \'<script type="text/javascript">\';
$html .= \'jQuery(document).ready(function() {\';
$html .= \'jQuery("a.editinline").live("click", function() {\';
$html .= \'var id = inlineEditPost.getId(this);\';
$html .= \'jQuery.post("\' . THEME_URI . \'/library/admin/admin.php",{ post_id: id, modo: "ajaxget" },\';
$html .= \'function(data){ jQuery("#eventdate").val(data); }\';
$html .= \');});});\';
$html .= \'</script>\';
echo $html;
}
以及admin开头的代码。php文件(与所有代码所在的文件相同):
if($_POST[\'modo\'] == \'ajaxget\'){
require_once(\'../../../../../wp-blog-header.php\');
$post_id = $_POST[\'post_id\'];
echo get_post_meta($post_id, \'eventdate\', true);
return;
}
到目前为止还不错,也许还有其他的方法。在批量编辑模式下仍需要处理保存。也可以帮忙:)希望这对某人有用。
SO网友:Zack
这是untested 密码看看它是否适合你。基本上,正如您将在下面看到的,我将全球化$post
, 检查您的CPT,然后检索自定义字段event
来自post的meta(返回单个值——由最后一个参数中的“true”设置)。
你唯一要做的就是引用$event
在jQuery中,如下所示:{$event}
将值输出到javascript中。它看起来是“静态的”,但实际上是动态的。
add_action(\'admin_head-edit.php\', \'ilc_quickedit_get\');
function ilc_quickedit_get()
{
global $post;
if ( $post->post_type != "event" )
return;
$event = get_post_meta( $post->ID, \'event\', true ); // gets a *single* option from the postmeta table
$html = <<<HTML
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery(\'a.editinline\').live(\'click\', function() {
// do something with {$event}
});
});
</script>
HTML;
echo $html;
}
P.S. 我将您的HTML代码分配给一个PHP变量,使其更易于阅读,并允许您快速引用
$event
在jQuery中。