Support » Allgemeine Fragen » Custom Fields Fehler

  • Gelöst barney_90

    (@barney_90)


    Hallo zusammen,

    ich brauche eure Hilfe.
    Ich bin gerade dabei mich mit der Kombination zwischen Bootstrap und WordPress auseinanderzusetzen. Mein Hauptaugenmerk liegt dabei auf dem responsiven Layout.

    Mein Ziel ist es jedem neuen Beitrag mittels der WordPress Custom Fields Funktionalität die entsprechende Bootstrap Klasse für die Spaltengröße mitzugeben. Dies klappt auch soweit allerdings wird mir nun folgender Fehler direkt im Frontend ausgegeben:

    Warning: Missing argument 1 for shiftnews_post_class(), called in /Applications/XAMPP/xamppfiles/htdocs/wordpress/wp-content/themes/12345_funktionsfähig/content.php on line 28 and defined in /Applications/XAMPP/xamppfiles/htdocs/wordpress/wp-content/themes/12345_funktionsfähig/functions.php on line 191

    Aus technischer Sicht habe ich es folgendermaßen umgesetzt:

    functions.php

    function shiftnews_post_class($classes) {
       	 	global $post;
       		$sn_post_class_array = array (
    			get_post_meta($post->ID, 'post-class', true)
       		);
       		$classes[] = implode(" ", $sn_post_class_array);
       		return $classes;
    	  }

    content.php

    <article <?php post_class(shiftnews_post_class()); ?>>

    Lässt man sich den Quellcode anzeigen, sieht man dass das Custom Field richtig ausgelesen wird:
    class=“post-35 post type-post status-publish format-standard hentry category-allgemein .col-md-6„>

    Anmerkung:
    • Da ich grundsätzlich das Custom Field fülle, ist kein Default-Wert gesetzt.
    • Als Orientierung diente folgende Webseite
    http://www.smashingmagazine.com/2010/04/29/extend-wordpress-with-custom-fields/

    Ich hoffe ihr könnt mir weiterhelfen.
    Vorab vielen Dank!

    VG

Ansicht von 8 Antworten - 1 bis 8 (von insgesamt 8)
  • Lässt man sich den Quellcode anzeigen, sieht man dass das Custom Field richtig ausgelesen wird:
    class=“post-35 post type-post status-publish format-standard hentry category-allgemein .col-md-6″>

    Ein richtiges Ergebnis hättest du, wenn kein Punkt vor dem col-md-6 stehen würde :). Fügst du denn die Klassen manuell ein? Vernutlich ja:

    • Da ich grundsätzlich das Custom Field fülle, ist kein Default-Wert gesetzt.

    Machst du das mit einem Punkt davor?

    Thread-Ersteller barney_90

    (@barney_90)

    Hallo Angelika,

    vielen Dank für deine Antwort.

    Du hattest recht ich hatte die Klasse mit einem Punkt angegeben gehabt. Habe dies nun korrigiert allerdings bekomme ich immer noch den Fehler:

    Warning: Missing argument 1 for shiftnews_post_class(), called in /Applications/XAMPP/xamppfiles/htdocs/wordpress/wp-content/themes/Homepage/content.php on line 26 and defined in /Applications/XAMPP/xamppfiles/htdocs/wordpress/wp-content/themes/Homepage/functions.php on line 221

    Hast du noch eine Idee?

    Hallo barney_90,

    schade :). Was steht denn in den Zeilen 26 und 221?

    Hm, evtl. musst du einen default-Wert für $classes angeben? Ich beziehe mich darauf:

    https://wordpress.org/support/topic/function-returning-warning-missing-argument-1?replies=3

    Dementsprechend vllt.

    function shiftnews_post_class($classes='') {

    ?

    Thread-Ersteller barney_90

    (@barney_90)

    Hallo Angelika,

    hier sind die entscheidenden Code-Ausschnitte

    content.php Zeile 26

    <article <?php post_class(shiftnews_post_class()); ?>>

    functions.php (ab Zeile 219)

    if ( ! function_exists( 'shiftnews_post_class' ) ) {
    
    	function shiftnews_post_class($classes) {
    
    		global $post;
       		$sn_post_class_array = array (
    			get_post_meta($post->ID, 'post-class', true)
    		);
    		$classes[] = implode(" ", $sn_post_class_array);
       		return $classes;
    
    	}
    
    }

    Hilft das weiter?

    Hallo barney_90,

    ich hatte meinen letzten Post noch ergänzt -> default-Wert.
    Hat das geholfen?

    Thread-Ersteller barney_90

    (@barney_90)

    Hallo Angelika,

    ich habe nun die functions.php folgendermaßen angepasst:

    if ( ! function_exists( 'shiftnews_post_class' ) ) {
    
    	function shiftnews_post_class($classes=' ') {
    
    		global $post;
       		$sn_post_class_array = array (
    
    			get_post_meta($post->ID, 'post-class', true)
    		);	
    
    		$classes[] = implode(" ", $sn_post_class_array);
    
       		return $classes;
    
    	}
    
    }

    Nun bekomme ich einen neuen Fehler 🙂

    Fatal error: [] operator not supported for strings in /Applications/XAMPP/xamppfiles/htdocs/wordpress/wp-content/themes/Homepage*/functions.php on line 237

    Hast du hier vielleicht auch eine Idee?

    Leider nein, aber ich denke, das Leerzeichen zwischen den “ muss weg. Falls du hier keine hilfreiche Antwort mehr erhalten solltest, in der WordPress Google+ Community tummeln sich mehrere exzellente Programmierer (hier natürlich auch [ich zähle leider nicht dazu], aber in der Google+ Community eben wesentlich mehr), dort könntest du auch einmal fragen.

    https://plus.google.com/communities/114506083451342998708

    Viel Erfolg!

    Thread-Ersteller barney_90

    (@barney_90)

    Hallo Angelika,

    vielen lieben Dank! Das war des Rätsels Lösung 🙂

    Hier nochmals den kompletten Code, falls es noch weitere Leute mit dem Problem gibt:

    content.php

    <article <?php post_class(shiftnews_post_class()); ?>>

    functions.php

    function shiftnews_post_class($classes='') {
    
    		global $post;
       		$sn_post_class_array = array (
    
    			get_the_author_meta('display_name'),
    			get_post_meta($post->ID, 'post-class', true)
    		);	
    
    		$classes[] = implode(" ", $sn_post_class_array);
    
       		return $classes;
    
    	}

    Nochmals vielen Dank!

Ansicht von 8 Antworten - 1 bis 8 (von insgesamt 8)
  • Das Thema „Custom Fields Fehler“ ist für neue Antworten geschlossen.