Medien & Phantastik > Multimedia - Software & Betriebsysteme

PHP-Hilfe?

<< < (2/7) > >>

schneeland:
Ist 15 Jahre her, dass ich das letzte Mal PHP verwendet habe, aber hier mal ein Versuch:


--- Code: ---add_filter( 'share_on_mastodon_enabled', '__return_true' );

add_filter( 'share_on_mastodon_status', function( $status, $post ) {
  $status_text = wp_strip_all_tags( $post->post_content );
  $status_link = get_permalink( $post );
 
  if (strlen($status_text) + strlen($status_link) > 498) {
    $status_text = substr($status_text,0,495 - strlen($status_link)) . "...";
  }

  $status = $status_text . "\n\n" . $status_link;
  return $status;
}, 10, 2 );


--- Ende Code ---

Blechpirat:
Danke! Ich werde das mal probieren!

aikar:
Diese Filter-Struktur ist ein Feature von Wordpress und eine der üblichen Weisen, wie man in Wordpress in den Programmablauf eingreift (Hat also erstmal nichts mit Basis-PHP und auch nichts mit Mastodon zu tun).


--- Zitat von: schneeland am 15.02.2023 | 20:06 ---Allerdings ist mir anhand des gezeigten Codes nicht ganz klar, wo eigentlich der Aufruf der Mastodon-API passiert, insofern kann ich jetzt nicht sicher sagen, wo genau das wäre.
--- Ende Zitat ---
Irgendwo im Mastodo-Plugin gibt es einen Aufruf $enabled = apply_filters('share_on_mastodon_enabled, $enabled) bzw. $status = apply_filters( 'share_on_mastodon_status', $status, $post).
Die Variablen-Namen könnten auch anders heißen, aber diese sind recht wahrscheinlich. Das heißt, dass jeder Aufruf von add_filter abgehandelt wird, bevor die Variable weiter verarbeitet wird.
Es können sich also beliebig viele Filter hier einklinken und den Inhalt verändern, auch nacheinander. Die Reihenfolge bestimmt sich aus dem zweiten Parameter nach der Funktion, in diesem Fall also 10. Der 2er zeigt an, wie viele Attribute übergeben werden (2, also $status und $post), wobei das erste Attribut immer das ist, das verändert wird und weitere Zusatzinformation darstellen.


$post->post_content ist auch eine Sache von Wordpress und ist der zentrale Inhalt einer Seite bzw. eines Beitrags
wp_strip_all_tags schmeißt alle HTML-Styles und Scripts raus und macht aus dem Inhalt normalen Text. Also ja, $status ist der Inhalt, nachdem er bereinigt wurde.
Die Variablennamen wählst außerdem du, d.h. wenn du dich damit wohler fühlst, kannst du statt $status auch überall $text o.Ä. schreiben, es muss nur im Funktionsaufruf und im Verarbeitungscode der selbe sein.

$status .= "\n\n" . get_permalink( $post ); fügt dann noch Link zum Beitrag hinten an den den Text an. get_permalink holt den Link zu $post und . ist die normale String-Zusammenfügung in PHP.

Schneelands Code-Anpassung sollte korrekt sein. Ich nehme an die Anpassung auf 498 erfolgt zur Einbeziehung der beiden Zeilenumbrüche (\n)?


Blechpirat:
Vielen Dank!

Mir ist dabei aufgefallen, dass vor der Änderung ja der Titel übergeben wurde - jetzt nicht mehr. Kann ich das anders machen?

schneeland:

--- Zitat von: aikar am 16.02.2023 | 06:56 ---Ich nehme an die Anpassung auf 498 erfolgt zur Einbeziehung der beiden Zeilenumbrüche (\n)?

--- Ende Zitat ---

Ja genau. Ich bin mir nicht sicher, wie hart Mastodon sein Zeichenlimit durchsetzt - insofern sollte das sicherstellen, dass nicht von der URL was abgeschnitten wird.
(ansonsten vielen Dank für die Filter-Erläuterung - den Wordpress-Code habe ich mir nie genau angeschaut)


--- Zitat von: Blechpirat am 16.02.2023 | 08:49 ---Mir ist dabei aufgefallen, dass vor der Änderung ja der Titel übergeben wurde - jetzt nicht mehr. Kann ich das anders machen?

--- Ende Zitat ---

Möglicherweise passiert das irgendwo anders im Code. Das ist leider schwer zu sagen, ohne das eigentliche Plugin zu kennen.

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln