1

そのため、特定のコンテンツをオンにするスイッチとして使用できるチェックボックス付きのメタ ボックスがあります。今は「OK!」だけのエコーです。チェックボックスがチェックされているかどうかに応じて、「動作していません...」。私の目標は、さまざまな値からさまざまな種類の情報をエコーすることです。

たとえば、アパートの 1 つに Wi-Fi がある場合、ページに Wi-Fi アイコンを表示するには、管理パネルで「Wi-Fi」をチェックする必要があります。

例: 賃貸マンションのウェブサイト

ここにはすべての主要機能のアイコンがあります

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()); ?>

すべてがうまく機能していますが、私が望む方法ではなく、ページにさまざまな情報を表示するためにこのコードを変更する方法を知りたいです。

たとえば、ページの最初の画像をエコーするには、管理パネルで「最初のラベル」をチェックする必要があります。次に、管理パネルで「2番目のラベル」をチェックして、2番目の画像をエコーする必要があります...など。しかし今のところ、このすべての値は「OK!」のみをエコーし​​ます。と「機能していません...」。

4

1 に答える 1