Beiträge von Mr.Crazyapple

    Hallo zusammen,

    ich habe da gerade ein Problem an dem ich mir die Zähne ausbeiße: Ich beschäftige mich mit den TAGs zu jeder Page und verarbeite diese in einer weiteren Tabelle. Dies funktioniert auch soweit. Nun muss ich auch Änderungen / Löschungen und das Hinzufügen bekannter Tags zu einer Page berücksichtigen.

    Wie bekomme ich aus der Adminseite die page_id heraus, nachdem gerade ein save_post event stattgefunden hat ?
    Oder wie bekomme ich die letzte ausgeführte Query heraus? denn in meinem Fall ändere ich ja nichts an den posts, sondern nur in der term_relationships Tabelle.

    Vielen Dank schon mal...

    Hallo zusammen,

    ich beschreibe mal kurz was ich machen will: nachdem ein post/page veröffentlicht (publish) wurde, möchte ich nachschauen, ob zu dem neuen Text Tags angelegt wurden.Wenn ja, erstelle die Beziehung neu, oder ergänze der bestehenden Beziehungen.
    Ich habe zwar einen Lösungsansatz, jedoch scheint er mir Durch-die-Brust-ins-Auge-Lösung zu sein:

    Jedes mal wenn gespeichert wird:

    PHP
    add_action( 'save_post', 'check_delta_db' );

    überprüfe ich, ob der Beitrag den status publish hat und ob sich in der relationship Tabelle von wp etwas getan hat:

    Leider ist die aktuelle Lösung so, dass ich bei einem update alle Beziehungen entferne und dann neu aufbaue. Das ist nicht schön. Wie kann ich denn geschickt update und insert Befehle einsetzten? Jeden Wert in einer Schleife vorher abklopfen scheint mir doch etwas zu übertrieben, vor allem da es viele Tags zu einer Seite geben kann.
    Vielen Dank mal wieder...

    Hallo zusammen,
    in der Beschreibung im Codex von Wordpress und in diesem sehr guten Tutorial von wptuts+ wird erwähnt, dass man mit der Funktion dbdelta() tabellen erstellen sowie updaten und columns hinzufügen kann.

    Mit meinem ALTER TABLE Query und der wp Funktion (query()) hat es wunderbar funktioniert, doch setze ich das ganze nach Anleitung um, kommt bei mir folgender Fehler:

    PHP
    WordPress database error: [Table 'wp_terms' already exists]
    CREATE TABLE wp_terms( 
    term_id bigint(20) NOT NULL AUTO_INCREMENT, 
    name  varchar(200) NOT NULL, 
    slug varchar(200) NOT NULL, 
    term_group bigint(10) NOT  NULL, 
    fix_link varchar (200) NOT NULL, 
    PRIMARY KEY (term_id) ) 
    ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1


    Wie man erkennt, möchte ich die Tabelle terms um die Spalte fix_link varchar erweitern. Bietet dbdelta in der Version 3.5.1 nicht mehr diese Funktionalität? Das Erzeugen von Tabellen funktioniert einwandfrei.

    Besten Dank mal wieder...

    So, ich habe die Antwort(en) gefunden: Der Befehl dbDelta ist an dieser Stelle falsch, denn
    Zitat:
    "If the table doesn't exist, it creates it.

    If the table exists but doesn't match, it's modified until it matches. This includes adding and updating columns, indexes, and other aspects."

    Mit $wpdb->query(...); funktioniert es einwandfrei.

    Jetzte habe ich noch eine Frage: vielen Dank für den Link, dieses prima Tutorial hatte ich noch nicht gegooglet. Welchen Vorteil oder Nutzten hat das meine custom tables zu registrieren?

    PHP
    $wpdb->wp_category ="{$wpdb->prefix}category";


    und wenn ich die action:

    PHP
    add_action( 'init', 'hpe_register_custom_tables', 1 );

    benutzte wird ja doch bei jedem refresh der Seite die function ausgeführt, obwohl es doch heißt: "Typically used by plugins to initialize. The current user is already authenticated by this time."
    Kann mich bitte jemand diesbezüglich aufklären? (den anderen Kram mit der Aufklärung habe ich verstanden:razz:)

    Hallo zusammen,

    Zur Initialisierung meiner Erweiterung muss ich einmalig einige Datenbankoperationen durchführen:
    In die Tabelle zB. wp_terms möchte ich die Spalte "fix_link" hinzufügen:
    Das SQL statement funktioniert (Ausführung in phpmyadmin) nur die Ausführung in WP scheitert

    PHP
    $sql_alter_table_terms ="ALTER TABLE $table__terms ADD `fix_link` varchar(200) NULL";
    dbDelta($sql_alter_table_terms);


    Was mache ich falsch?

    Zweite Frage:
    Um die Durchführung nur einmal laufen zu lassen, checke ich, ob diese bestimmte Spalte existiert:

    PHP
    $check_table_structure ="SELECT COLUMN_NAME
                                FROM INFORMATION_SCHEMA.COLUMNS
                                WHERE column_name LIKE '%fix_link%' ";
            
    if(!$wpdb->get_var($check_table_structure) == 'fix_link')
        {hpe_create_tables();
        }


    Gibt es da eine elegantere Lösung?
    Vielen Dank für Eure Unterstützung.

    crazyapple

    Ist zwar schon eine weile her, aber vielleicht hilft es ja jemand anderen:
    Die Meldung "Undefined index" taucht immer dann auf, wenn eine genutzte Variable leer ist und angezeigt werden soll.
    Hier kann man sich leicht mit PHP abhilfe schaffen in dem man die Variable überprüft:

    PHP
    isset($_GET["XYZ"]);

    als ganze Bedingung in PHP könnte das dann so aussehen:

    PHP
    if (isset($_GET["A"])||isset($_POST["B"])){
    <CODE>
    }else{
    <CODE 2>
    }


    Ich überprüfe hier, ob die Variable die über die GET-Methode oder über die POST-Methode mit PHP gesetzt ist. Ich würde so weit wie möglich die POST Mothode empfehlen (ist nicht immer möglich - meistens schon :-))

    im Debugmode von WP stellt man fest, das da einige Variablen in den vielen PlugIns nicht sauber behandelt werden.

    Hallo kartal1984,

    was Du suchst geht meines erachtens in die Richtung "facetted search". Damit beschäftige ich mich auch gerade, daher kommt mir die Fragestellung bekannt vor. Es existieren ein paar Plugins mit der die eine facetted search "faken" oder umsetzten kannst.
    Bedenke: eine detailierte Suche setzt detailierte Angaben und Attribute usw. voraus. Aus dem Nichts kann keine Suche ein Ergebnis generieren.

    Gruß

    Hallo Leander,

    ich habe einen etwas anderen Ansatz gewählt als ich meine Fingerübung gemacht habe:

    PHP
    sql = "SELECT `ID`,`post_modified_gmt`,`post_title`,`post_status`,`guid`, `post_type`            FROM ".$table__posts."             
    WHERE post_status ='publish' and (post_type ='post' OR post_type ='page') 
    ORDER BY `post_modified` DESC LIMIT 0, 4";
    PHP
    $get_articles = $wpdb->get_results($sql, ARRAY_A);


    Mit dem SQL Befehl LIMIT 0.4 kannst Du den Offset direkt im Query angeben. Dieser bedeutet: von Pos Null (also das neuste, da DESC sortiert) und davon 4 weiter (incl. der Null).

    Hallo formateins,

    danke für den Tipp, da wollte ich hin. Man kann in WP das Formular genauso aufbauen, wie man es aus HTML gewohnt ist. Die Daten werden mit der post methode übertragen und dann -tatata- folgendermaßen gespeichert:

    PHP
    $wpdb->update($table__terms_relation,
                array(    'term_prio'=>$_POST['current_prio'],
                        'category_id'=>$_POST['current_category'],
                        'term_id'=> $_POST['current_tag']
                ),
                array(    'id' => $_POST['relation_id'])
                );

    Kaum macht mans richtig, funktioniert es auch...
    Dank

    Hallo zusammen,

    ich komme eigentlich aus der ECM-Ecke und programmiere mit php. Nun wollte ich meine Funktionalität als plugin umsetzten, stehe aber ehrlich gesagt auf dem Schauch. :confused:
    Folgendes: ich möchte Daten in zwei individuelle Tabellen speichern, die Inhalte werden dynamisch vorher aus der DB geholt. Das funktioniert auch soweit ganz gut, jedoch das speichern der editierten Daten ist nicht...


    speichern wollte ich die Daten mit der update_option aber in der Bedingung kommt nichts an

    PHP
    if ('insert' == $HTTP_POST_VARS['action']) {
        echo "<script type=\"text/javascript\" >alert(\"hello world\");</script>\n";
        update_option( $current_tag['term_id'], esc_html( $HTTP_POST_VARS['term_id'] ) );
        }

    Wie gehe ich dann da richtig vor?
    Vielen Dank für Eure Unterstützung.

    Mr. Crazyapple

    Hallo Community,

    sorry für meine newbi Frage, jedoch konnte ich keine Antwort auf mein Problem hier im Forum finden, daher hier mein erster post:

    auf einer meiner Seiten
    http://www.crazyapple.com/content-manage…exam-questions/
    habe ich einen passwortschutz. Allerdings kann ich mich nicht anmelden. Auch auf anderen Rechnern hier im Büro funktioniert es nicht.
    ich habe alle plug-ins deaktiviert und das Theme Rumput Hijau 1.1.0.

    Muss ich noch irgendetwas zusätzlich machen, damit es richtig funktioniert?

    vielen Dank für die Unterstützung