it-swarm.com.de

benutzerdefinierte Felder beim Klicken laden

Ich habe zu viele Daten in benutzerdefinierten Feldern gespeichert, die ich beim Laden der Seite nicht abrufen möchte. Stattdessen würde ich dem Benutzer die Möglichkeit geben, die benutzerdefinierten Feldwerte beim Klicken zu laden, möglicherweise mit Ajax.

Gibt es eine Möglichkeit, dies zu tun?

Ich habe noch keinen Code, nur die wp-Schleife. Ich denke darüber nach, die benutzerdefinierten Feldabfragen in einer separaten PHP-Datei abzulegen, aber ich habe keine Ahnung, wie die Verbindung zwischen single.php und der separaten Datei hergestellt werden soll. (Laden der Datei mit Ajax ist kein Problem.)

UPDATE: Ich brauche kein Ajax, es verwirrt mich nur so weit. Ich möchte nur die benutzerdefinierten Felder anzeigen, die dem Beitrag auf einer anderen Seitenvorlage zugeordnet sind. Ich stelle es mir so vor, als wären die benutzerdefinierten Felder "Kinder" eines bestimmten Posts, und wenn Sie auf einen Link klicken, wird eine Seite geladen, auf der sich nur die benutzerdefinierten Felder befinden.

Vielen Dank.

1
elbatron

Ich weiß noch nicht, ob Sie eine Antwort auf diese Frage gefunden haben, seit es von 2011 ist, aber ich habe eine Idee, wie ich die Daten abrufen kann.

Was wäre, wenn Sie eine SEHR einfache PHP-Datei erstellen würden, die die Beitrags-ID als Get-Variable verwendet und die benutzerdefinierten Felder des Beitrags anzeigt?

Es würde ungefähr so ​​aussehen:

<?php
    require_once($_SERVER['DOCUMENT_ROOT'] . '/wp-load.php');
    $post_ID = $_GET['id'];

    $custom = get_post_custom($post_ID);

    foreach ($custom as $key => $value) {
        if (($key != '_edit_lock' && $key != '_edit_last'))
            echo '<tr><td>' . $key . '</td><td>' . $value[0] . '</td></tr>';
    }
?>

Dadurch wird eine Tabelle mit Namen (Name des benutzerdefinierten Felds) und Wert (Wert des benutzerdefinierten Felds) erstellt. Wenn Sie keine Tabelle verwenden möchten, können Sie die internen Bits natürlich beliebig formatieren. Ich versuche nur, Sie auf den richtigen Weg zu bringen. Beachten Sie außerdem, dass dort eine if -Anweisung enthalten ist. Ich bin sicher, dass Sie den Bearbeitungssperrwert oder den letzten Bearbeitungswert nicht ausgeben möchten.

Gehen Sie nun wie folgt vor, um diese Informationen von der Seite abzurufen:

Zunächst müssen Sie eine Schaltfläche erstellen, die die Informationen anzeigt.

<a href="<?php echo bloginfo('template_directory'); ?>/custom-field-provider.php?id=<?php echo $post->ID; ?>" class="show-more">See More Information</a>

Und eine Box, um zu zeigen, was Sie AJAX in:

<div id="more-information-box" style="display: none;"></div>

Du wirst hier ein paar coole jQuery-Sachen erfinden wollen.

$(document).ready(function () {
    $('.show-all').on('click', function (e) {
        // Since we're already passing the data through the link, we don't need to do anything else. Just pull the url from the link.
        var url = $(this).attr('href');

        // A simple jQuery.get function to get the data from the php script we wrote earlier
        $.get(url, function (data) {
            $('#more-information-box').hide().empty().append(data).fadeIn(500);
        });

        // And stop the link from actually going to the page.
        e.preventDefault();
        return false;  // Better safe than sorry, right?
    });
});

Und das sollte es für dich tun.

Ich weiß, dass es ein bisschen langwierig war, aber ich wollte wirklich alle Grundlagen abdecken. Ich hoffe das hat dir geholfen.

2
Alex Lane