Problème de syntaxe

Eléphant du PHP | 62 Messages

29 août 2019, 17:51

Bonjour,

J'ai trouvé ce script en php qui écrit des article automatiquement
/**
 * Handles functionality, related to posts.
 */
class QBPPC_Posts {

	/**
	 * Retrieve the available post types.
	 *
	 * @access public
	 * @static
	 *
	 * @return array $post_types Retrieve the available post types.
	 */
	public static function get_post_types() {
		$post_types = array();

		$all_post_types = get_post_types(array(), 'objects');
		foreach ($all_post_types as $post_type_name => $post_type_object) {
			$post_types[$post_type_name] = $post_type_object->labels->name;
		}

		return $post_types;
	}

	/**
	 * Using an array hierarchy, insert the entries hierarchy.
	 *
	 * @access public
	 * @static
	 *
	 * @param array $hierarchy Hierarchy of entries to insert.
	 * @param string $post_type Post type of the entries.
	 * @param string $post_status Post status of the entries.
	 * @param int $parent ID of the parent entry.
	 * @return int $total Number of entries that were inserted.
	 */
	public static function process_hierarchy($hierarchy = array(), $post_type = 'post', $post_status = 'publish', $parent = 0) {
		$total = 0;
		foreach ($hierarchy as $hierarchy_entry) {
			$id = self::insert($post_type, $hierarchy_entry['title'], $post_status, $parent);
			$total++;

			if ( !empty($hierarchy_entry['children']) ) {
				$total += self::process_hierarchy($hierarchy_entry['children'], $post_type, $post_status, $id);
			}
		}

		return $total;
	}

	/**
	 * Insert a post of certain post type with a certain title under a specific parent.
	 *
	 * @access public
	 * @static
	 *
	 * @param string $post_type Post type of the post.
	 * @param string $title Title of the post.
	 * @param string $post_status Post status of the post.
	 * @param int $parent ID of the parent post.
	 * @return int $id The ID of the inserted post.
	 */
	function Spin($txt)
{
   mt_srand(crc32($_SERVER['REQUEST_URI']));
   $pattern = '#\{([^{}]*)\}#msi';
   $test = preg_match_all($pattern, $txt, $out);
   if (!$test) return $txt;
   $atrouver = array();
   $aremplacer = array();
   foreach($out[0] as $id => $match)
   {
      $choisir = explode("|", $out[1][$id]);
      $atrouver[] = $match;
      $aremplacer[] = $choisir[mt_rand(0, count($choisir)-1)];
   }
   $reponse = str_replace($atrouver, $aremplacer, $txt);
   return Spin($reponse);
}
$string = '{Effectuez|Réalisez}';
	public static function insert($post_type, $title, $post_status = 'publish', $parent = 0) {
		$id = wp_insert_post(array(
			'post_type' => $post_type,
			'post_title' => $title,
			'post_content' => $string,
			'post_parent' => $parent,
			'post_status' => $post_status,
		));

		return $id;
	}

}
Mais ça m'indique une erreur sur la ligne 81
syntax error, unexpected '$string' (T_VARIABLE), expecting function (T_FUNCTION)
De plus je ne sais pas trop si la ligne 86 est correctement écrite pour que la ligne 81 soit correctement prise en compte
c'est à dire un contenu spinné par article créé

Merci pour votre aide
Max

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10467 Messages

30 août 2019, 11:36

Hello !

Pour l'erreur de syntaxe c'est parce que tu as une déclaration de variable ($string) en plein milieu de ta classe alors qu'il ne s'agit pas d'un attribut. Je n'ai pas regardé dans le détail, mais à vue de nez celle-ci devrait être dans la méthode insert et pas en dehors (après je n'ai pas regardé ce que cela doit faire, mais ça t'évitera les messages d'erreur et avertissement :))
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 62 Messages

30 août 2019, 22:09

Merci pour votre aide mais je ne sais pas comment écrire cela correctement

Merci beaucoup si vous pouvez m'aider

Eléphant du PHP | 62 Messages

30 août 2019, 22:14

En fait la ligne 86 permet décrire du contenu par defaut.

J'ai voulu que par défaut ça prenne ça prenne le contenu de $string

Mais je ne sais pas comment écrire la syntaxe

Merci beaucoup

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 8471 Messages

30 août 2019, 23:34

Bonjour gillescoste2006,

PHPfrance est un forum d'entraide entre développeurs.
Nous n'allons pas faire le code à ta place mais nous pouvons te mettre sur la piste si tu as un message d'erreur, et c'est précisément ce que Ryle a fait.
Du coup qu'as-tu essayé ?


Par ailleurs, je profite de ton retour sur le forum (depuis 2 ans, re-bienvenue ! ) pour rappeler que poser une question, obtenir des réponses et ensuite abandonner un sujet sans même laisser un message, ce n'est vraiment pas très respectueux des bénévoles qui sont sur ce forum.
Quelques exemples :
php-debutant/probleme-fermeture-t273272.html
php-debutant/comment-changer-lien-fonct ... 77586.html
post447082.html#p447082
...
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 62 Messages

31 août 2019, 21:53

Désolé je ne dérangerai plus personne n'ayant pas le niveau suffisant
Merci pour tout

Eléphant du PHP | 62 Messages

31 août 2019, 21:53

C'est moi que je considère n'avoir pas le niveau suffisant
Bien à vous