所以我有一个带有复选框的元框,我可以将其用作开关来打开某些内容。 现在它的回声只是“OK!”并且“不工作......”取决于是否选中了复选框。 我的目标是回应来自不同价值的不同类型的信息。
例如,其中一间公寓内有Wi-Fi,因此我需要在管理面板中查看“Wi-Fi”,以便在页面上显示wi-fi图标。
实施例: apartments for rent website
他们获得了每个主要功能here
的图标这是functions.php中的代码:
$fieldsCheckbox = array(
'first' => 'First label',
'second' => 'Second label',
'third' => 'Third label'
);
add_action("admin_init", "checkbox_init");
function checkbox_init(){
add_meta_box("checkbox", "Checkbox", "checkbox", "post", "normal", "high");
}
function checkbox(){
global $post, $fieldsCheckbox;
$content = '';
foreach( $fieldsCheckbox as $fieldName => $fieldLabel) {
$content .= '<label>' . $fieldLabel;
$checked = get_post_meta($post->ID, $fieldName, true) ? 'checked="checked"' : '';
$content .= '<input type="checkbox" name="' . $fieldName . '" value=1 '. $checked .' />';
$content .= '</label><br />';
}
echo $content;
}
// Save Meta
add_action('save_post', 'save_details');
function save_details(){
global $post, $fieldsCheckbox;
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
return $post->ID;
}
foreach( $fieldsCheckbox as $fieldName => $fieldLabel) {
update_post_meta($post->ID, $fieldName, $_POST[$fieldName]);
}
}
function custom_content_all($id) {
global $fieldsCheckbox;
foreach( $fieldsCheckbox as $fieldName => $fieldLabel ) {
$fieldValue = get_post_meta($id, $fieldName, true);
if( !empty($fieldValue) ) {
echo "OK!";
}
else{
echo 'Not working...';
}
}
}
function custom_content_by_name($id, $name) {
$field_id = get_post_meta($id, $name, true);
if( !empty($field_id) ) {
echo "OK!";
}
else{
echo 'Not working...';
}
}
我用它在模板中调用它。
<?php custom_content_all(get_the_ID()); ?>
一切正常,但不是我想要的方式,我想知道如何更改此代码以回显页面上的不同信息。
例如,我必须检查管理面板中的“第一个标签”以回显页面上的第一张图片。然后我必须检查管理面板中的“第二个标签”以回显第二张图片......依此类推。但是现在所有这些价值观只是“好吧!”和“不工作......”。
答案 0 :(得分:1)
您可以在函数custom_content_all
中构建一个包含所有已设置字段的数组。然后归还它。最后检查字段是否使用in_array
将其设置为该数组。
该功能如下:
function custom_content_all( $id )
{
global $fieldsCheckbox;
$the_fields = array();
foreach( $fieldsCheckbox as $fieldName => $fieldLabel )
{
$fieldValue = get_post_meta( $id, $fieldName, true );
if( $fieldValue )
$the_fields[] = $fieldName;
}
return $the_fields;
}
你用它就像:
<?php
$my_fields = custom_content_all( get_the_ID() );
if( in_array( 'first', $my_fields ) )
echo "First";
if( in_array( 'second', $my_fields ) )
echo "Second";
if( in_array( 'third', $my_fields ) )
echo "Third";
?>