Benutzerdefinierter Beitragstyp mit Eingabefeldern zum Trennen der Tabelle in der database.

Im Moment verwende ich einen benutzerdefinierten Post-Typ namens “locations”. Ich möchte in der Lage sein, Eingabefelder in den benutzerdefinierten Post-Typ zu setzen, der die Informationen wie (Adresse, Typ, Telefonnummer, etc ..) in speichert eine separate Tabelle mit dem Namen “markers” Wenn also ein neuer Eintrag erstellt wird, wird ein neuer Eintrag in den Tabellenmarkierungen aus den folgenden Eingabefeldern erstellt / aktualisierbar oder entfernbar, wenn der Beitrag entweder geändert oder gelöscht wird.

Ich bin mir nicht sicher, wo ich anfangen soll, diese miteinander zu verbinden, um so zu arbeiten, ich weiß, wie man eine insert.php-Datei erstellt, um neue Orte hinzuzufügen und eine database zu erstellen, aber nicht mit WordPress auf diese Weise. Ich entschuldige mich, aber ich bin ziemlich neu in SQL und PHP.

Solutions Collecting From Web of "Benutzerdefinierter Beitragstyp mit Eingabefeldern zum Trennen der Tabelle in der database."

Sie sollten vermeiden, mehr Tabellen zu erstellen. Mach es einfach, wenn du wirklich einen guten Grund dafür hast. Beachten Sie, dass wp_postmeta praktisch jede Art von Daten speichern kann, und die Verwendung der function get_post_meta kann in den meisten Fällen den gesamten Job erledigen.

Wenn Sie jedoch eine andere Tabelle verwenden und diese allgemein verwenden save_post suchen Sie nach den save_post und delete_post .

Benutzerdefinierte Felder replizieren

Da Sie benutzerdefinierte Felder erwähnen, wenn Sie die Informationen von wp_postmeta in eine andere Tabelle replizieren möchten, würden Sie wp_postmeta tun:

 add_action('save_post', 'save_markers'); function save_markers($post_id) { global $wpdb; $marker = get_post_meta($post_id, 'marker_custom_field', true); // go and put $marker on the markers table $wpdb->query("INSERT INTO markers ..."); } 

Das obige gilt auch für den delete_post Hook.

Metaboxen

Wenn Sie die Informationen jedoch direkt auf der anderen Tabelle speichern möchten, sind Metaboxen möglicherweise besser für Sie geeignet .

 add_action( 'add_meta_boxes', 'marker_add_meta_box'); function marker_add_meta_box() { add_meta_box( 'marker_metabox', __('Marker Title', 'your-plugin-textdomain'), 'marker_metabox', 'post' ); } function marker_metabox ($post) { wp_nonce_field(plugin_basename( __FILE__ ), 'your-plugin-texdomain'); $marker = get_marker_from_another_table(); ?>   < ?php } 

Und dann, um es zu speichern:

 add_action('save_post', 'save_markers'); function save_markers ($post_id) { if (defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE) return; if ('locations' != $_POST['post_type']) return; if (!current_user_can( 'edit_post', $post_id )) return; /* Here you have $marker and $post_id, then you can just do the reference in your markers table. */ global $wpdb; $marker = $_POST['marker_field']; $wpdb->query("INSERT INTO markers VALUES ..."); } 

Und natürlich können Sie mit dem obigen Code weitere Überprüfungen durchführen.

Sie haben 3 Möglichkeiten.

  1. Verwenden Sie einfach die nativen benutzerdefinierten Felder in WordPress, es sei denn, Sie haben einen guten Grund, dies nicht zu tun, sie würden Ihnen gut passen und perfekt mit benutzerdefinierten Post-Typen funktionieren.

    http://codex.wordpress.org/Custom_Fields

  2. Erstellen Sie Ihre eigenen benutzerdefinierten Felder und binden Sie sie mithilfe von wpdb in Ihren CPT ein. Sie brauchen einen guten Grund, dies zu tun, anstatt Option 1 zu verwenden.

    http://codex.wordpress.org/Class_Reference/wpdb

  3. Schauen Sie sich das Pods Framework an , es ist im Grunde CPT mit mehr Kontrolle über die DB.

 INSERT INTO `wp_postmeta` (post_id, meta_key, meta_value) VALUES (*ID*, 'translation', *VALUE*; 

Dabei ist ID die ID des Posts, an den Sie den Wert anhängen, und VALUE ist der Metawert des Felds “Übersetzung”.

Wie gesagt, machbar … aber Sie brauchen eine separate INSERT-Abfrage für jeden Beitrag. Sie könnten all diese Dateien in einer einzigen Textdatei ablegen und den gesamten Satz in einem Durchgang ausführen, wenn Sie möchten, andernfalls könnte es so lange dauern, als würde der Schlüssel einfach über die WordPress-Benutzeroberfläche hinzugefügt werden.